summaryrefslogtreecommitdiff
path: root/jstests/sharding/auth_copydb.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/sharding/auth_copydb.js')
-rw-r--r--jstests/sharding/auth_copydb.js40
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();