diff options
Diffstat (limited to 'src/mongo/db/pipeline/parsed_exclusion_projection_test.cpp')
-rw-r--r-- | src/mongo/db/pipeline/parsed_exclusion_projection_test.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/mongo/db/pipeline/parsed_exclusion_projection_test.cpp b/src/mongo/db/pipeline/parsed_exclusion_projection_test.cpp index cc7271be016..485691472a5 100644 --- a/src/mongo/db/pipeline/parsed_exclusion_projection_test.cpp +++ b/src/mongo/db/pipeline/parsed_exclusion_projection_test.cpp @@ -84,14 +84,6 @@ ParsedExclusionProjection makeExclusionProjectionWithNoArrayRecursion() { // DEATH_TEST(ExclusionProjectionExecutionTest, - ShouldRejectComputedField, - "Invariant failure fieldName[0] != '$'") { - // Top-level expression. - auto exclusion = makeExclusionProjectionWithDefaultPolicies(); - exclusion.parse(BSON("a" << false << "b" << BSON("$literal" << 1))); -} - -DEATH_TEST(ExclusionProjectionExecutionTest, ShouldFailWhenGivenIncludedNonIdField, "Invariant failure !elem.trueValue() || elem.fieldNameStringData() == \"_id\"_sd") { auto exclusion = makeExclusionProjectionWithDefaultPolicies(); @@ -417,6 +409,18 @@ TEST(ExclusionProjectionExecutionTest, ShouldAllowExclusionOfIdSubfieldWithDefau ASSERT_DOCUMENT_EQ(result, expectedResult); } +TEST(ExclusionProjectionExecutionTest, ShouldAllowLimitedDollarPrefixedFields) { + auto exclusion = makeExclusionProjectionWithDefaultIdExclusion(); + exclusion.parse( + BSON("$id" << false << "$db" << false << "$ref" << false << "$sortKey" << false)); + + auto result = exclusion.applyProjection( + Document{{"$id", 5}, {"$db", 3}, {"$ref", 4}, {"$sortKey", 5}, {"someField", 6}}); + auto expectedResult = Document{{"someField", 6}}; + + ASSERT_DOCUMENT_EQ(result, expectedResult); +} + // // Nested array recursion. // |