1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/indexedDB/test/unit/test_readonly_transactions.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,181 @@ 1.4 +/** 1.5 + * Any copyright is dedicated to the Public Domain. 1.6 + * http://creativecommons.org/publicdomain/zero/1.0/ 1.7 + */ 1.8 + 1.9 +if (!this.window) { 1.10 + this.runTest = function() { 1.11 + todo(false, "Test disabled in xpcshell test suite for now"); 1.12 + finishTest(); 1.13 + } 1.14 +} 1.15 + 1.16 +var testGenerator = testSteps(); 1.17 + 1.18 +function testSteps() 1.19 +{ 1.20 + const name = this.window ? window.location.pathname : "Splendid Test"; 1.21 + const osName = "foo"; 1.22 + 1.23 + let request = indexedDB.open(name, 1); 1.24 + request.onerror = errorHandler; 1.25 + request.onupgradeneeded = grabEventAndContinueHandler; 1.26 + request.onsuccess = grabEventAndContinueHandler; 1.27 + let event = yield undefined; 1.28 + 1.29 + let db = event.target.result; 1.30 + is(db.objectStoreNames.length, 0, "Correct objectStoreNames list"); 1.31 + 1.32 + db.createObjectStore(osName, { autoIncrement: "true" }); 1.33 + 1.34 + yield undefined; 1.35 + 1.36 + let key1, key2; 1.37 + 1.38 + request = db.transaction([osName], "readwrite") 1.39 + .objectStore(osName) 1.40 + .add({}); 1.41 + request.onerror = errorHandler; 1.42 + request.onsuccess = function(event) { 1.43 + is(event.target.transaction.mode, "readwrite", "Correct mode"); 1.44 + key1 = event.target.result; 1.45 + testGenerator.next(); 1.46 + } 1.47 + yield undefined; 1.48 + 1.49 + request = db.transaction(osName, "readwrite").objectStore(osName).add({}); 1.50 + request.onerror = errorHandler; 1.51 + request.onsuccess = function(event) { 1.52 + is(event.target.transaction.mode, "readwrite", "Correct mode"); 1.53 + key2 = event.target.result; 1.54 + testGenerator.next(); 1.55 + } 1.56 + yield undefined; 1.57 + 1.58 + request = db.transaction([osName], "readwrite") 1.59 + .objectStore(osName) 1.60 + .put({}, key1); 1.61 + request.onerror = errorHandler; 1.62 + request.onsuccess = function(event) { 1.63 + is(event.target.transaction.mode, "readwrite", "Correct mode"); 1.64 + testGenerator.next(); 1.65 + } 1.66 + yield undefined; 1.67 + 1.68 + request = db.transaction(osName, "readwrite") 1.69 + .objectStore(osName) 1.70 + .put({}, key2); 1.71 + request.onerror = errorHandler; 1.72 + request.onsuccess = function(event) { 1.73 + is(event.target.transaction.mode, "readwrite", "Correct mode"); 1.74 + testGenerator.next(); 1.75 + } 1.76 + yield undefined; 1.77 + 1.78 + request = db.transaction([osName], "readwrite") 1.79 + .objectStore(osName) 1.80 + .put({}, key1); 1.81 + request.onerror = errorHandler; 1.82 + request.onsuccess = function(event) { 1.83 + is(event.target.transaction.mode, "readwrite", "Correct mode"); 1.84 + testGenerator.next(); 1.85 + } 1.86 + yield undefined; 1.87 + 1.88 + request = db.transaction(osName, "readwrite") 1.89 + .objectStore(osName) 1.90 + .put({}, key1); 1.91 + request.onerror = errorHandler; 1.92 + request.onsuccess = function(event) { 1.93 + is(event.target.transaction.mode, "readwrite", "Correct mode"); 1.94 + testGenerator.next(); 1.95 + } 1.96 + yield undefined; 1.97 + 1.98 + request = db.transaction([osName], "readwrite") 1.99 + .objectStore(osName) 1.100 + .delete(key1); 1.101 + request.onerror = errorHandler; 1.102 + request.onsuccess = function(event) { 1.103 + is(event.target.transaction.mode, "readwrite", "Correct mode"); 1.104 + testGenerator.next(); 1.105 + } 1.106 + yield undefined; 1.107 + 1.108 + request = db.transaction(osName, "readwrite") 1.109 + .objectStore(osName) 1.110 + .delete(key2); 1.111 + request.onerror = errorHandler; 1.112 + request.onsuccess = function(event) { 1.113 + is(event.target.transaction.mode, "readwrite", "Correct mode"); 1.114 + testGenerator.next(); 1.115 + } 1.116 + yield undefined; 1.117 + 1.118 + try { 1.119 + request = db.transaction([osName]).objectStore(osName).add({}); 1.120 + ok(false, "Adding to a readonly transaction should fail!"); 1.121 + } 1.122 + catch (e) { 1.123 + ok(true, "Adding to a readonly transaction failed"); 1.124 + } 1.125 + 1.126 + try { 1.127 + request = db.transaction(osName).objectStore(osName).add({}); 1.128 + ok(false, "Adding to a readonly transaction should fail!"); 1.129 + } 1.130 + catch (e) { 1.131 + ok(true, "Adding to a readonly transaction failed"); 1.132 + } 1.133 + 1.134 + try { 1.135 + request = db.transaction([osName]).objectStore(osName).put({}); 1.136 + ok(false, "Adding or modifying a readonly transaction should fail!"); 1.137 + } 1.138 + catch (e) { 1.139 + ok(true, "Adding or modifying a readonly transaction failed"); 1.140 + } 1.141 + 1.142 + try { 1.143 + request = db.transaction(osName).objectStore(osName).put({}); 1.144 + ok(false, "Adding or modifying a readonly transaction should fail!"); 1.145 + } 1.146 + catch (e) { 1.147 + ok(true, "Adding or modifying a readonly transaction failed"); 1.148 + } 1.149 + 1.150 + try { 1.151 + request = db.transaction([osName]).objectStore(osName).put({}, key1); 1.152 + ok(false, "Modifying a readonly transaction should fail!"); 1.153 + } 1.154 + catch (e) { 1.155 + ok(true, "Modifying a readonly transaction failed"); 1.156 + } 1.157 + 1.158 + try { 1.159 + request = db.transaction(osName).objectStore(osName).put({}, key1); 1.160 + ok(false, "Modifying a readonly transaction should fail!"); 1.161 + } 1.162 + catch (e) { 1.163 + ok(true, "Modifying a readonly transaction failed"); 1.164 + } 1.165 + 1.166 + try { 1.167 + request = db.transaction([osName]).objectStore(osName).delete(key1); 1.168 + ok(false, "Removing from a readonly transaction should fail!"); 1.169 + } 1.170 + catch (e) { 1.171 + ok(true, "Removing from a readonly transaction failed"); 1.172 + } 1.173 + 1.174 + try { 1.175 + request = db.transaction(osName).objectStore(osName).delete(key2); 1.176 + ok(false, "Removing from a readonly transaction should fail!"); 1.177 + } 1.178 + catch (e) { 1.179 + ok(true, "Removing from a readonly transaction failed"); 1.180 + } 1.181 + 1.182 + finishTest(); 1.183 + yield undefined; 1.184 +}