summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/parsed_exclusion_projection_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/pipeline/parsed_exclusion_projection_test.cpp')
-rw-r--r--src/mongo/db/pipeline/parsed_exclusion_projection_test.cpp20
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.
//