tor-browser

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

test_unregister_success.js (2244B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 const userAgentID = "fbe865a6-aeb8-446f-873c-aeebdb8d493c";
      7 const channelID = "db0a7021-ec2d-4bd3-8802-7a6966f10ed8";
      8 
      9 function run_test() {
     10  do_get_profile();
     11  setPrefs({
     12    userAgentID,
     13  });
     14  run_next_test();
     15 }
     16 
     17 add_task(async function test_unregister_success() {
     18  let db = PushServiceWebSocket.newPushDB();
     19  registerCleanupFunction(() => {
     20    return db.drop().then(_ => db.close());
     21  });
     22  await db.put({
     23    channelID,
     24    pushEndpoint: "https://example.org/update/unregister-success",
     25    scope: "https://example.com/page/unregister-success",
     26    originAttributes: "",
     27    version: 1,
     28    quota: Infinity,
     29  });
     30 
     31  let unregisterDone;
     32  let unregisterPromise = new Promise(resolve => (unregisterDone = resolve));
     33  PushService.init({
     34    serverURI: "wss://push.example.org/",
     35    db,
     36    makeWebSocket(uri) {
     37      return new MockWebSocket(uri, {
     38        onHello() {
     39          this.serverSendMsg(
     40            JSON.stringify({
     41              messageType: "hello",
     42              status: 200,
     43              uaid: userAgentID,
     44              use_webpush: true,
     45            })
     46          );
     47        },
     48        onUnregister(request) {
     49          equal(request.channelID, channelID, "Should include the channel ID");
     50          equal(request.code, 200, "Expected manual unregister reason");
     51          this.serverSendMsg(
     52            JSON.stringify({
     53              messageType: "unregister",
     54              status: 200,
     55              channelID,
     56            })
     57          );
     58          unregisterDone();
     59        },
     60      });
     61    },
     62  });
     63 
     64  let subModifiedPromise = promiseObserverNotification(
     65    PushServiceComponent.subscriptionModifiedTopic
     66  );
     67 
     68  await PushService.unregister({
     69    scope: "https://example.com/page/unregister-success",
     70    originAttributes: "",
     71  });
     72 
     73  let { data: subModifiedScope } = await subModifiedPromise;
     74  equal(
     75    subModifiedScope,
     76    "https://example.com/page/unregister-success",
     77    "Should fire a subscription modified event after unsubscribing"
     78  );
     79 
     80  let record = await db.getByKeyID(channelID);
     81  ok(!record, "Unregister did not remove record");
     82 
     83  await unregisterPromise;
     84 });