diff options
author | Xiangyu Yao <xiangyu.yao@mongodb.com> | 2019-08-28 00:47:34 +0000 |
---|---|---|
committer | evergreen <evergreen@mongodb.com> | 2019-08-28 00:47:34 +0000 |
commit | 18f95f8ad46c685d8529dba2d5655b3e4ef968c1 (patch) | |
tree | 1c7d69da6eedf16d1c317ca1e9c4b36bc460edd6 /jstests/change_streams | |
parent | 33621eab05f101b161ae8834cb8efc3980e8f17f (diff) | |
download | mongo-18f95f8ad46c685d8529dba2d5655b3e4ef968c1.tar.gz |
SERVER-41947 Disallow using the system.views collection name as the source or target names in the rename command
Diffstat (limited to 'jstests/change_streams')
-rw-r--r-- | jstests/change_streams/whole_cluster_metadata_notifications.js | 40 | ||||
-rw-r--r-- | jstests/change_streams/whole_db_metadata_notifications.js | 48 |
2 files changed, 0 insertions, 88 deletions
diff --git a/jstests/change_streams/whole_cluster_metadata_notifications.js b/jstests/change_streams/whole_cluster_metadata_notifications.js index 8c72df1ba44..e960affc2ef 100644 --- a/jstests/change_streams/whole_cluster_metadata_notifications.js +++ b/jstests/change_streams/whole_cluster_metadata_notifications.js @@ -191,46 +191,6 @@ for (let collToInvalidate of [db1Coll, db2Coll]) { assert.commandWorked(collToInvalidate.insert({_id: 2})); assert.eq(cst.getOneChange(aggCursor).operationType, "insert"); - // Test that renaming a "system" collection to a user collection *does* return a rename - // notification. - assert.commandWorked( - testDB.runCommand({create: "view1", viewOn: collToInvalidate.getName(), pipeline: []})); - assert.commandWorked(testDB.system.views.renameCollection("non_system_collection")); - cst.assertNextChangesEqual({ - cursor: aggCursor, - expectedChanges: [{ - operationType: "rename", - ns: {db: testDB.getName(), coll: "system.views"}, - to: {db: testDB.getName(), coll: "non_system_collection"} - }], - }); - - // Test that renaming a "system" collection to a different "system" collection does not - // result in a notification in the change stream. - aggCursor = cst.startWatchingAllChangesForCluster(); - assert.commandWorked( - testDB.runCommand({create: "view1", viewOn: collToInvalidate.getName(), pipeline: []})); - // Note that the target of the rename must be a valid "system" collection. - assert.commandWorked(testDB.system.views.renameCollection("system.users")); - // Verify that the change stream filters out the rename above, instead returning the - // next insert to the test collection. - assert.commandWorked(collToInvalidate.insert({_id: 1})); - change = cst.getOneChange(aggCursor); - assert.eq(change.operationType, "insert", tojson(change)); - assert.eq(change.ns, {db: testDB.getName(), coll: collToInvalidate.getName()}); - - // Test that renaming a user collection to a "system" collection *does* return a rename - // notification. - assert.commandWorked(collToInvalidate.renameCollection("system.views")); - cst.assertNextChangesEqual({ - cursor: aggCursor, - expectedChanges: [{ - operationType: "rename", - ns: {db: testDB.getName(), coll: collToInvalidate.getName()}, - to: {db: testDB.getName(), coll: "system.views"} - }], - }); - // Drop the "system.views" collection to avoid view catalog errors in subsequent tests. assertDropCollection(testDB, "system.views"); diff --git a/jstests/change_streams/whole_db_metadata_notifications.js b/jstests/change_streams/whole_db_metadata_notifications.js index 1500402bc1c..45f751c9aa0 100644 --- a/jstests/change_streams/whole_db_metadata_notifications.js +++ b/jstests/change_streams/whole_db_metadata_notifications.js @@ -194,54 +194,6 @@ change = cst.getOneChange(aggCursor); assert.eq(change.operationType, "insert", tojson(change)); assert.eq(change.ns, {db: testDB.getName(), coll: coll.getName()}); -// Test that renaming a "system" collection *does* return a notification if the target of -// the rename is a non-system collection. -assert.commandWorked(testDB.runCommand({create: "view1", viewOn: coll.getName(), pipeline: []})); -assert.commandWorked(testDB.system.views.renameCollection("non_system_collection")); -cst.assertNextChangesEqual({ - cursor: aggCursor, - expectedChanges: [{ - operationType: "rename", - ns: {db: testDB.getName(), coll: "system.views"}, - to: {db: testDB.getName(), coll: "non_system_collection"} - }], -}); - -// Test that renaming a "system" collection to a different "system" collection does not -// result in a notification in the change stream. -aggCursor = cst.startWatchingChanges({pipeline: [{$changeStream: {}}], collection: 1}); -assert.commandWorked(testDB.runCommand({create: "view1", viewOn: coll.getName(), pipeline: []})); -// Note that the target of the rename must be a valid "system" collection. -assert.commandWorked(testDB.system.views.renameCollection("system.users")); -// Verify that the change stream filters out the rename above, instead returning the next insert -// to the test collection. -assert.commandWorked(coll.insert({_id: 1})); -change = cst.getOneChange(aggCursor); -assert.eq(change.operationType, "insert", tojson(change)); -assert.eq(change.ns, {db: testDB.getName(), coll: coll.getName()}); - -// Test that renaming a user collection to a "system" collection *is* returned in the change -// stream. -assert.commandWorked(coll.renameCollection("system.views")); -cst.assertNextChangesEqual({ - cursor: aggCursor, - expectedChanges: [{ - operationType: "rename", - ns: {db: testDB.getName(), coll: coll.getName()}, - to: {db: testDB.getName(), coll: "system.views"} - }], -}); - -// Drop the "system.views" collection to avoid view catalog errors in subsequent tests. -assertDropCollection(testDB, "system.views"); -assertDropCollection(testDB, "non_system_collection"); -cst.assertNextChangesEqual({ - cursor: aggCursor, - expectedChanges: [ - {operationType: "drop", ns: {db: testDB.getName(), coll: "non_system_collection"}}, - ] -}); - // Dropping the database should generate a 'dropDatabase' notification followed by an // 'invalidate'. assert.commandWorked(testDB.dropDatabase()); |