diff options
Diffstat (limited to 'jstests/sharding/auth_copydb.js')
-rw-r--r-- | jstests/sharding/auth_copydb.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/jstests/sharding/auth_copydb.js b/jstests/sharding/auth_copydb.js new file mode 100644 index 00000000000..23be714127b --- /dev/null +++ b/jstests/sharding/auth_copydb.js @@ -0,0 +1,40 @@ +// Tests the copydb command on mongos with auth + + +var st = new ShardingTest({ shards : 1, + mongos : 1, + keyFile : "jstests/libs/key1"}); +var mongos = st.s0; +var destAdminDB = mongos.getDB('admin'); +var destTestDB = mongos.getDB('test'); + +var sourceMongodConn = MongoRunner.runMongod({}); +var sourceTestDB = sourceMongodConn.getDB('test'); + +sourceTestDB.foo.insert({a:1}); + +destAdminDB.addUser('admin', 'password'); // Turns on access control enforcement + +jsTestLog("Running copydb that should fail"); +var res = destAdminDB.runCommand({copydb:1, + fromhost: sourceMongodConn.host, + fromdb:'test', + todb:'test'}); +printjson(res); +assert.commandFailed(res); + +destAdminDB.auth('admin', 'password'); +assert.eq(0, destTestDB.foo.count()); // Be extra sure the copydb didn't secretly succeed. + +jsTestLog("Running copydb that should succeed"); +res = destAdminDB.runCommand({copydb:1, + fromhost: sourceMongodConn.host, + fromdb:'test', + todb:'test'}); +printjson(res); +assert.commandWorked(res); + +assert.eq(1, destTestDB.foo.count()); +assert.eq(1, destTestDB.foo.findOne().a); + +st.stop(); |