mirror of https://github.com/mongodb/mongo
36 lines
1.2 KiB
JavaScript
36 lines
1.2 KiB
JavaScript
// Test that you can still authenticate a replset connection to a RS with no primary (SERVER-6665).
|
|
import {ReplSetTest} from "jstests/libs/replsettest.js";
|
|
|
|
const NODE_COUNT = 2;
|
|
const rs = new ReplSetTest({
|
|
"nodes": [
|
|
{},
|
|
// Set priority: 0 to ensure that this node can't become the primary.
|
|
{rsConfig: {priority: 0}},
|
|
],
|
|
keyFile: "jstests/libs/key1",
|
|
});
|
|
const nodes = rs.startSet();
|
|
rs.initiate();
|
|
|
|
// Add user
|
|
const primary = rs.getPrimary();
|
|
primary.getDB("admin").createUser({user: "admin", pwd: "pwd", roles: ["root"]}, {w: NODE_COUNT});
|
|
|
|
// Can authenticate replset connection when whole set is up.
|
|
const conn = new Mongo(rs.getURL());
|
|
assert(conn.getDB("admin").auth("admin", "pwd"));
|
|
assert.commandWorked(conn.getDB("admin").foo.insert({a: 1}, {writeConcern: {w: NODE_COUNT}}));
|
|
|
|
// Make sure there is no primary
|
|
rs.stop(0);
|
|
rs.awaitSecondaryNodes(null, [nodes[1]]);
|
|
|
|
// Make sure you can still authenticate a replset connection with no primary
|
|
const conn2 = new Mongo(rs.getURL());
|
|
conn2.setSecondaryOk();
|
|
assert(conn2.getDB("admin").auth({user: "admin", pwd: "pwd", mechanism: "SCRAM-SHA-1"}));
|
|
assert.eq(1, conn2.getDB("admin").foo.findOne().a);
|
|
|
|
rs.stopSet();
|