// Test the behavior when two users from the same database are authenticated serially on a single // connection. Expected behavior is that the first user is implicitly logged out by the second // authentication. // // Regression test for SERVER-8144. var conn = MongoRunner.runMongod({auth: "", smallfiles: ""}); var admin = conn.getDB("admin"); var test = conn.getDB("test"); admin.createUser({user: 'admin', pwd: 'a', roles: jsTest.adminUserRoles}); assert(admin.auth('admin', 'a')); test.createUser({user: 'reader', pwd: 'a', roles: ["read"]}); test.createUser({user: 'writer', pwd: 'a', roles: ["readWrite"]}); admin.logout(); // Nothing logged in, can neither read nor write. assert.writeError(test.docs.insert({value: 0})); assert.throws(function() { test.foo.findOne(); }); // Writer logged in, can read and write. test.auth('writer', 'a'); assert.writeOK(test.docs.insert({value: 1})); test.foo.findOne(); // Reader logged in, replacing writer, can only read. test.auth('reader', 'a'); assert.writeError(test.docs.insert({value: 2})); test.foo.findOne();