tor-browser

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

test_websocket.html (2074B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <title>Bug 1628605: Test Sec-Fetch-* header for websockets</title>
      5  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      6  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
      7 </head>
      8 <body>
      9 <script type="application/javascript">
     10 
     11 SimpleTest.waitForExplicitFinish();
     12 
     13 let testsSucceeded = 0;
     14 
     15 function checkTestsDone() {
     16  testsSucceeded++;
     17  if (testsSucceeded == 2) {
     18    SimpleTest.finish();
     19  }
     20 }
     21 
     22 var script = SpecialPowers.loadChromeScript(() => {
     23  /* eslint-env mozilla/chrome-script */
     24  Services.obs.addObserver(function onExamResp(subject) {
     25    let channel = subject.QueryInterface(Ci.nsIHttpChannel);
     26    if (!channel.URI.spec.startsWith("https://example.com/tests/dom/security/test/sec-fetch/file_websocket")) {
     27      return;
     28    }
     29 
     30    // Sec-Fetch-* Headers should be present for Dest, Mode, Site
     31    try {
     32      let secFetchDest = channel.getRequestHeader("Sec-Fetch-Dest");
     33      is(secFetchDest, "empty", "testing sec-fetch-dest");
     34 
     35      let secFetchMode = channel.getRequestHeader("Sec-Fetch-Mode");
     36      is(secFetchMode, "websocket", "testing sec-fetch-mode");
     37 
     38      let secFetchSite = channel.getRequestHeader("Sec-Fetch-Site");
     39      is(secFetchSite, "cross-site", "testing sec-fetch-site");
     40    }
     41    catch (e) {
     42      ok(false, "testing sec-fetch-*");
     43    }
     44 
     45    // Sec-Fetch-User should not be present
     46    try {
     47      channel.getRequestHeader("Sec-Fetch-User");
     48      ok(false, "testing sec-fetch-user");
     49    }
     50    catch (e) {
     51      ok(true, "testing sec-fetch-user");
     52    }
     53    Services.obs.removeObserver(onExamResp, "http-on-stop-request");
     54 
     55    sendAsyncMessage("test-end");
     56  }, "http-on-stop-request");
     57 });
     58 
     59 script.addMessageListener("test-end", () => {
     60  checkTestsDone();
     61 });
     62 
     63 var wssSocket = new WebSocket("wss://example.com/tests/dom/security/test/sec-fetch/file_websocket");
     64 wssSocket.onopen = function() {
     65  ok(true, "sanity: wssSocket onopen");
     66  checkTestsDone();
     67 };
     68 wssSocket.onerror = function() {
     69  ok(false, "sanity: wssSocket onerror");
     70 };
     71 
     72 </script>
     73 </body>
     74 </html>