mirror of
https://github.com/mongodb/mongo.git
synced 2024-12-01 01:21:03 +01:00
29 lines
1.2 KiB
JavaScript
29 lines
1.2 KiB
JavaScript
// Verify that the update system correctly rejects invalid entries during post-image validation.
|
|
(function() {
|
|
"use strict";
|
|
|
|
const conn = MongoRunner.runMongod();
|
|
assert.neq(null, conn, "mongod was unable to start up");
|
|
|
|
const testDB = conn.getDB("test");
|
|
|
|
// Test validation of elements added to an array that is represented in a "deserialized" format
|
|
// in mutablebson. The added element is invalid because it is a DBRef with a missing $id.
|
|
assert.writeOK(testDB.coll.insert({_id: 0, a: []}));
|
|
assert.writeErrorWithCode(
|
|
testDB.coll.update({_id: 0}, {$set: {"a.1": 0, "a.0": {$ref: "coll", $db: "test"}}}),
|
|
ErrorCodes.InvalidDBRef);
|
|
assert.docEq(testDB.coll.findOne({_id: 0}), {_id: 0, a: []});
|
|
|
|
// Test validation of modified array elements that are accessed using a string that is
|
|
// numerically equivalent to their fieldname. The modified element is invalid because it is a
|
|
// DBRef with a missing $id.
|
|
assert.writeOK(testDB.coll.insert({_id: 1, a: [0]}));
|
|
assert.writeErrorWithCode(
|
|
testDB.coll.update({_id: 1}, {$set: {"a.00": {$ref: "coll", $db: "test"}}}),
|
|
ErrorCodes.InvalidDBRef);
|
|
assert.docEq(testDB.coll.findOne({_id: 1}), {_id: 1, a: [0]});
|
|
|
|
MongoRunner.stopMongod(conn);
|
|
}());
|