summaryrefslogtreecommitdiff
path: root/jstests/auth
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/auth')
-rw-r--r--jstests/auth/auth1.js5
-rw-r--r--jstests/auth/auth2.js23
-rw-r--r--jstests/auth/rename.js40
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);