mirror of https://github.com/mongodb/mongo
73 lines
2.6 KiB
JavaScript
73 lines
2.6 KiB
JavaScript
/* Start a replica set with auth using SCRAM-SHA-256 exclusively,
|
|
* then connect via shell.
|
|
`*
|
|
* @tags: [requires_replication]
|
|
*/
|
|
|
|
(function() {
|
|
|
|
const rsTest = new ReplSetTest({nodes: 3});
|
|
rsTest.startSet({
|
|
oplogSize: 10,
|
|
keyFile: 'jstests/libs/key1',
|
|
setParameter: {authenticationMechanisms: 'SCRAM-SHA-256'}
|
|
});
|
|
rsTest.initiate();
|
|
rsTest.awaitSecondaryNodes();
|
|
|
|
// Setup initial data.
|
|
const primary = rsTest.getPrimary();
|
|
const admin = primary.getDB('admin');
|
|
admin.createUser({user: 'admin', pwd: 'password', roles: jsTest.adminUserRoles});
|
|
admin.auth('admin', 'password');
|
|
admin.logout();
|
|
|
|
// Fetch and rearrange connection string.
|
|
const connString = rsTest.getURL();
|
|
const slash = connString.indexOf('/');
|
|
const rsName = connString.substr(0, slash);
|
|
const rsHosts = connString.substr(slash + 1);
|
|
|
|
// Connect with shell using connString.
|
|
const csShell = runMongoProgram('mongo',
|
|
'--host',
|
|
connString,
|
|
'-u',
|
|
'admin',
|
|
'--password',
|
|
'password',
|
|
'--authenticationDatabase',
|
|
'admin',
|
|
'--eval',
|
|
';');
|
|
assert.eq(csShell, 0, 'Failed to connect using connection string');
|
|
|
|
// Connect with shell explicitly specifying mechanism.
|
|
const csShellMech = runMongoProgram('mongo',
|
|
'--host',
|
|
connString,
|
|
'-u',
|
|
'admin',
|
|
'--password',
|
|
'password',
|
|
'--authenticationDatabase',
|
|
'admin',
|
|
'--authenticationMechanism',
|
|
'SCRAM-SHA-256',
|
|
'--eval',
|
|
';');
|
|
assert.eq(csShellMech, 0, 'Failed to connect using connection string');
|
|
|
|
// Connect with shell using URI.
|
|
const uriString = 'mongodb://admin:password@' + rsHosts + '/admin?replicaSet=' + rsName;
|
|
const uriShell = runMongoProgram('mongo', uriString, '--eval', ';');
|
|
assert.eq(uriShell, 0, 'Failed to connect using URI');
|
|
|
|
// Connect with shell using URI and explcit mechanism.
|
|
const uriShellMech =
|
|
runMongoProgram('mongo', uriString + '&authMechanism=SCRAM-SHA-256', '--eval', ';');
|
|
assert.eq(uriShellMech, 0, 'Failed to connect using URI');
|
|
|
|
rsTest.stopSet();
|
|
})();
|