tor-browser

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

webconsole-wrapper.test.js (4876B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 "use strict";
      6 
      7 // Test utils.
      8 const expect = require("expect");
      9 const {
     10  stubPackets,
     11 } = require("resource://devtools/client/webconsole/test/node/fixtures/stubs/index.js");
     12 const {
     13  clonePacket,
     14  getMessageAt,
     15  getPrivatePacket,
     16  getWebConsoleUiMock,
     17 } = require("resource://devtools/client/webconsole/test/node/helpers.js");
     18 
     19 const WebConsoleWrapper = require("resource://devtools/client/webconsole/webconsole-wrapper.js");
     20 const {
     21  messagesAdd,
     22 } = require("resource://devtools/client/webconsole/actions/messages.js");
     23 
     24 async function getWebConsoleWrapper() {
     25  const hud = {
     26    currentTarget: { client: {}, getFront: () => {} },
     27    getMappedExpression: () => {},
     28    commands: {
     29      objectCommand: {
     30        releaseObjects: async () => {},
     31      },
     32    },
     33  };
     34  const webConsoleUi = getWebConsoleUiMock(hud);
     35 
     36  const wcow = new WebConsoleWrapper(null, webConsoleUi, null, null);
     37  await wcow.init();
     38  return wcow;
     39 }
     40 
     41 describe("WebConsoleWrapper", () => {
     42  it("clears queues when dispatchMessagesClear is called", async () => {
     43    const ncow = await getWebConsoleWrapper();
     44    ncow.queuedMessageAdds.push({ fakePacket: "message", data: {} });
     45    ncow.queuedMessageUpdates.push({ fakePacket: "message-update", data: {} });
     46    ncow.queuedRequestUpdates.push({ fakePacket: "request-update", data: {} });
     47 
     48    ncow.dispatchMessagesClear();
     49 
     50    expect(ncow.queuedMessageAdds.length).toBe(0);
     51    expect(ncow.queuedMessageUpdates.length).toBe(0);
     52    expect(ncow.queuedRequestUpdates.length).toBe(0);
     53  });
     54 
     55  it("removes private packets from message queue on dispatchPrivateMessagesClear", async () => {
     56    const ncow = await getWebConsoleWrapper();
     57 
     58    const publicLog = stubPackets.get("console.log('mymap')");
     59    ncow.queuedMessageAdds.push(
     60      getPrivatePacket("console.trace()"),
     61      publicLog,
     62      getPrivatePacket("XHR POST request")
     63    );
     64 
     65    ncow.dispatchPrivateMessagesClear();
     66    expect(ncow.queuedMessageAdds).toEqual([publicLog]);
     67  });
     68 
     69  it("removes private packets from network update queue on dispatchPrivateMessagesClear", async () => {
     70    const ncow = await getWebConsoleWrapper();
     71    const publicLog = stubPackets.get("console.log('mymap')");
     72    ncow.queuedMessageAdds.push(
     73      getPrivatePacket("console.trace()"),
     74      publicLog,
     75      getPrivatePacket("XHR POST request")
     76    );
     77 
     78    const postId = "pid1";
     79    const getId = "gid1";
     80 
     81    // Add messages in the store to make sure that update to private requests are
     82    // removed from the queue.
     83    ncow
     84      .getStore()
     85      .dispatch(
     86        messagesAdd([
     87          stubPackets.get("GET request"),
     88          { ...getPrivatePacket("XHR GET request"), actor: getId },
     89        ])
     90      );
     91 
     92    // Add packet to the message queue to make sure that update to private requests are
     93    // removed from the queue.
     94    ncow.queuedMessageAdds.push({
     95      ...getPrivatePacket("XHR POST request"),
     96      actor: postId,
     97    });
     98 
     99    const publicNetworkUpdate = stubPackets.get("GET request update");
    100    ncow.queuedMessageUpdates.push(
    101      publicNetworkUpdate,
    102      {
    103        ...getPrivatePacket("XHR GET request update"),
    104        actor: getId,
    105      },
    106      {
    107        ...getPrivatePacket("XHR POST request update"),
    108        actor: postId,
    109      }
    110    );
    111 
    112    ncow.dispatchPrivateMessagesClear();
    113 
    114    expect(ncow.queuedMessageUpdates.length).toBe(1);
    115    expect(ncow.queuedMessageUpdates).toEqual([publicNetworkUpdate]);
    116  });
    117 
    118  it("removes private packets from network request queue on dispatchPrivateMessagesClear", async () => {
    119    const ncow = await getWebConsoleWrapper();
    120 
    121    const packet1 = clonePacket(stubPackets.get("GET request"));
    122    const packet2 = clonePacket(getPrivatePacket("XHR GET request"));
    123    const packet3 = clonePacket(getPrivatePacket("XHR POST request"));
    124 
    125    // We need to reassign the timeStamp of the packet to guarantee the order.
    126    packet1.timeStamp = packet1.timeStamp + 1;
    127    packet2.timeStamp = packet2.timeStamp + 2;
    128    packet3.timeStamp = packet3.timeStamp + 3;
    129 
    130    ncow.getStore().dispatch(messagesAdd([packet1, packet2, packet3]));
    131 
    132    const state = ncow.getStore().getState();
    133    const publicId = getMessageAt(state, 0).id;
    134    const privateXhrGetId = getMessageAt(state, 1).id;
    135    const privateXhrPostId = getMessageAt(state, 2).id;
    136    ncow.queuedRequestUpdates.push(
    137      { id: publicId },
    138      { id: privateXhrGetId },
    139      { id: privateXhrPostId }
    140    );
    141    // ncow.queuedRequestUpdates.push({fakePacket: "request-update"});
    142 
    143    ncow.dispatchPrivateMessagesClear();
    144 
    145    expect(ncow.queuedRequestUpdates.length).toBe(1);
    146    expect(ncow.queuedRequestUpdates).toEqual([{ id: publicId }]);
    147  });
    148 });