diff options
author | Nick Zolnierz <nicholas.zolnierz@mongodb.com> | 2018-08-31 10:12:10 -0400 |
---|---|---|
committer | Nick Zolnierz <nicholas.zolnierz@mongodb.com> | 2018-09-12 13:37:11 -0400 |
commit | b0f2a52bd882100d7d7174614bcda7149e21f6bb (patch) | |
tree | 14320c3be3b78e4f9cc9bfffcdd1c3da6fa545cd /jstests/aggregation | |
parent | b19e39088cf8754186de8f5f3f1dae17a12aaa4c (diff) | |
download | mongo-b0f2a52bd882100d7d7174614bcda7149e21f6bb.tar.gz |
SERVER-36081: Auth tests for $out to a foreign database and bypassDocumentValidation
Diffstat (limited to 'jstests/aggregation')
-rw-r--r-- | jstests/aggregation/sources/out/bypass_doc_validation.js | 64 |
1 files changed, 62 insertions, 2 deletions
diff --git a/jstests/aggregation/sources/out/bypass_doc_validation.js b/jstests/aggregation/sources/out/bypass_doc_validation.js index 3b67647ef14..41d5ac4d41d 100644 --- a/jstests/aggregation/sources/out/bypass_doc_validation.js +++ b/jstests/aggregation/sources/out/bypass_doc_validation.js @@ -55,7 +55,7 @@ }()); function assertDocValidationFailure(cmdOptions) { - targetColl.remove({}); + assert.commandWorked(targetColl.remove({})); assertErrorCode(sourceColl, [{$out: targetColl.getName()}], ErrorCodes.DocumentValidationFailure, @@ -119,7 +119,7 @@ // Test that the bypassDocumentValidation is casted to true if the value is non-boolean. (function testNonBooleanBypassDocValidationFlag() { - targetColl.remove({}); + assert.commandWorked(targetColl.remove({})); assert.commandWorked(testDB.runCommand({collMod: targetColl.getName(), validator: {a: 1}})); sourceColl.drop(); assert.commandWorked(sourceColl.insert({_id: 0, a: 1})); @@ -132,4 +132,64 @@ {bypassDocumentValidation: "false"}); assert.eq([{_id: 0, a: 3}], targetColl.find().toArray()); }()); + + // Test bypassDocumentValidation with $out to a collection in a foreign database. + (function testForeignDb() { + const foreignDB = db.getSiblingDB("foreign_db"); + const foreignColl = foreignDB.foreign_coll; + foreignColl.drop(); + assert.commandWorked( + foreignDB.createCollection(foreignColl.getName(), {validator: {a: 2}})); + + sourceColl.aggregate( + [ + {$addFields: {a: 3}}, + { + $out: { + db: foreignDB.getName(), + to: foreignColl.getName(), + mode: "replaceDocuments" + } + } + ], + {bypassDocumentValidation: true}); + assert.eq([{_id: 0, a: 3}], foreignColl.find().toArray()); + + sourceColl.aggregate( + [ + {$replaceRoot: {newRoot: {_id: 1, a: 4}}}, + { + $out: + {db: foreignDB.getName(), to: foreignColl.getName(), mode: "insertDocuments"} + } + ], + {bypassDocumentValidation: true}); + assert.eq([{_id: 0, a: 3}, {_id: 1, a: 4}], foreignColl.find().sort({_id: 1}).toArray()); + + assert.commandWorked(foreignColl.remove({})); + assertErrorCode(sourceColl, + [ + {$addFields: {a: 3}}, + { + $out: { + db: foreignDB.getName(), + to: foreignColl.getName(), + mode: "replaceDocuments" + } + } + ], + ErrorCodes.DocumentValidationFailure); + + assertErrorCode( + sourceColl, + [ + {$replaceRoot: {newRoot: {_id: 1, a: 4}}}, + { + $out: + {db: foreignDB.getName(), to: foreignColl.getName(), mode: "insertDocuments"} + } + ], + ErrorCodes.DocumentValidationFailure); + assert.eq(0, foreignColl.find().itcount()); + }()); }()); |