tor-browser

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

test_network_get.html (4664B)


      1 <!DOCTYPE HTML>
      2 <html lang="en">
      3 <head>
      4  <meta charset="utf8">
      5  <title>Test for the network actor (GET request)</title>
      6  <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
      7  <script type="text/javascript" src="common.js"></script>
      8  <!-- Any copyright is dedicated to the Public Domain.
      9     - http://creativecommons.org/publicdomain/zero/1.0/ -->
     10 </head>
     11 <body>
     12 <p>Test for the network actor (GET request)</p>
     13 
     14 <iframe src="http://example.com/chrome/devtools/shared/webconsole/test/chrome/network_requests_iframe.html"></iframe>
     15 
     16 <script class="testbody" type="text/javascript">
     17 "use strict";
     18 
     19 SimpleTest.waitForExplicitFinish();
     20 
     21 async function startTest()
     22 {
     23  await SpecialPowers.pushPrefEnv({
     24    'set': [
     25      // Bug 1617611: Fix all the tests broken by "cookies SameSite=lax by default"
     26      ['network.cookie.sameSite.laxByDefault', false],
     27    ]
     28  });
     29 
     30  const commands = await createCommandsForTab();
     31  const resourceCommand = commands.resourceCommand;
     32 
     33  info("test network GET request");
     34  const resource = await new Promise(resolve => {
     35    resourceCommand
     36      .watchResources([resourceCommand.TYPES.NETWORK_EVENT], {
     37        onAvailable: () => {},
     38        onUpdated: resourceUpdate => {
     39          resolve(resourceUpdate[0].resource);
     40        },
     41      })
     42      .then(() => {
     43        // Spawn the network request after we started watching
     44          const iframe = document.querySelector("iframe").contentWindow;
     45          iframe.wrappedJSObject.testXhrGet(null, "data.json?" + Date.now());
     46      });
     47  });
     48 
     49  const { client } = commands;
     50  const netActor = resource.actor;
     51 
     52  info("checking request headers");
     53  const requestHeadersPacket = await client.request({ to: netActor, type: "getRequestHeaders" });
     54  ok(!!requestHeadersPacket.headers.length, `request headers > 0 (${requestHeadersPacket.headers.length})`);
     55  ok(requestHeadersPacket.headersSize > 0, `request headersSize > 0 (${requestHeadersPacket.headersSize})`);
     56  ok(!!requestHeadersPacket.rawHeaders, "request rawHeaders available");
     57 
     58  checkHeadersOrCookies(requestHeadersPacket.headers, {
     59    Referer: /network_requests_iframe\.html/,
     60    Cookie: /bug768096/,
     61  });
     62 
     63  checkRawHeaders(requestHeadersPacket.rawHeaders, {
     64    Referer: /network_requests_iframe\.html/,
     65    Cookie: /bug768096/,
     66  });
     67 
     68  info("checking request cookies");
     69 
     70  const requestCookiesPacket = await client.request({ to: netActor, type: "getRequestCookies" });
     71  is(requestCookiesPacket.cookies.length, 3, "request cookies length");
     72 
     73  checkHeadersOrCookies(requestCookiesPacket.cookies, {
     74    foobar: "fooval",
     75    omgfoo: "bug768096",
     76    badcookie: "bug826798=st3fan",
     77  });
     78 
     79  info("checking request POST data");
     80  const postDataPacket = await client.request({ to: netActor, type: "getRequestPostData" });
     81  ok(!postDataPacket.postData.text, "no request POST data");
     82  ok(!postDataPacket.postDataDiscarded, "request POST data was not discarded");
     83 
     84  info("checking response headers");
     85  const responseHeaderPacket = await client.request({ to: netActor, type: "getResponseHeaders" });
     86 
     87  ok(!!responseHeaderPacket.headers.length, "response headers > 0");
     88  ok(responseHeaderPacket.headersSize > 0, "response headersSize > 0");
     89  ok(!!responseHeaderPacket.rawHeaders, "response rawHeaders available");
     90 
     91  checkHeadersOrCookies(responseHeaderPacket.headers, {
     92    "content-type": /^application\/(json|octet-stream)$/,
     93    "content-length": /^\d+$/,
     94  });
     95 
     96  checkRawHeaders(responseHeaderPacket.rawHeaders, {
     97    "content-type": /^application\/(json|octet-stream)$/,
     98    "content-length": /^\d+$/,
     99  });
    100 
    101  info("checking response cookies");
    102  const responseCookiesPacket = await client.request({ to: netActor, type: "getResponseCookies" });
    103  is(responseCookiesPacket.cookies.length, 0, "response cookies length");
    104 
    105  info("checking response content");
    106  const responseContentPacket = await client.request({ to: netActor, type: "getResponseContent" });
    107  ok(responseContentPacket.content.text, "response content text");
    108  ok(!responseContentPacket.contentDiscarded, "response content was not discarded");
    109 
    110  info("checking event timings");
    111  const eventTimingPacket = await client.request({ to: netActor, type: "getEventTimings" });
    112  checkObject(eventTimingPacket, {
    113    timings: {
    114      blocked: /^-1|\d+$/,
    115      dns: /^-1|\d+$/,
    116      connect: /^-1|\d+$/,
    117      send: /^-1|\d+$/,
    118      wait: /^-1|\d+$/,
    119      receive: /^-1|\d+$/,
    120    },
    121    totalTime: /^\d+$/,
    122  });
    123 
    124  await commands.destroy();
    125  SpecialPowers.clearUserPref("network.cookie.sameSite.laxByDefault");
    126  SimpleTest.finish();
    127 }
    128 
    129 addEventListener("load", startTest, { once: true});
    130 </script>
    131 </body>
    132 </html>