test_readonly_transactions.js (4883B)
1 /** 2 * Any copyright is dedicated to the Public Domain. 3 * http://creativecommons.org/publicdomain/zero/1.0/ 4 */ 5 6 var testGenerator = testSteps(); 7 8 function* testSteps() { 9 const name = this.window ? window.location.pathname : "Splendid Test"; 10 const osName = "foo"; 11 12 let request = indexedDB.open(name, 1); 13 request.onerror = errorHandler; 14 request.onupgradeneeded = grabEventAndContinueHandler; 15 request.onsuccess = grabEventAndContinueHandler; 16 let event = yield undefined; 17 18 let db = event.target.result; 19 is(db.objectStoreNames.length, 0, "Correct objectStoreNames list"); 20 21 db.createObjectStore(osName, { autoIncrement: "true" }); 22 23 yield undefined; 24 25 let key1, key2; 26 27 request = db.transaction([osName], "readwrite").objectStore(osName).add({}); 28 request.onerror = errorHandler; 29 request.onsuccess = function (event) { 30 is(event.target.transaction.mode, "readwrite", "Correct mode"); 31 key1 = event.target.result; 32 testGenerator.next(); 33 }; 34 yield undefined; 35 36 request = db.transaction(osName, "readwrite").objectStore(osName).add({}); 37 request.onerror = errorHandler; 38 request.onsuccess = function (event) { 39 is(event.target.transaction.mode, "readwrite", "Correct mode"); 40 key2 = event.target.result; 41 testGenerator.next(); 42 }; 43 yield undefined; 44 45 request = db 46 .transaction([osName], "readwrite") 47 .objectStore(osName) 48 .put({}, key1); 49 request.onerror = errorHandler; 50 request.onsuccess = function (event) { 51 is(event.target.transaction.mode, "readwrite", "Correct mode"); 52 testGenerator.next(); 53 }; 54 yield undefined; 55 56 request = db 57 .transaction(osName, "readwrite") 58 .objectStore(osName) 59 .put({}, key2); 60 request.onerror = errorHandler; 61 request.onsuccess = function (event) { 62 is(event.target.transaction.mode, "readwrite", "Correct mode"); 63 testGenerator.next(); 64 }; 65 yield undefined; 66 67 request = db 68 .transaction([osName], "readwrite") 69 .objectStore(osName) 70 .put({}, key1); 71 request.onerror = errorHandler; 72 request.onsuccess = function (event) { 73 is(event.target.transaction.mode, "readwrite", "Correct mode"); 74 testGenerator.next(); 75 }; 76 yield undefined; 77 78 request = db 79 .transaction(osName, "readwrite") 80 .objectStore(osName) 81 .put({}, key1); 82 request.onerror = errorHandler; 83 request.onsuccess = function (event) { 84 is(event.target.transaction.mode, "readwrite", "Correct mode"); 85 testGenerator.next(); 86 }; 87 yield undefined; 88 89 request = db 90 .transaction([osName], "readwrite") 91 .objectStore(osName) 92 .delete(key1); 93 request.onerror = errorHandler; 94 request.onsuccess = function (event) { 95 is(event.target.transaction.mode, "readwrite", "Correct mode"); 96 testGenerator.next(); 97 }; 98 yield undefined; 99 100 request = db 101 .transaction(osName, "readwrite") 102 .objectStore(osName) 103 .delete(key2); 104 request.onerror = errorHandler; 105 request.onsuccess = function (event) { 106 is(event.target.transaction.mode, "readwrite", "Correct mode"); 107 testGenerator.next(); 108 }; 109 yield undefined; 110 111 try { 112 request = db.transaction([osName]).objectStore(osName).add({}); 113 ok(false, "Adding to a readonly transaction should fail!"); 114 } catch (e) { 115 ok(true, "Adding to a readonly transaction failed"); 116 } 117 118 try { 119 request = db.transaction(osName).objectStore(osName).add({}); 120 ok(false, "Adding to a readonly transaction should fail!"); 121 } catch (e) { 122 ok(true, "Adding to a readonly transaction failed"); 123 } 124 125 try { 126 request = db.transaction([osName]).objectStore(osName).put({}); 127 ok(false, "Adding or modifying a readonly transaction should fail!"); 128 } catch (e) { 129 ok(true, "Adding or modifying a readonly transaction failed"); 130 } 131 132 try { 133 request = db.transaction(osName).objectStore(osName).put({}); 134 ok(false, "Adding or modifying a readonly transaction should fail!"); 135 } catch (e) { 136 ok(true, "Adding or modifying a readonly transaction failed"); 137 } 138 139 try { 140 request = db.transaction([osName]).objectStore(osName).put({}, key1); 141 ok(false, "Modifying a readonly transaction should fail!"); 142 } catch (e) { 143 ok(true, "Modifying a readonly transaction failed"); 144 } 145 146 try { 147 request = db.transaction(osName).objectStore(osName).put({}, key1); 148 ok(false, "Modifying a readonly transaction should fail!"); 149 } catch (e) { 150 ok(true, "Modifying a readonly transaction failed"); 151 } 152 153 try { 154 request = db.transaction([osName]).objectStore(osName).delete(key1); 155 ok(false, "Removing from a readonly transaction should fail!"); 156 } catch (e) { 157 ok(true, "Removing from a readonly transaction failed"); 158 } 159 160 try { 161 request = db.transaction(osName).objectStore(osName).delete(key2); 162 ok(false, "Removing from a readonly transaction should fail!"); 163 } catch (e) { 164 ok(true, "Removing from a readonly transaction failed"); 165 } 166 167 finishTest(); 168 }