0
0
mirror of https://github.com/mongodb/mongo.git synced 2024-11-24 16:46:00 +01:00
mongodb/jstests/ssl_x509/shell_x509_system_user.js
Matt Broadstone 771dabd098 SERVER-81339 Convert ReplSetTest and ShardingTest to modules (#26332)
GitOrigin-RevId: 744aa110a53786b23c62ff53f87a1418b5991e8d
2024-08-20 22:00:49 +00:00

60 lines
1.8 KiB
JavaScript

// Check that the shell can authenticate as the __system user using X509, which is a use case for
// our auth performance tests (through the dbhash hook).
import {ReplSetTest} from "jstests/libs/replsettest.js";
const x509Options = {
clusterAuthMode: 'x509',
tlsMode: 'requireTLS',
tlsCertificateKeyFile: 'jstests/libs/server.pem',
tlsCAFile: 'jstests/libs/ca.pem',
tlsAllowInvalidCertificates: '',
};
const rst = new ReplSetTest({nodes: 1, nodeOptions: x509Options, waitForKeys: false});
rst.startSet();
rst.initiate();
const primaryConnString = rst.getPrimary().host;
const subShellCommands = async function() {
TestData = {
authUser: 'C=US,ST=New York,L=New York City,O=MongoDB,OU=Kernel,CN=server',
authenticationDatabase: '$external',
keyFile: 'dummyKeyFile',
clusterAuthMode: 'x509',
};
// Explicitly check asCluster can succeed.
authutil.asCluster(db.getMongo(), 'dummyKeyFile', function() {
// No need to do anything here. We just need to check we don't error out in the
// previous auth step.
});
// Indirectly check that ReplSetTest can successfully call asCluster.
new ReplSetTest(db.getMongo().host);
// Directly check that the use case for our auth perf tests can succeed.
await import("jstests/hooks/run_check_repl_dbhash.js");
};
const subShellArgs = [
'mongo',
'--ssl',
'--tlsCAFile=jstests/libs/ca.pem',
'--tlsCertificateKeyFile=jstests/libs/server.pem',
'--tlsAllowInvalidHostnames',
'--authenticationDatabase=$external',
'--authenticationMechanism=MONGODB-X509',
primaryConnString,
'--eval',
`(${subShellCommands.toString()})();`
];
const retVal = _runMongoProgram(...subShellArgs);
assert.eq(retVal, 0, 'mongo shell did not succeed with exit code 0');
rst.stopSet();