mirror of
https://github.com/mongodb/mongo.git
synced 2024-12-01 01:21:03 +01:00
61 lines
2.0 KiB
JavaScript
61 lines
2.0 KiB
JavaScript
/**
|
|
* 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);
|
|
}
|
|
})();
|