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);
}
})();
|