tor-browser

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

test_network_post.html (4645B)


      1 <!DOCTYPE HTML>
      2 <html lang="en">
      3 <head>
      4  <meta charset="utf8">
      5  <title>Test for the network actor (POST 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 (POST 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 POST 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.testXhrPost();
     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 
     55  ok(!!requestHeadersPacket.headers.length, "request headers > 0");
     56  ok(requestHeadersPacket.headersSize > 0, "request headersSize > 0");
     57  ok(!!requestHeadersPacket.rawHeaders.length, "request rawHeaders available");
     58 
     59  checkHeadersOrCookies(requestHeadersPacket.headers, {
     60    Referer: /network_requests_iframe\.html/,
     61    Cookie: /bug768096/,
     62  });
     63 
     64  checkRawHeaders(requestHeadersPacket.rawHeaders, {
     65    Referer: /network_requests_iframe\.html/,
     66    Cookie: /bug768096/,
     67  });
     68 
     69  info("checking request cookies");
     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 requestPostDataPacket = await client.request({ to: netActor, type: "getRequestPostData" });
     81 
     82  checkObject(requestPostDataPacket, {
     83    postData: {
     84      text: /^Hello world! foobaz barr.+foobaz barr$/,
     85    },
     86    postDataDiscarded: false,
     87  });
     88 
     89  is(requestPostDataPacket.postData.text.length, 552, "postData text length");
     90 
     91  info("checking response headers");
     92  const responseHeadersPacket = await client.request({ to: netActor, type: "getResponseHeaders" });
     93  ok(!!responseHeadersPacket.headers.length, "response headers > 0");
     94  ok(responseHeadersPacket.headersSize > 0, "response headersSize > 0");
     95  ok(!!responseHeadersPacket.rawHeaders, "response rawHeaders available");
     96 
     97  checkHeadersOrCookies(responseHeadersPacket.headers, {
     98    "content-type": /^application\/(json|octet-stream)$/,
     99    "content-length": /^\d+$/,
    100  });
    101 
    102  checkRawHeaders(responseHeadersPacket.rawHeaders, {
    103    "content-type": /^application\/(json|octet-stream)$/,
    104    "content-length": /^\d+$/,
    105  });
    106 
    107  info("checking response cookies");
    108  const responseCookiesPacket = await client.request({ to: netActor, type: "getResponseCookies" });
    109  is(responseCookiesPacket.cookies.length, 0, "response cookies length");
    110 
    111  info("checking response content");
    112  const responseContentPacket = await client.request({ to: netActor, type: "getResponseContent" });
    113  checkObject(responseContentPacket, {
    114    content: {
    115      text: /"test JSON data"/,
    116    },
    117    contentDiscarded: false,
    118  });
    119 
    120  info("checking event timings");
    121  const eventTimingsPacket = await client.request({ to: netActor, type: "getEventTimings" });
    122  checkObject(eventTimingsPacket, {
    123    timings: {
    124      blocked: /^-1|\d+$/,
    125      dns: /^-1|\d+$/,
    126      connect: /^-1|\d+$/,
    127      send: /^-1|\d+$/,
    128      wait: /^-1|\d+$/,
    129      receive: /^-1|\d+$/,
    130    },
    131    totalTime: /^\d+$/,
    132  });
    133 
    134  await commands.destroy();
    135  SpecialPowers.clearUserPref("network.cookie.sameSite.laxByDefault");
    136  SimpleTest.finish();
    137 }
    138 
    139 addEventListener("load", startTest, { once: true });
    140 </script>
    141 </body>
    142 </html>