tor-browser

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

header-values.any.js (1820B)


      1 // META: title=Header value test
      2 // META: global=window,worker
      3 // META: timeout=long
      4 
      5 "use strict";
      6 
      7 // Invalid values
      8 [0, 0x0A, 0x0D].forEach(val => {
      9  val = "x" + String.fromCharCode(val) + "x"
     10 
     11  // XMLHttpRequest is not available in service workers
     12  if (!self.GLOBAL.isWorker()) {
     13    test(() => {
     14      let xhr = new XMLHttpRequest()
     15      xhr.open("POST", "/")
     16      assert_throws_dom("SyntaxError", () => xhr.setRequestHeader("value-test", val))
     17    }, "XMLHttpRequest with value " + encodeURI(val) + " needs to throw")
     18  }
     19 
     20  promise_test(t => promise_rejects_js(t, TypeError, fetch("/", { headers: {"value-test": val} })), "fetch() with value " + encodeURI(val) + " needs to throw")
     21 })
     22 
     23 // Valid values
     24 let headerValues =[]
     25 for(let i = 0; i < 0x100; i++) {
     26  if(i === 0 || i === 0x0A || i === 0x0D) {
     27    continue
     28  }
     29  headerValues.push("x" + String.fromCharCode(i) + "x")
     30 }
     31 var url = "../resources/inspect-headers.py?headers="
     32 headerValues.forEach((_, i) => {
     33  url += "val" + i + "|"
     34 })
     35 
     36 // XMLHttpRequest is not available in service workers
     37 if (!self.GLOBAL.isWorker()) {
     38  async_test((t) => {
     39    let xhr = new XMLHttpRequest()
     40    xhr.open("POST", url)
     41    headerValues.forEach((val, i) => {
     42      xhr.setRequestHeader("val" + i, val)
     43    })
     44    xhr.onload = t.step_func_done(() => {
     45      headerValues.forEach((val, i) => {
     46        assert_equals(xhr.getResponseHeader("x-request-val" + i), val)
     47      })
     48    })
     49    xhr.send()
     50  }, "XMLHttpRequest with all valid values")
     51 }
     52 
     53 promise_test((t) => {
     54  const headers = new Headers
     55  headerValues.forEach((val, i) => {
     56    headers.append("val" + i, val)
     57  })
     58  return fetch(url, { headers }).then((res) => {
     59    headerValues.forEach((val, i) => {
     60      assert_equals(res.headers.get("x-request-val" + i), val)
     61    })
     62  })
     63 }, "fetch() with all valid values")