summaryrefslogtreecommitdiff
path: root/jstests/noPassthrough/max_bson_depth_parameter.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/noPassthrough/max_bson_depth_parameter.js')
-rw-r--r--jstests/noPassthrough/max_bson_depth_parameter.js33
1 files changed, 17 insertions, 16 deletions
diff --git a/jstests/noPassthrough/max_bson_depth_parameter.js b/jstests/noPassthrough/max_bson_depth_parameter.js
index 8914dd2bd1b..8e74598c903 100644
--- a/jstests/noPassthrough/max_bson_depth_parameter.js
+++ b/jstests/noPassthrough/max_bson_depth_parameter.js
@@ -5,17 +5,21 @@
(function() {
"use strict";
-const kTestName = "max_bson_depth_parameter";
+const maxBSONDepth = 21;
// Start mongod with a valid BSON depth, then test that it accepts and rejects command
// appropriately based on the depth.
-let conn = MongoRunner.runMongod({setParameter: "maxBSONDepth=5"});
-assert.neq(null, conn, "Failed to start mongod");
-let testDB = conn.getDB("test");
+const conn = MongoRunner.runMongod({setParameter: {maxBSONDepth: maxBSONDepth}});
+const testDB = conn.getDB("test");
assert.commandWorked(testDB.runCommand({ping: 1}), "Failed to run a command on the server");
assert.commandFailedWithCode(
- testDB.runCommand({find: "coll", filter: {x: {x: {x: {x: {x: {x: 1}}}}}}}),
+ testDB.runCommand({
+ find: "coll",
+ filter: function nestedObj(depth) {
+ return {x: depth > 1 ? nestedObj(depth - 1) : 1};
+ }(maxBSONDepth + 1),
+ }),
ErrorCodes.Overflow,
"Expected server to reject command for exceeding the nesting depth limit");
@@ -29,19 +33,16 @@ assert.commandWorked(testDB.runCommand({
cursor: {}
}));
assert.commandFailedWithCode(
- testDB.runCommand({
+ testDB.runCommand(
+ {
aggregate: "coll1",
- pipeline: [{
- $lookup: {
- from: "coll2",
- as: "as",
- pipeline: [{$lookup: {from: "coll2", as: "as", pipeline: []}}]
- }
- }],
+ pipeline: function nestedPipeline(depth) {
+ return [{$lookup: {from: "coll2", as: "as", pipeline: depth > 3 ? nestedPipeline(depth - 3) : []}}];
+ }(maxBSONDepth),
cursor: {}
}),
- ErrorCodes.Overflow,
- "Expected server to reject command for exceeding the nesting depth limit");
+ ErrorCodes.Overflow,
+ "Expected server to reject command for exceeding the nesting depth limit");
// Restart mongod with a negative maximum BSON depth and test that it fails to start.
MongoRunner.stopMongod(conn);
@@ -50,7 +51,7 @@ assert.throws(() => MongoRunner.runMongod({setParameter: "maxBSONDepth=-4"}),
[],
"Expected mongod to fail at startup because depth was negative");
-assert.throws(() => MongoRunner.runMongod({setParameter: "maxBSONDepth=1"}),
+assert.throws(() => MongoRunner.runMongod({setParameter: "maxBSONDepth=20"}),
[],
"Expected mongod to fail at startup because depth was too low");
}());