tor-browser

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

headers-casing.any.js (2033B)


      1 // META: title=Headers case management
      2 // META: global=window,worker
      3 
      4 "use strict";
      5 
      6 var headerDictCase = {"UPPERCASE": "value1",
      7                      "lowercase": "value2",
      8                      "mixedCase": "value3",
      9                      "Content-TYPE": "value4"
     10                      };
     11 
     12 function checkHeadersCase(originalName, headersToCheck, expectedDict) {
     13  var lowCaseName = originalName.toLowerCase();
     14  var upCaseName = originalName.toUpperCase();
     15  var expectedValue = expectedDict[originalName];
     16  assert_equals(headersToCheck.get(originalName), expectedValue,
     17      "name: " + originalName + " has value: " + expectedValue);
     18  assert_equals(headersToCheck.get(lowCaseName), expectedValue,
     19      "name: " + lowCaseName + " has value: " + expectedValue);
     20  assert_equals(headersToCheck.get(upCaseName), expectedValue,
     21      "name: " + upCaseName + " has value: " + expectedValue);
     22 }
     23 
     24 test(function() {
     25  var headers = new Headers(headerDictCase);
     26  for (const name in headerDictCase)
     27    checkHeadersCase(name, headers, headerDictCase)
     28 }, "Create headers, names use characters with different case");
     29 
     30 test(function() {
     31  var headers = new Headers();
     32  for (const name in headerDictCase) {
     33    headers.append(name, headerDictCase[name]);
     34    checkHeadersCase(name, headers, headerDictCase);
     35  }
     36 }, "Check append method, names use characters with different case");
     37 
     38 test(function() {
     39  var headers = new Headers();
     40  for (const name in headerDictCase) {
     41    headers.set(name, headerDictCase[name]);
     42    checkHeadersCase(name, headers, headerDictCase);
     43  }
     44 }, "Check set method, names use characters with different case");
     45 
     46 test(function() {
     47  var headers = new Headers();
     48  for (const name in headerDictCase)
     49    headers.set(name, headerDictCase[name]);
     50  for (const name in headerDictCase)
     51    headers.delete(name.toLowerCase());
     52  for (const name in headerDictCase)
     53    assert_false(headers.has(name), "header " + name + " should have been deleted");
     54 }, "Check delete method, names use characters with different case");