summaryrefslogtreecommitdiff
path: root/jstests/sharding/mrShardedOutputAuth.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/sharding/mrShardedOutputAuth.js')
-rw-r--r--jstests/sharding/mrShardedOutputAuth.js171
1 files changed, 85 insertions, 86 deletions
diff --git a/jstests/sharding/mrShardedOutputAuth.js b/jstests/sharding/mrShardedOutputAuth.js
index 0536c6a51b9..c860c16148e 100644
--- a/jstests/sharding/mrShardedOutputAuth.js
+++ b/jstests/sharding/mrShardedOutputAuth.js
@@ -6,90 +6,89 @@
(function() {
- // TODO SERVER-35447: Multiple users cannot be authenticated on one connection within a session.
- TestData.disableImplicitSessions = true;
-
- function doMapReduce(connection, outputDb) {
- // clean output db and run m/r
- outputDb.numbers_out.drop();
- printjson(connection.getDB('input').runCommand({
- mapreduce: "numbers",
- map: function() {
- emit(this.num, {count: 1});
- },
- reduce: function(k, values) {
- var result = {};
- values.forEach(function(value) {
- result.count = 1;
- });
- return result;
- },
- out: {merge: "numbers_out", sharded: true, db: "output"},
- verbose: true,
- query: {}
- }));
- }
-
- function assertSuccess(configDb, outputDb) {
- assert.eq(outputDb.numbers_out.count(), 50, "map/reduce failed");
- assert(!configDb.collections.findOne().dropped, "no sharded collections");
- }
-
- function assertFailure(configDb, outputDb) {
- assert.eq(outputDb.numbers_out.count(), 0, "map/reduce should not have succeeded");
- }
-
- // TODO: Remove 'shardAsReplicaSet: false' when SERVER-32672 is fixed.
- var st = new ShardingTest({
- name: "mrShardedOutputAuth",
- shards: 1,
- mongos: 1,
- other: {keyFile: 'jstests/libs/key1', shardAsReplicaSet: false}
- });
-
- // Setup the users to the input, output and admin databases
- var mongos = st.s;
- var adminDb = mongos.getDB("admin");
- adminDb.createUser({user: "user", pwd: "pass", roles: jsTest.adminUserRoles});
-
- var authenticatedConn = new Mongo(mongos.host);
- authenticatedConn.getDB('admin').auth("user", "pass");
- adminDb = authenticatedConn.getDB("admin");
-
- var configDb = authenticatedConn.getDB("config");
-
- var inputDb = authenticatedConn.getDB("input");
- inputDb.createUser({user: "user", pwd: "pass", roles: jsTest.basicUserRoles});
-
- var outputDb = authenticatedConn.getDB("output");
- outputDb.createUser({user: "user", pwd: "pass", roles: jsTest.basicUserRoles});
-
- // Setup the input db
- inputDb.numbers.drop();
- for (var i = 0; i < 50; i++) {
- inputDb.numbers.insert({num: i});
- }
- assert.eq(inputDb.numbers.count(), 50);
-
- // Setup a connection authenticated to both input and output db
- var inputOutputAuthConn = new Mongo(mongos.host);
- inputOutputAuthConn.getDB('input').auth("user", "pass");
- inputOutputAuthConn.getDB('output').auth("user", "pass");
- doMapReduce(inputOutputAuthConn, outputDb);
- assertSuccess(configDb, outputDb);
-
- // setup a connection authenticated to only input db
- var inputAuthConn = new Mongo(mongos.host);
- inputAuthConn.getDB('input').auth("user", "pass");
- doMapReduce(inputAuthConn, outputDb);
- assertFailure(configDb, outputDb);
-
- // setup a connection authenticated to only output db
- var outputAuthConn = new Mongo(mongos.host);
- outputAuthConn.getDB('output').auth("user", "pass");
- doMapReduce(outputAuthConn, outputDb);
- assertFailure(configDb, outputDb);
-
- st.stop();
-
+// TODO SERVER-35447: Multiple users cannot be authenticated on one connection within a session.
+TestData.disableImplicitSessions = true;
+
+function doMapReduce(connection, outputDb) {
+ // clean output db and run m/r
+ outputDb.numbers_out.drop();
+ printjson(connection.getDB('input').runCommand({
+ mapreduce: "numbers",
+ map: function() {
+ emit(this.num, {count: 1});
+ },
+ reduce: function(k, values) {
+ var result = {};
+ values.forEach(function(value) {
+ result.count = 1;
+ });
+ return result;
+ },
+ out: {merge: "numbers_out", sharded: true, db: "output"},
+ verbose: true,
+ query: {}
+ }));
+}
+
+function assertSuccess(configDb, outputDb) {
+ assert.eq(outputDb.numbers_out.count(), 50, "map/reduce failed");
+ assert(!configDb.collections.findOne().dropped, "no sharded collections");
+}
+
+function assertFailure(configDb, outputDb) {
+ assert.eq(outputDb.numbers_out.count(), 0, "map/reduce should not have succeeded");
+}
+
+// TODO: Remove 'shardAsReplicaSet: false' when SERVER-32672 is fixed.
+var st = new ShardingTest({
+ name: "mrShardedOutputAuth",
+ shards: 1,
+ mongos: 1,
+ other: {keyFile: 'jstests/libs/key1', shardAsReplicaSet: false}
+});
+
+// Setup the users to the input, output and admin databases
+var mongos = st.s;
+var adminDb = mongos.getDB("admin");
+adminDb.createUser({user: "user", pwd: "pass", roles: jsTest.adminUserRoles});
+
+var authenticatedConn = new Mongo(mongos.host);
+authenticatedConn.getDB('admin').auth("user", "pass");
+adminDb = authenticatedConn.getDB("admin");
+
+var configDb = authenticatedConn.getDB("config");
+
+var inputDb = authenticatedConn.getDB("input");
+inputDb.createUser({user: "user", pwd: "pass", roles: jsTest.basicUserRoles});
+
+var outputDb = authenticatedConn.getDB("output");
+outputDb.createUser({user: "user", pwd: "pass", roles: jsTest.basicUserRoles});
+
+// Setup the input db
+inputDb.numbers.drop();
+for (var i = 0; i < 50; i++) {
+ inputDb.numbers.insert({num: i});
+}
+assert.eq(inputDb.numbers.count(), 50);
+
+// Setup a connection authenticated to both input and output db
+var inputOutputAuthConn = new Mongo(mongos.host);
+inputOutputAuthConn.getDB('input').auth("user", "pass");
+inputOutputAuthConn.getDB('output').auth("user", "pass");
+doMapReduce(inputOutputAuthConn, outputDb);
+assertSuccess(configDb, outputDb);
+
+// setup a connection authenticated to only input db
+var inputAuthConn = new Mongo(mongos.host);
+inputAuthConn.getDB('input').auth("user", "pass");
+doMapReduce(inputAuthConn, outputDb);
+assertFailure(configDb, outputDb);
+
+// setup a connection authenticated to only output db
+var outputAuthConn = new Mongo(mongos.host);
+outputAuthConn.getDB('output').auth("user", "pass");
+doMapReduce(outputAuthConn, outputDb);
+assertFailure(configDb, outputDb);
+
+st.stop();
})();