summaryrefslogtreecommitdiff
path: root/jstests/aggregation
diff options
context:
space:
mode:
authorNick Zolnierz <nicholas.zolnierz@mongodb.com>2018-08-31 10:12:10 -0400
committerNick Zolnierz <nicholas.zolnierz@mongodb.com>2018-09-12 13:37:11 -0400
commitb0f2a52bd882100d7d7174614bcda7149e21f6bb (patch)
tree14320c3be3b78e4f9cc9bfffcdd1c3da6fa545cd /jstests/aggregation
parentb19e39088cf8754186de8f5f3f1dae17a12aaa4c (diff)
downloadmongo-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.js64
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());
+ }());
}());