tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 }