summaryrefslogtreecommitdiff
path: root/jstests/tool/dumprestore_auth3.js
diff options
context:
space:
mode:
authorSpencer T Brody <spencer@mongodb.com>2014-07-17 17:44:23 -0400
committerSpencer T Brody <spencer@mongodb.com>2014-07-18 14:54:20 -0400
commit7dbc49a56d010ceaf6d9b57f373863763fe10280 (patch)
tree7b73dd77eef3e3d3649b5c0a04605387c5fc112e /jstests/tool/dumprestore_auth3.js
parent4b12168d5c14f0177586eeda8b22fba433d6df1f (diff)
downloadmongo-7dbc49a56d010ceaf6d9b57f373863763fe10280.tar.gz
SERVER-14212 When restoring users and roles for a single db with --drop, don't drop users/roles from other databases
Diffstat (limited to 'jstests/tool/dumprestore_auth3.js')
-rw-r--r--jstests/tool/dumprestore_auth3.js51
1 files changed, 29 insertions, 22 deletions
diff --git a/jstests/tool/dumprestore_auth3.js b/jstests/tool/dumprestore_auth3.js
index 172fed4500f..95ac6d80659 100644
--- a/jstests/tool/dumprestore_auth3.js
+++ b/jstests/tool/dumprestore_auth3.js
@@ -36,6 +36,7 @@ function runTest(shutdownServer) {
admindb.createUser({user: 'root', pwd: 'pass', roles: ['root']});
admindb.createUser({user: 'backup', pwd: 'pass', roles: ['backup']});
admindb.createUser({user: 'restore', pwd: 'pass', roles: ['restore']});
+ admindb.createRole({role: "dummyRole", roles: [], privileges:[]});
db.createUser({user: 'user', pwd: 'pass', roles: jsTest.basicUserRoles});
db.createRole({role: 'role', roles: [], privileges:[]});
var backupActions = ['find'];
@@ -46,6 +47,8 @@ function runTest(shutdownServer) {
var userCount = db.getUsers().length;
var rolesCount = db.getRoles().length;
+ var adminUsersCount = admindb.getUsers().length;
+ var adminRolesCount = admindb.getRoles().length;
var systemUsersCount = admindb.system.users.count();
var systemVersionCount = admindb.system.version.count();
@@ -54,7 +57,9 @@ function runTest(shutdownServer) {
assert.eq(1, db.bar.findOne().a);
assert.eq(userCount, db.getUsers().length, "setup");
assert.eq(rolesCount, db.getRoles().length, "setup2");
- assert.eq(systemUsersCount, admindb.system.users.count(), "setup3");
+ assert.eq(adminUsersCount, admindb.getUsers().length, "setup3");
+ assert.eq(adminRolesCount, admindb.getRoles().length, "setup4");
+ assert.eq(systemUsersCount, admindb.system.users.count(), "setup5");
assert.eq(systemVersionCount, admindb.system.version.count(),"system version");
assert.eq(1, admindb.system.users.count({user: "restore"}), "Restore user is missing");
assert.eq(1, admindb.system.users.count({user: "backup"}), "Backup user is missing");
@@ -84,10 +89,12 @@ function runTest(shutdownServer) {
// Re-create user data
db.createUser({user: 'user', pwd: 'password', roles: jsTest.basicUserRoles});
db.createRole({role: 'role', roles: [], privileges:[]});
+ userCount = 1;
+ rolesCount = 1;
assert.eq(1, db.bar.findOne().a);
- assert.eq(1, db.getUsers().length, "didn't create user");
- assert.eq(1, db.getRoles().length, "didn't create role");
+ assert.eq(userCount, db.getUsers().length, "didn't create user");
+ assert.eq(rolesCount, db.getRoles().length, "didn't create role");
jsTestLog("Dump foo database *with* user data "+shutMessage);
mongod = runTool("mongodump", mongod, shutdownServer, {out: dumpDir,
@@ -121,8 +128,8 @@ function runTest(shutdownServer) {
assert.soon(function() { return db.bar.findOne(); }, "no data after restore");
assert.eq(1, db.bar.findOne().a);
- assert.eq(1, db.getUsers().length, "didn't restore users");
- assert.eq(1, db.getRoles().length, "didn't restore roles");
+ assert.eq(userCount, db.getUsers().length, "didn't restore users");
+ assert.eq(rolesCount, db.getRoles().length, "didn't restore roles");
assert.eq(1, admindb.system.users.count({user: "restore", db: "admin"}), "Restore user is missing");
assert.docEq(versionDoc,
db.getSiblingDB('admin').system.version.findOne(),
@@ -144,13 +151,13 @@ function runTest(shutdownServer) {
admindb = mongod.getDB('admin');
assert.soon(function() { return db.bar.findOne(); }, "no data after restore");
- // Admin users not restored: SERVER-14212
- //assert.eq(1, admindb.system.users.count({user: "restore"}), "Restore user is missing");
+ assert.eq(adminUsersCount, admindb.getUsers().length, "Admin users were dropped");
+ assert.eq(adminRolesCount, admindb.getRoles().length, "Admin roles were dropped");
assert.eq(1, db.bar.findOne().a);
- assert.eq(1, db.getUsers().length, "didn't restore users");
- assert.eq("user", db.getUsers()[0].user, "didn't update user");
- assert.eq(1, db.getRoles().length, "didn't restore roles");
- assert.eq("role", db.getRoles()[0].role, "didn't update role");
+ assert.eq(userCount, db.getUsers().length, "didn't restore users");
+ assert.eq("user", db.getUser('user').user, "didn't update user");
+ assert.eq(rolesCount, db.getRoles().length, "didn't restore roles");
+ assert.eq("role", db.getRole('role').role, "didn't update role");
assert.docEq(versionDoc,
db.getSiblingDB('admin').system.version.findOne(),
"version doc was changed by restore");
@@ -160,6 +167,7 @@ function runTest(shutdownServer) {
// Make a user in another database to make sure it is properly captured
db.getSiblingDB('bar').createUser({user: "user", pwd: 'pwd', roles: []});
db.getSiblingDB('admin').createUser({user: "user", pwd: 'pwd', roles: []});
+ adminUsersCount += 1;
mongod = runTool("mongodump", mongod, shutdownServer, {out: dumpDir, db: "admin"});
db = mongod.getDB('foo');
@@ -178,21 +186,20 @@ function runTest(shutdownServer) {
assert.soon(function() { return db.bar.findOne(); }, "no data after restore");
assert.eq(1, db.bar.findOne().a);
- assert.eq(1, db.getUsers().length, "didn't restore users");
- assert.eq("user", db.getUsers()[0].user, "didn't restore user");
- assert.eq(1, db.getRoles().length, "didn't restore roles");
- assert.eq("role", db.getRoles()[0].role, "didn't restore role");
- assert.eq(1, db.getUsers().length, "didn't restore users for bar database");
- assert.eq("user", db.getUsers()[0].user, "didn't restore user for bar database");
- assert.eq(1, admindb.getUsers().length, "didn't restore users for admin database");
- assert.eq("user", admindb.getUsers()[0].user, "didn't restore user for admin database");
- assert.eq(3, admindb.system.users.count(), "has the wrong # of users for the whole server");
- assert.eq(1, admindb.system.roles.count(), "has the wrong # of roles for the whole server");
+ assert.eq(userCount, db.getUsers().length, "didn't restore users");
+ assert.eq("user", db.getUser('user').user, "didn't restore user");
+ assert.eq(rolesCount, db.getRoles().length, "didn't restore roles");
+ assert.eq("role", db.getRole('role').role, "didn't restore role");
+ assert.eq(1, otherdb.getUsers().length, "didn't restore users for bar database");
+ assert.eq("user", otherdb.getUsers()[0].user, "didn't restore user for bar database");
+ assert.eq(adminUsersCount, admindb.getUsers().length, "didn't restore users for admin database");
+ assert.eq("user", admindb.getUser("user").user, "didn't restore user for admin database");
+ assert.eq(6, admindb.system.users.count(), "has the wrong # of users for the whole server");
+ assert.eq(2, admindb.system.roles.count(), "has the wrong # of roles for the whole server");
assert.docEq(versionDoc,
db.getSiblingDB('admin').system.version.findOne(),
"version doc was changed by restore");
-
jsTestLog("Dump all databases "+shutMessage);
mongod = runTool("mongodump", mongod, shutdownServer, {out: dumpDir});
db = mongod.getDB('foo');