diff options
Diffstat (limited to 'jstests/auth')
-rw-r--r-- | jstests/auth/auth1.js | 5 | ||||
-rw-r--r-- | jstests/auth/auth2.js | 23 | ||||
-rw-r--r-- | jstests/auth/rename.js | 40 |
3 files changed, 68 insertions, 0 deletions
diff --git a/jstests/auth/auth1.js b/jstests/auth/auth1.js index 2f2a1b4..c837085 100644 --- a/jstests/auth/auth1.js +++ b/jstests/auth/auth1.js @@ -26,6 +26,11 @@ for( i = 0; i < 999; ++i ) { assert.eq( 999, t.count() , "A1" ); assert.eq( 999, t.find().toArray().length , "A2" ); +db.setProfilingLevel( 2 ); +t.count(); +db.setProfilingLevel( 0 ); +assert.lt( 0 , db.system.profile.find( { user : "eliot" } ).count() , "AP1" ) + assert.eq( 999, db.eval( function() { return db[ "jstests_auth_auth1" ].count(); } ) , "A3" ); db.eval( function() { db[ "jstests_auth_auth1" ].save( {i:999} ) } ); assert.eq( 1000, db.eval( function() { return db[ "jstests_auth_auth1" ].count(); } ) , "A4" ); diff --git a/jstests/auth/auth2.js b/jstests/auth/auth2.js new file mode 100644 index 0000000..4f30894 --- /dev/null +++ b/jstests/auth/auth2.js @@ -0,0 +1,23 @@ +// test read/write permissions + +port = allocatePorts( 1 )[ 0 ]; +baseName = "jstests_auth_auth2"; + +m = startMongod( "--auth", "--port", port, "--dbpath", "/data/db/" + baseName, "--nohttpinterface", "--bind_ip", "127.0.0.1" , "--nojournal" , "--smallfiles" ); +db = m.getDB( "admin" ); + +t = db[ baseName ]; +t.drop(); + +users = db.getCollection( "system.users" ); +assert.eq( 0 , users.count() ); + +db.addUser( "eliot" , "eliot" ); + +assert.throws( function(){ db.users.count(); } ) + +assert.throws( function() { db.shutdownServer(); } ) + +db.auth( "eliot" , "eliot" ) + +db.shutdownServer(); diff --git a/jstests/auth/rename.js b/jstests/auth/rename.js new file mode 100644 index 0000000..5411298 --- /dev/null +++ b/jstests/auth/rename.js @@ -0,0 +1,40 @@ +// test renameCollection with auth + +port = allocatePorts( 1 )[ 0 ]; + +baseName = "jstests_rename_auth"; +m = startMongod( "--auth", "--port", port, "--dbpath", "/data/db/" + baseName, "--nohttpinterface" ); + +db1 = m.getDB( baseName ) +db2 = m.getDB( baseName + '_other' ) +admin = m.getDB( 'admin' ) + +// auth not yet checked since we are on localhost +db1.addUser( "foo", "bar" ); +db2.addUser( "bar", "foo" ); + +printjson(db1.a.count()); +db1.a.save({}); +assert.eq(db1.a.count(), 1); + +//this makes auth required on localhost +admin.addUser('not', 'used'); + +// can't run same db w/o auth +assert.commandFailed( admin.runCommand({renameCollection:db1.a.getFullName(), to: db1.b.getFullName()}) ); + +// can run same db with auth +db1.auth('foo', 'bar') +assert.commandWorked( admin.runCommand({renameCollection:db1.a.getFullName(), to: db1.b.getFullName()}) ); + +// can't run diff db w/o auth +assert.commandFailed( admin.runCommand({renameCollection:db1.b.getFullName(), to: db2.a.getFullName()}) ); + +// can run diff db with auth +db2.auth('bar', 'foo'); +assert.commandWorked( admin.runCommand({renameCollection:db1.b.getFullName(), to: db2.a.getFullName()}) ); + +// test post conditions +assert.eq(db1.a.count(), 0); +assert.eq(db1.b.count(), 0); +assert.eq(db2.a.count(), 1); |