dom/indexedDB/test/unit/test_readonly_transactions.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

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

mercurial