1
// Test the db.addUser() shell helper.
3
var passwordHash = function(username, password) {
4
return hex_md5(username + ":mongo:" + password);
7
var conn = MongoRunner.runMongod({smallfiles: ""});
9
var db = conn.getDB('addUser');
12
jsTest.log("Testing creating backwards-compatible user objects using old form of db.addUser");
13
db.addUser('spencer', 'password');
14
assert.eq(1, db.system.users.count());
15
var userObj = db.system.users.findOne();
16
assert.eq('spencer', userObj['user']);
17
assert.eq(passwordHash('spencer', 'password'), userObj['pwd']);
19
// Should replace previous entry
20
db.addUser('spencer', 'newpassword', true);
21
assert.eq(1, db.system.users.count());
22
userObj = db.system.users.findOne();
23
assert.eq('spencer', userObj['user']);
24
assert.eq(passwordHash('spencer', 'newpassword'), userObj['pwd']);
25
assert(userObj['readOnly']);
29
jsTest.log("Testing new form of addUser");
31
// Can't create old-style entries with new addUser helper.
32
assert.throws(function() {db.addUser({user:'noroles', pwd:'password'});});
33
// Should fail because user already exists
34
assert.throws(function() {db.addUser({user:'spencer', pwd:'password', roles:'read'});});
36
// Create valid extended form user
37
db.addUser({user:'andy', pwd:'password', roles:['read']});
38
assert.eq(2, db.system.users.count());
39
userObj = db.system.users.findOne({user:'andy'});
40
assert.eq('andy', userObj['user']);
41
assert.eq(passwordHash('andy', 'password'), userObj['pwd']);
42
assert.eq('read', userObj['roles'][0]);
44
// Create valid extended form external user
45
db.addUser({user:'andy', userSource:'$sasl', roles:['readWrite']});
46
assert.eq(3, db.system.users.count());
47
userObj = db.system.users.findOne({user:'andy', userSource:'$sasl'});
48
assert.eq('andy', userObj['user']);
49
assert.eq('$sasl', userObj['userSource']);
50
assert.eq('readWrite', userObj['roles'][0]);
51
assert(!userObj['pwd']);
b'\\ No newline at end of file'