tor-browser

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

test_Session.js (4090B)


      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 file,
      3 * You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 "use strict";
      6 
      7 const { Timeouts } = ChromeUtils.importESModule(
      8  "chrome://remote/content/shared/webdriver/Capabilities.sys.mjs"
      9 );
     10 const { getWebDriverSessionById, WebDriverSession } =
     11  ChromeUtils.importESModule(
     12    "chrome://remote/content/shared/webdriver/Session.sys.mjs"
     13  );
     14 
     15 function createSession(options = {}) {
     16  const { capabilities = {}, connection, isBidi = false } = options;
     17 
     18  const flags = new Set();
     19  if (isBidi) {
     20    flags.add("bidi");
     21  } else {
     22    flags.add("http");
     23  }
     24 
     25  return new WebDriverSession(capabilities, flags, connection);
     26 }
     27 
     28 add_task(function test_WebDriverSession_ctor() {
     29  // Missing WebDriver session flags
     30  Assert.throws(() => new WebDriverSession({}), /TypeError/);
     31 
     32  // Session needs to be either HTTP or BiDi
     33  for (const flags of [[], ["bidi", "http"]]) {
     34    Assert.throws(
     35      () => new WebDriverSession({}, new Set(flags)),
     36      /SessionNotCreatedError:/
     37    );
     38  }
     39 
     40  // Session id and path
     41  let session = createSession();
     42  equal(typeof session.id, "string");
     43  equal(session.path, `/session/${session.id}`);
     44 
     45  // Sets HTTP and BiDi flags correctly.
     46  session = createSession({ isBidi: false });
     47  equal(session.bidi, false);
     48  equal(session.http, true);
     49  session = createSession({ isBidi: true });
     50  equal(session.bidi, true);
     51  equal(session.http, false);
     52 
     53  // Sets capabilities based on session configuration flag.
     54  const capabilities = {
     55    acceptInsecureCerts: true,
     56    unhandledPromptBehavior: "ignore",
     57 
     58    // HTTP only
     59    pageLoadStrategy: "eager",
     60    strictFileInteractability: true,
     61    timeouts: { script: 1000 },
     62  };
     63 
     64  // HTTP session
     65  session = createSession({ capabilities, isBidi: false });
     66  equal(session.acceptInsecureCerts, true);
     67  equal(session.pageLoadStrategy, "eager");
     68  equal(session.strictFileInteractability, true);
     69  equal(session.timeouts.script, 1000);
     70  equal(session.userPromptHandler.toJSON(), "ignore");
     71 
     72  // BiDi session
     73  session = createSession({ capabilities, isBidi: true });
     74  equal(session.acceptInsecureCerts, true);
     75  equal(session.userPromptHandler.toJSON(), "ignore");
     76 
     77  equal(session.pageLoadStrategy, undefined);
     78  equal(session.strictFileInteractability, undefined);
     79  equal(session.timeouts, undefined);
     80 });
     81 
     82 add_task(function test_WebDriverSession_destroy() {
     83  const session = createSession();
     84 
     85  session.destroy();
     86 
     87  // Calling twice doesn't raise error.
     88  session.destroy();
     89 });
     90 
     91 add_task(function test_WebDriverSession_getters() {
     92  const session = createSession();
     93 
     94  equal(
     95    session.a11yChecks,
     96    session.capabilities.get("moz:accessibilityChecks")
     97  );
     98  equal(
     99    session.acceptInsecureCerts,
    100    session.capabilities.get("acceptInsecureCerts")
    101  );
    102  equal(session.pageLoadStrategy, session.capabilities.get("pageLoadStrategy"));
    103  equal(session.proxy, session.capabilities.get("proxy"));
    104  equal(
    105    session.strictFileInteractability,
    106    session.capabilities.get("strictFileInteractability")
    107  );
    108  equal(session.timeouts, session.capabilities.get("timeouts"));
    109  equal(
    110    session.userPromptHandler,
    111    session.capabilities.get("unhandledPromptBehavior")
    112  );
    113 });
    114 
    115 add_task(function test_WebDriverSession_setters() {
    116  const session = createSession();
    117 
    118  const timeouts = new Timeouts();
    119  timeouts.pageLoad = 45;
    120 
    121  session.timeouts = timeouts;
    122  equal(session.timeouts, session.capabilities.get("timeouts"));
    123 });
    124 
    125 add_task(function test_getWebDriverSessionById() {
    126  const session1 = createSession();
    127  const session2 = createSession();
    128 
    129  equal(getWebDriverSessionById(session1.id), session1);
    130  equal(getWebDriverSessionById(session2.id), session2);
    131 
    132  session1.destroy();
    133  equal(getWebDriverSessionById(session1.id), undefined);
    134  equal(getWebDriverSessionById(session2.id), session2);
    135 
    136  session2.destroy();
    137  equal(getWebDriverSessionById(session1.id), undefined);
    138  equal(getWebDriverSessionById(session2.id), undefined);
    139 });