tor-browser

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

test_register_wrong_id.js (2038B)


      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 = "84afc774-6995-40d1-9c90-8c34ddcd0cb4";
      7 const clientChannelID = "4b42a681c99e4dfbbb166a7e01a09b8b";
      8 const serverChannelID = "3f5aeb89c6e8405a9569619522783436";
      9 
     10 function run_test() {
     11  do_get_profile();
     12  setPrefs({
     13    userAgentID,
     14    requestTimeout: 1000,
     15    retryBaseInterval: 150,
     16  });
     17  run_next_test();
     18 }
     19 
     20 add_task(async function test_register_wrong_id() {
     21  // Should reconnect after the register request times out.
     22  let registers = 0;
     23  let helloDone;
     24  let helloPromise = new Promise(resolve => (helloDone = after(2, resolve)));
     25 
     26  PushServiceWebSocket._generateID = () => clientChannelID;
     27  PushService.init({
     28    serverURI: "wss://push.example.org/",
     29    makeWebSocket(uri) {
     30      return new MockWebSocket(uri, {
     31        onHello() {
     32          this.serverSendMsg(
     33            JSON.stringify({
     34              messageType: "hello",
     35              status: 200,
     36              uaid: userAgentID,
     37            })
     38          );
     39          helloDone();
     40        },
     41        onRegister(request) {
     42          equal(
     43            request.channelID,
     44            clientChannelID,
     45            "Register: wrong channel ID"
     46          );
     47          registers++;
     48          this.serverSendMsg(
     49            JSON.stringify({
     50              messageType: "register",
     51              status: 200,
     52              // Reply with a different channel ID. Since the ID is used as a
     53              // nonce, the registration request will time out.
     54              channelID: serverChannelID,
     55            })
     56          );
     57        },
     58      });
     59    },
     60  });
     61 
     62  await Assert.rejects(
     63    PushService.register({
     64      scope: "https://example.com/mismatched",
     65      originAttributes: ChromeUtils.originAttributesToSuffix({
     66        inIsolatedMozBrowser: false,
     67      }),
     68    }),
     69    /Registration error/,
     70    "Expected error for mismatched register reply"
     71  );
     72 
     73  await helloPromise;
     74  equal(registers, 1, "Wrong register count");
     75 });