tor-browser

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

test_register_request_queue.js (1876B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 function run_test() {
      7  do_get_profile();
      8  setPrefs({
      9    requestTimeout: 1000,
     10    retryBaseInterval: 150,
     11  });
     12  run_next_test();
     13 }
     14 
     15 add_task(async function test_register_request_queue() {
     16  let db = PushServiceWebSocket.newPushDB();
     17  registerCleanupFunction(() => {
     18    return db.drop().then(_ => db.close());
     19  });
     20 
     21  let onHello;
     22  let helloPromise = new Promise(
     23    resolve =>
     24      (onHello = after(2, function onHelloReceived() {
     25        this.serverSendMsg(
     26          JSON.stringify({
     27            messageType: "hello",
     28            status: 200,
     29            uaid: "54b08a9e-59c6-4ed7-bb54-f4fd60d6f606",
     30          })
     31        );
     32        resolve();
     33      }))
     34  );
     35 
     36  PushService.init({
     37    serverURI: "wss://push.example.org/",
     38    db,
     39    makeWebSocket(uri) {
     40      return new MockWebSocket(uri, {
     41        onHello,
     42        onRegister() {
     43          ok(false, "Should cancel timed-out requests");
     44        },
     45      });
     46    },
     47  });
     48 
     49  let firstRegister = PushService.register({
     50    scope: "https://example.com/page/1",
     51    originAttributes: ChromeUtils.originAttributesToSuffix({
     52      inIsolatedMozBrowser: false,
     53    }),
     54  });
     55  let secondRegister = PushService.register({
     56    scope: "https://example.com/page/1",
     57    originAttributes: ChromeUtils.originAttributesToSuffix({
     58      inIsolatedMozBrowser: false,
     59    }),
     60  });
     61 
     62  await Promise.all([
     63    // eslint-disable-next-line mozilla/rejects-requires-await
     64    Assert.rejects(
     65      firstRegister,
     66      /Registration error/,
     67      "Should time out the first request"
     68    ),
     69    // eslint-disable-next-line mozilla/rejects-requires-await
     70    Assert.rejects(
     71      secondRegister,
     72      /Registration error/,
     73      "Should time out the second request"
     74    ),
     75  ]);
     76 
     77  await helloPromise;
     78 });