summaryrefslogtreecommitdiff
path: root/jstests/noPassthrough/shell_helper_use_database.js
blob: 553e6df34d93fc78bf930c2e2b66ac936b4f6e64 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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);
})();