diff options
Diffstat (limited to 'jstests/auth/localhostAuthBypass.js')
-rw-r--r-- | jstests/auth/localhostAuthBypass.js | 125 |
1 files changed, 73 insertions, 52 deletions
diff --git a/jstests/auth/localhostAuthBypass.js b/jstests/auth/localhostAuthBypass.js index 1b07456fbe3..fdaf4386794 100644 --- a/jstests/auth/localhostAuthBypass.js +++ b/jstests/auth/localhostAuthBypass.js @@ -1,7 +1,7 @@ -//SERVER-6591: Localhost authentication exception doesn't work right on sharded cluster +// SERVER-6591: Localhost authentication exception doesn't work right on sharded cluster // -//This test is to ensure that localhost authentication works correctly against a standalone -//mongod whether it is hosted with "localhost" or a hostname. +// This test is to ensure that localhost authentication works correctly against a standalone +// mongod whether it is hosted with "localhost" or a hostname. var baseName = "auth_server-6591"; var dbpath = MongoRunner.dataPath + baseName; @@ -12,67 +12,81 @@ load("jstests/libs/host_ipaddr.js"); var createUser = function(mongo) { print("============ adding a user."); - mongo.getDB("admin").createUser( - { user:username, pwd: password, roles: jsTest.adminUserRoles }); + mongo.getDB("admin").createUser({user: username, pwd: password, roles: jsTest.adminUserRoles}); }; var assertCannotRunCommands = function(mongo) { print("============ ensuring that commands cannot be run."); var test = mongo.getDB("test"); - assert.throws( function() { test.system.users.findOne(); }); + assert.throws(function() { + test.system.users.findOne(); + }); - assert.writeError(test.foo.save({ _id: 0 })); + assert.writeError(test.foo.save({_id: 0})); - assert.throws( function() { test.foo.findOne({_id:0}); }); + assert.throws(function() { + test.foo.findOne({_id: 0}); + }); - assert.writeError(test.foo.update({ _id: 0 }, { $set: { x: 20 }})); - assert.writeError(test.foo.remove({ _id: 0 })); + assert.writeError(test.foo.update({_id: 0}, {$set: {x: 20}})); + assert.writeError(test.foo.remove({_id: 0})); - assert.throws(function() { + assert.throws(function() { test.foo.mapReduce( - function() { emit(1, 1); }, - function(id, count) { return Array.sum(count); }, - { out: "other" }); + function() { + emit(1, 1); + }, + function(id, count) { + return Array.sum(count); + }, + {out: "other"}); }); // Additional commands not permitted // Create non-admin user - assert.throws(function() { mongo.getDB("test").createUser( - { user: username, pwd: password, roles: ['readWrite'] }); }); + assert.throws(function() { + mongo.getDB("test").createUser({user: username, pwd: password, roles: ['readWrite']}); + }); // DB operations var authorizeErrorCode = 13; - assert.commandFailedWithCode(mongo.getDB("test").copyDatabase("admin", "admin2"), - authorizeErrorCode, "copyDatabase"); + assert.commandFailedWithCode( + mongo.getDB("test").copyDatabase("admin", "admin2"), authorizeErrorCode, "copyDatabase"); // Create collection - assert.commandFailedWithCode(mongo.getDB("test").createCollection( - "log", { capped: true, size: 5242880, max: 5000 } ), - authorizeErrorCode, "createCollection"); + assert.commandFailedWithCode( + mongo.getDB("test").createCollection("log", {capped: true, size: 5242880, max: 5000}), + authorizeErrorCode, + "createCollection"); // Set/Get system parameters - var params = [{ param: "journalCommitInterval", val: 200 }, - { param: "logLevel", val: 2 }, - { param: "logUserIds", val: 1 }, - { param: "notablescan", val: 1 }, - { param: "quiet", val: 1 }, - { param: "replApplyBatchSize", val: 10 }, - { param: "replIndexPrefetch", val: "none" }, - { param: "syncdelay", val: 30 }, - { param: "traceExceptions", val: true }, - { param: "sslMode", val: "preferSSL" }, - { param: "clusterAuthMode", val: "sendX509" }, - { param: "userCacheInvalidationIntervalSecs", val: 300 } - ]; + var params = [ + {param: "journalCommitInterval", val: 200}, + {param: "logLevel", val: 2}, + {param: "logUserIds", val: 1}, + {param: "notablescan", val: 1}, + {param: "quiet", val: 1}, + {param: "replApplyBatchSize", val: 10}, + {param: "replIndexPrefetch", val: "none"}, + {param: "syncdelay", val: 30}, + {param: "traceExceptions", val: true}, + {param: "sslMode", val: "preferSSL"}, + {param: "clusterAuthMode", val: "sendX509"}, + {param: "userCacheInvalidationIntervalSecs", val: 300} + ]; params.forEach(function(p) { - var cmd = { setParameter: 1 }; + var cmd = { + setParameter: 1 + }; cmd[p.param] = p.val; - assert.commandFailedWithCode(mongo.getDB("admin").runCommand(cmd), - authorizeErrorCode, "setParameter: "+p.param); + assert.commandFailedWithCode( + mongo.getDB("admin").runCommand(cmd), authorizeErrorCode, "setParameter: " + p.param); }); params.forEach(function(p) { - var cmd = { getParameter: 1 }; + var cmd = { + getParameter: 1 + }; cmd[p.param] = 1; - assert.commandFailedWithCode(mongo.getDB("admin").runCommand(cmd), - authorizeErrorCode, "getParameter: "+p.param); + assert.commandFailedWithCode( + mongo.getDB("admin").runCommand(cmd), authorizeErrorCode, "getParameter: " + p.param); }); }; @@ -83,15 +97,18 @@ var assertCanRunCommands = function(mongo) { // will throw on failure test.system.users.findOne(); - assert.writeOK(test.foo.save({ _id: 0 })); - assert.writeOK(test.foo.update({ _id: 0 }, { $set: { x: 20 }})); - assert.writeOK(test.foo.remove({ _id: 0 })); + assert.writeOK(test.foo.save({_id: 0})); + assert.writeOK(test.foo.update({_id: 0}, {$set: {x: 20}})); + assert.writeOK(test.foo.remove({_id: 0})); test.foo.mapReduce( - function() { emit(1, 1); }, - function(id, count) { return Array.sum(count); }, - { out: "other" } - ); + function() { + emit(1, 1); + }, + function(id, count) { + return Array.sum(count); + }, + {out: "other"}); }; var authenticate = function(mongo) { @@ -101,7 +118,7 @@ var authenticate = function(mongo) { var shutdown = function(conn) { print("============ shutting down."); - MongoRunner.stopMongod(conn.port, /*signal*/false, { auth: { user: username, pwd: password}}); + MongoRunner.stopMongod(conn.port, /*signal*/ false, {auth: {user: username, pwd: password}}); }; var runTest = function(useHostName) { @@ -143,10 +160,14 @@ var runNonlocalTest = function(host) { var mongo = new Mongo(host + ":" + conn.port); assertCannotRunCommands(mongo); - assert.throws(function() { mongo.getDB("admin").createUser - ({ user:username, pwd: password, roles: jsTest.adminUserRoles }); }); - assert.throws(function() { mongo.getDB("$external").createUser - ({ user:username, pwd: password, roles: jsTest.adminUserRoles }); }); + assert.throws(function() { + mongo.getDB("admin") + .createUser({user: username, pwd: password, roles: jsTest.adminUserRoles}); + }); + assert.throws(function() { + mongo.getDB("$external") + .createUser({user: username, pwd: password, roles: jsTest.adminUserRoles}); + }); shutdown(conn); }; |