summaryrefslogtreecommitdiff
path: root/jstests/noPassthrough/wt_malformed_creation_string.js
blob: e6ba7d08e31f0abedce48ed207d275d925ce4219 (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);
}
})();