From f1530d925c530004d107c56a8dd012d26304038c Mon Sep 17 00:00:00 2001 From: Max Hirschhorn Date: Thu, 31 Aug 2017 21:30:23 -0400 Subject: SERVER-30903 Add test for shellHelper.use(). --- jstests/noPassthrough/shell_helper_use_database.js | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 jstests/noPassthrough/shell_helper_use_database.js diff --git a/jstests/noPassthrough/shell_helper_use_database.js b/jstests/noPassthrough/shell_helper_use_database.js new file mode 100644 index 00000000000..553e6df34d9 --- /dev/null +++ b/jstests/noPassthrough/shell_helper_use_database.js @@ -0,0 +1,39 @@ +/** + * Tests that shellHelper.use() updates the global 'db' object. + */ + +// We explicitly declare the global 'db' object since the rest of the test runs with strict-mode +// enabled. +var db; + +(function() { + "use strict"; + + const conn = MongoRunner.runMongod({}); + assert.neq(null, conn, "mongod was unable to start up"); + + db = conn.getDB("db1"); + assert.eq("db1", db.getName()); + + // Tests that shellHelper.use() updates the global 'db' object to refer to a DB object with the + // database name specified. + shellHelper.use("db2"); + assert.eq("db2", db.getName()); + + // Replace the global 'db' object with a DB object from a new session and verify that + // shellHelper.use() still works. + db = conn.startSession().getDatabase("db1"); + assert.eq("db1", db.getName()); + + const session = db.getSession(); + + // Tests that shellHelper.use() updates the global 'db' object to refer to a DB object with the + // database name specified. The DB objects should have the same underlying DriverSession object. + shellHelper.use("db2"); + assert.eq("db2", db.getName()); + + assert(session === db.getSession(), "session wasn't inherited as part of switching databases"); + + session.endSession(); + MongoRunner.stopMongod(conn); +})(); -- cgit v1.2.1