tor-browser

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

test_unregister_error.js (1932B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 const channelID = "00c7fa13-7b71-447d-bd27-a91abc09d1b2";
      7 
      8 function run_test() {
      9  do_get_profile();
     10  setPrefs();
     11  run_next_test();
     12 }
     13 
     14 add_task(async function test_unregister_error() {
     15  let db = PushServiceWebSocket.newPushDB();
     16  registerCleanupFunction(() => {
     17    return db.drop().then(_ => db.close());
     18  });
     19  await db.put({
     20    channelID,
     21    pushEndpoint: "https://example.org/update/failure",
     22    scope: "https://example.net/page/failure",
     23    originAttributes: "",
     24    version: 1,
     25    quota: Infinity,
     26  });
     27 
     28  let unregisterDone;
     29  let unregisterPromise = new Promise(resolve => (unregisterDone = resolve));
     30  PushService.init({
     31    serverURI: "wss://push.example.org/",
     32    db,
     33    makeWebSocket(uri) {
     34      return new MockWebSocket(uri, {
     35        onHello() {
     36          this.serverSendMsg(
     37            JSON.stringify({
     38              messageType: "hello",
     39              status: 200,
     40              uaid: "083e6c17-1063-4677-8638-ab705aebebc2",
     41            })
     42          );
     43        },
     44        onUnregister(request) {
     45          // The server is notified out-of-band. Since channels may be pruned,
     46          // any failures are swallowed.
     47          equal(request.channelID, channelID, "Unregister: wrong channel ID");
     48          this.serverSendMsg(
     49            JSON.stringify({
     50              messageType: "unregister",
     51              status: 500,
     52              error: "omg, everything is exploding",
     53              channelID,
     54            })
     55          );
     56          unregisterDone();
     57        },
     58      });
     59    },
     60  });
     61 
     62  await PushService.unregister({
     63    scope: "https://example.net/page/failure",
     64    originAttributes: "",
     65  });
     66 
     67  let result = await db.getByKeyID(channelID);
     68  ok(!result, "Deleted push record exists");
     69 
     70  // Make sure we send a request to the server.
     71  await unregisterPromise;
     72 });