summaryrefslogtreecommitdiff
path: root/jstests/noPassthrough/wt_malformed_creation_string.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/noPassthrough/wt_malformed_creation_string.js')
-rw-r--r--jstests/noPassthrough/wt_malformed_creation_string.js60
1 files changed, 60 insertions, 0 deletions
diff --git a/jstests/noPassthrough/wt_malformed_creation_string.js b/jstests/noPassthrough/wt_malformed_creation_string.js
new file mode 100644
index 00000000000..4067cca329f
--- /dev/null
+++ b/jstests/noPassthrough/wt_malformed_creation_string.js
@@ -0,0 +1,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);
+ }
+})();