diff options
Diffstat (limited to 'src/mongo/db/pipeline/document_source_current_op_test.cpp')
| -rw-r--r-- | src/mongo/db/pipeline/document_source_current_op_test.cpp | 55 |
1 files changed, 39 insertions, 16 deletions
diff --git a/src/mongo/db/pipeline/document_source_current_op_test.cpp b/src/mongo/db/pipeline/document_source_current_op_test.cpp index 260bfbf0829..440205960f2 100644 --- a/src/mongo/db/pipeline/document_source_current_op_test.cpp +++ b/src/mongo/db/pipeline/document_source_current_op_test.cpp @@ -154,10 +154,10 @@ TEST_F(DocumentSourceCurrentOpTest, ShouldFailToParseIfUnrecognisedParameterSpec ErrorCodes::FailedToParse); } -TEST_F(DocumentSourceCurrentOpTest, ShouldParseAndSerializeNonDefaultOptionalArguments) { +TEST_F(DocumentSourceCurrentOpTest, ShouldParseAndSerializeAllExplicitlySpecifiedArguments) { const auto specObj = fromjson( - "{$currentOp:{idleConnections:true, idleSessions:false, allUsers:true, localOps:true, " - "truncateOps:true}}"); + "{$currentOp:{idleConnections:false, idleSessions:false, allUsers:true, localOps:true, " + "truncateOps:false}}"); const auto parsed = DocumentSourceCurrentOp::createFromBson(specObj.firstElement(), getExpCtx()); @@ -165,19 +165,42 @@ TEST_F(DocumentSourceCurrentOpTest, ShouldParseAndSerializeNonDefaultOptionalArg const auto currentOp = static_cast<DocumentSourceCurrentOp*>(parsed.get()); const auto expectedOutput = Document{{"$currentOp", - Document{{"idleConnections", true}, + Document{{"idleConnections", false}, {"idleSessions", false}, {"allUsers", true}, {"localOps", true}, - {"truncateOps", true}}}}; + {"truncateOps", false}}}}; ASSERT_DOCUMENT_EQ(currentOp->serialize().getDocument(), expectedOutput); } -TEST_F(DocumentSourceCurrentOpTest, ShouldParseButNotSerializeDefaultOptionalArguments) { - const auto specObj = fromjson( - "{$currentOp:{idleConnections:false, idleSessions:true, allUsers:false, localOps:false, " - "truncateOps:false}}"); +TEST_F(DocumentSourceCurrentOpTest, + ShouldParseAndSerializeAllExplicitlySpecifiedArgumentsWithRedaction) { + auto spec = fromjson( + R"({ + $currentOp: { + idleConnections: true, + allUsers: false, + idleSessions: false, + localOps: true + } + })"); + auto docSource = DocumentSourceCurrentOp::createFromBson(spec.firstElement(), getExpCtx()); + + ASSERT_BSONOBJ_EQ_AUTO( // NOLINT + R"({ + "$currentOp": { + "idleConnections": "?bool", + "idleSessions": "?bool", + "allUsers": "?bool", + "localOps": "?bool" + } + })", + redact(*docSource)); +} + +TEST_F(DocumentSourceCurrentOpTest, ShouldNotSerializeOmittedOptionalArguments) { + const auto specObj = fromjson("{$currentOp:{}}"); const auto parsed = DocumentSourceCurrentOp::createFromBson(specObj.firstElement(), getExpCtx()); @@ -189,17 +212,17 @@ TEST_F(DocumentSourceCurrentOpTest, ShouldParseButNotSerializeDefaultOptionalArg ASSERT_DOCUMENT_EQ(currentOp->serialize().getDocument(), expectedOutput); } -TEST_F(DocumentSourceCurrentOpTest, ShouldNotSerializeOmittedOptionalArguments) { +TEST_F(DocumentSourceCurrentOpTest, ShouldNotSerializeOmittedOptionalArgumentsWithRedaction) { const auto specObj = fromjson("{$currentOp:{}}"); - const auto parsed = + const auto docSource = DocumentSourceCurrentOp::createFromBson(specObj.firstElement(), getExpCtx()); - const auto currentOp = static_cast<DocumentSourceCurrentOp*>(parsed.get()); - - const auto expectedOutput = Document{{"$currentOp", Document{}}}; - - ASSERT_DOCUMENT_EQ(currentOp->serialize().getDocument(), expectedOutput); + ASSERT_BSONOBJ_EQ_AUTO( // NOLINT + R"({ + "$currentOp": {} + })", + redact(*docSource)); } TEST_F(DocumentSourceCurrentOpTest, ShouldReturnEOFImmediatelyIfNoCurrentOps) { |
