summaryrefslogtreecommitdiff
path: root/jstests/noPassthrough/wt_malformed_creation_string.js
blob: 4067cca329fcf0dc4f53cc734e90d8d65f98e726 (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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/**
 * Tests that a null embedded malformed string is rejected gracefully.
 */
(function() {
    'use strict';

    var engine = 'wiredTiger';
    if (jsTest.options().storageEngine) {
        engine = jsTest.options().storageEngine;
    }

    // Skip this test if not running with the right storage engine.
    if (engine !== 'wiredTiger' && engine !== 'inMemory') {
        jsTest.log('Skipping test because storageEngine is not "wiredTiger" or "inMemory"');
        return;
    }

    // Build an array of malformed strings to test
    var malformedStrings = ["\u0000000", "\0,", "bl\0ah", "split_pct=30,\0split_pct=35,"];

    // Start up a mongod.
    // Test that collection and index creation with malformed creation strings fail gracefully.
    runTest();

    function runTest() {
        var dbpath = MongoRunner.dataPath + 'wt_malformed_creation_string';
        resetDbpath(dbpath);

        // Start a mongod
        var conn = MongoRunner.runMongod({
            dbpath: dbpath,
            noCleanData: true,
        });
        assert.neq(null, conn, 'mongod was unable to start up');

        var testDB = conn.getDB('test');

        // Collection creation with malformed string should fail
        for (var i = 0; i < malformedStrings.length; i++) {
            assert.commandFailedWithCode(
                testDB.createCollection(
                    'coll', {storageEngine: {[engine]: {configString: malformedStrings[i]}}}),
                ErrorCodes.FailedToParse);
        }

        // Create collection to test index creation on
        assert.commandWorked(testDB.createCollection('coll'));

        // Index creation with malformed string should fail
        for (var i = 0; i < malformedStrings.length; i++) {
            assert.commandFailedWithCode(testDB.coll.createIndex({a: 1}, {
                name: 'with_malformed_str',
                storageEngine: {[engine]: {configString: malformedStrings[i]}}
            }),
                                         ErrorCodes.FailedToParse);
        }

        MongoRunner.stopMongod(conn);
    }
})();