0
0
mirror of https://github.com/mongodb/mongo.git synced 2024-12-01 09:32:32 +01:00
mongodb/jstests/repl/repl11.js

64 lines
1.7 KiB
JavaScript

// Test repl with auth enabled
var baseName = "jstests_repl11test";
setAdmin = function( n ) {
n.getDB( "admin" ).addUser( "super", "super" );
n.getDB( "local" ).addUser( "repl", "foo" );
n.getDB( "local" ).system.users.findOne();
}
auth = function( n ) {
return n.getDB( baseName ).auth( "test", "test" );
}
doTest = function( signal ) {
rt = new ReplTest( baseName );
m = rt.start( true, {}, false, true );
m.getDB( baseName ).addUser( "test", "test" );
setAdmin( m );
rt.stop( true );
s = rt.start( false, {}, false, true );
setAdmin( s );
rt.stop( false );
m = rt.start( true, { auth:null }, true );
auth( m );
s = rt.start( false, { auth:null }, true );
assert.soon( function() { return auth( s ); } );
ma = m.getDB( baseName ).a;
ma.save( {} );
sa = s.getDB( baseName ).a;
assert.soon( function() { return 1 == sa.count(); } );
s.getDB( "local" ).auth( "repl", "foo" );
assert.commandWorked( s.getDB( "admin" )._adminCommand( {serverStatus:1,repl:1} ) );
assert.commandWorked( s.getDB( "admin" )._adminCommand( {serverStatus:1,repl:2} ) );
rt.stop( false, signal );
ma.save( {} );
s = rt.start( false, { auth:null }, true );
assert.soon( function() { return auth( s ); } );
sa = s.getDB( baseName ).a;
assert.soon( function() { return 2 == sa.count(); } );
ma.save( {a:1} );
assert.soon( function() { return 1 == sa.count( {a:1} ); } );
ma.update( {a:1}, {b:2} );
assert.soon( function() { return 1 == sa.count( {b:2} ); } );
ma.remove( {b:2} );
assert.soon( function() { return 0 == sa.count( {b:2} ); } );
rt.stop();
}
doTest( 15 ); // SIGTERM
doTest( 9 ); // SIGKILL