TestData.authMechanism = "MONGODB-CR"; // SERVER-11428
|
DB.prototype._defaultAuthenticationMechanism = "MONGODB-CR"; // SERVER-11428
|
|
var baseName = "jstests_clone_copyauth";
|
|
// Create single node source with auth enabled
|
var source = MongoRunner.runMongod({ auth : "" });
|
|
// Insert doc into source
|
source.getDB(baseName)[baseName].save({i:1});
|
assert.eq(1, source.getDB(baseName)[baseName].count());
|
assert.eq(1, source.getDB(baseName)[baseName].findOne().i);
|
|
// Setup auth
|
source.getDB("admin").createUser({ user: "super", pwd: "super", roles: [ "root" ] });
|
source.getDB("admin").auth("super", "super");
|
source.getDB(baseName).createUser({ user: "foo", pwd: "bar", roles: [ "dbOwner" ] });
|
source.getDB("admin").logout();
|
assert.throws(function() { source.getDB(baseName)[baseName].findOne(); });
|
|
// Create sharded cluster as target of copy
|
var shardingTestConfig = {
|
name : baseName + "_target",
|
mongos : 1,
|
shards : 1,
|
config : 1,
|
verbose : 8
|
}
|
var targetCluster = new ShardingTest(shardingTestConfig);
|
var target = targetCluster.s;
|
|
// Drop db on target and run "copydb"
|
target.getDB(baseName).dropDatabase();
|
assert.eq(0, target.getDB(baseName)[baseName].count());
|
assert.commandWorked(target.getDB(baseName).copyDatabase(baseName, baseName, source.host,
|
"foo", "bar"));
|
assert.eq(1, target.getDB(baseName)[baseName].count());
|
assert.eq(1, target.getDB(baseName)[baseName].findOne().i);
|
|
// Cleanup
|
MongoRunner.stopMongod(source.port);
|
targetCluster.stop();
|