diff -r 000000000000 -r 6474c204b198 dom/indexedDB/test/unit/test_readonly_transactions.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dom/indexedDB/test/unit/test_readonly_transactions.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,181 @@ +/** + * Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ + */ + +if (!this.window) { + this.runTest = function() { + todo(false, "Test disabled in xpcshell test suite for now"); + finishTest(); + } +} + +var testGenerator = testSteps(); + +function testSteps() +{ + const name = this.window ? window.location.pathname : "Splendid Test"; + const osName = "foo"; + + let request = indexedDB.open(name, 1); + request.onerror = errorHandler; + request.onupgradeneeded = grabEventAndContinueHandler; + request.onsuccess = grabEventAndContinueHandler; + let event = yield undefined; + + let db = event.target.result; + is(db.objectStoreNames.length, 0, "Correct objectStoreNames list"); + + db.createObjectStore(osName, { autoIncrement: "true" }); + + yield undefined; + + let key1, key2; + + request = db.transaction([osName], "readwrite") + .objectStore(osName) + .add({}); + request.onerror = errorHandler; + request.onsuccess = function(event) { + is(event.target.transaction.mode, "readwrite", "Correct mode"); + key1 = event.target.result; + testGenerator.next(); + } + yield undefined; + + request = db.transaction(osName, "readwrite").objectStore(osName).add({}); + request.onerror = errorHandler; + request.onsuccess = function(event) { + is(event.target.transaction.mode, "readwrite", "Correct mode"); + key2 = event.target.result; + testGenerator.next(); + } + yield undefined; + + request = db.transaction([osName], "readwrite") + .objectStore(osName) + .put({}, key1); + request.onerror = errorHandler; + request.onsuccess = function(event) { + is(event.target.transaction.mode, "readwrite", "Correct mode"); + testGenerator.next(); + } + yield undefined; + + request = db.transaction(osName, "readwrite") + .objectStore(osName) + .put({}, key2); + request.onerror = errorHandler; + request.onsuccess = function(event) { + is(event.target.transaction.mode, "readwrite", "Correct mode"); + testGenerator.next(); + } + yield undefined; + + request = db.transaction([osName], "readwrite") + .objectStore(osName) + .put({}, key1); + request.onerror = errorHandler; + request.onsuccess = function(event) { + is(event.target.transaction.mode, "readwrite", "Correct mode"); + testGenerator.next(); + } + yield undefined; + + request = db.transaction(osName, "readwrite") + .objectStore(osName) + .put({}, key1); + request.onerror = errorHandler; + request.onsuccess = function(event) { + is(event.target.transaction.mode, "readwrite", "Correct mode"); + testGenerator.next(); + } + yield undefined; + + request = db.transaction([osName], "readwrite") + .objectStore(osName) + .delete(key1); + request.onerror = errorHandler; + request.onsuccess = function(event) { + is(event.target.transaction.mode, "readwrite", "Correct mode"); + testGenerator.next(); + } + yield undefined; + + request = db.transaction(osName, "readwrite") + .objectStore(osName) + .delete(key2); + request.onerror = errorHandler; + request.onsuccess = function(event) { + is(event.target.transaction.mode, "readwrite", "Correct mode"); + testGenerator.next(); + } + yield undefined; + + try { + request = db.transaction([osName]).objectStore(osName).add({}); + ok(false, "Adding to a readonly transaction should fail!"); + } + catch (e) { + ok(true, "Adding to a readonly transaction failed"); + } + + try { + request = db.transaction(osName).objectStore(osName).add({}); + ok(false, "Adding to a readonly transaction should fail!"); + } + catch (e) { + ok(true, "Adding to a readonly transaction failed"); + } + + try { + request = db.transaction([osName]).objectStore(osName).put({}); + ok(false, "Adding or modifying a readonly transaction should fail!"); + } + catch (e) { + ok(true, "Adding or modifying a readonly transaction failed"); + } + + try { + request = db.transaction(osName).objectStore(osName).put({}); + ok(false, "Adding or modifying a readonly transaction should fail!"); + } + catch (e) { + ok(true, "Adding or modifying a readonly transaction failed"); + } + + try { + request = db.transaction([osName]).objectStore(osName).put({}, key1); + ok(false, "Modifying a readonly transaction should fail!"); + } + catch (e) { + ok(true, "Modifying a readonly transaction failed"); + } + + try { + request = db.transaction(osName).objectStore(osName).put({}, key1); + ok(false, "Modifying a readonly transaction should fail!"); + } + catch (e) { + ok(true, "Modifying a readonly transaction failed"); + } + + try { + request = db.transaction([osName]).objectStore(osName).delete(key1); + ok(false, "Removing from a readonly transaction should fail!"); + } + catch (e) { + ok(true, "Removing from a readonly transaction failed"); + } + + try { + request = db.transaction(osName).objectStore(osName).delete(key2); + ok(false, "Removing from a readonly transaction should fail!"); + } + catch (e) { + ok(true, "Removing from a readonly transaction failed"); + } + + finishTest(); + yield undefined; +}