summaryrefslogtreecommitdiff
path: root/jstests/core/rename8.js
blob: d0a2a2fea60a4c0e1ae54758568aed2a50fa4b6a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// @tags: [requires_non_retryable_commands]

// SERVER-12591: prevent renaming to arbitrary system collections.

var testdb =
    db.getSiblingDB("rename8");  // to avoid breaking other tests when we touch system.users
var coll = testdb.rename8;
var systemNamespaces = testdb.system.namespaces;
var systemFoo = testdb.system.foo;
var systemUsers = testdb.system.users;

systemFoo.drop();
systemUsers.drop();
coll.drop();
coll.insert({});

// system.foo isn't in the whitelist so it can't be renamed to or from
assert.commandFailed(coll.renameCollection(systemFoo.getName()));
assert.commandFailed(systemFoo.renameCollection(coll.getName()));

// same with system.namespaces, even though it does exist
assert.commandFailed(coll.renameCollection(systemNamespaces.getName()));
assert.commandFailed(coll.renameCollection(systemNamespaces.getName(), /*dropTarget*/ true));
assert.commandFailed(systemNamespaces.renameCollection(coll.getName()));

// system.users is whitelisted so these should work
assert.commandWorked(coll.renameCollection(systemUsers.getName()));
assert.commandWorked(systemUsers.renameCollection(coll.getName()));