tor-browser

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

headers-errors.any.js (3242B)


      1 // META: title=Headers errors
      2 // META: global=window,worker
      3 
      4 "use strict";
      5 
      6 test(function() {
      7  assert_throws_js(TypeError, function() { new Headers([["name"]]); });
      8 }, "Create headers giving an array having one string as init argument");
      9 
     10 test(function() {
     11  assert_throws_js(TypeError, function() { new Headers([["invalid", "invalidValue1", "invalidValue2"]]); });
     12 }, "Create headers giving an array having three strings as init argument");
     13 
     14 test(function() {
     15  assert_throws_js(TypeError, function() { new Headers([["invalidĀ", "Value1"]]); });
     16 }, "Create headers giving bad header name as init argument");
     17 
     18 test(function() {
     19  assert_throws_js(TypeError, function() { new Headers([["name", "invalidValueĀ"]]); });
     20 }, "Create headers giving bad header value as init argument");
     21 
     22 var badNames = ["invalidĀ", {}];
     23 var badValues = ["invalidĀ"];
     24 
     25 badNames.forEach(function(name) {
     26  test(function() {
     27    var headers = new Headers();
     28    assert_throws_js(TypeError, function() { headers.get(name); });
     29  }, "Check headers get with an invalid name " + name);
     30 });
     31 
     32 badNames.forEach(function(name) {
     33  test(function() {
     34    var headers = new Headers();
     35    assert_throws_js(TypeError, function() { headers.delete(name); });
     36  }, "Check headers delete with an invalid name " + name);
     37 });
     38 
     39 badNames.forEach(function(name) {
     40  test(function() {
     41    var headers = new Headers();
     42    assert_throws_js(TypeError, function() { headers.has(name); });
     43  }, "Check headers has with an invalid name " + name);
     44 });
     45 
     46 badNames.forEach(function(name) {
     47  test(function() {
     48    var headers = new Headers();
     49    assert_throws_js(TypeError, function() { headers.set(name, "Value1"); });
     50  }, "Check headers set with an invalid name " + name);
     51 });
     52 
     53 badValues.forEach(function(value) {
     54  test(function() {
     55    var headers = new Headers();
     56    assert_throws_js(TypeError, function() { headers.set("name", value); });
     57  }, "Check headers set with an invalid value " + value);
     58 });
     59 
     60 badNames.forEach(function(name) {
     61  test(function() {
     62    var headers = new Headers();
     63    assert_throws_js(TypeError, function() { headers.append("invalidĀ", "Value1"); });
     64  }, "Check headers append with an invalid name " + name);
     65 });
     66 
     67 badValues.forEach(function(value) {
     68  test(function() {
     69    var headers = new Headers();
     70    assert_throws_js(TypeError, function() { headers.append("name", value); });
     71  }, "Check headers append with an invalid value " + value);
     72 });
     73 
     74 test(function() {
     75  var headers = new Headers([["name", "value"]]);
     76  assert_throws_js(TypeError, function() { headers.forEach(); });
     77  assert_throws_js(TypeError, function() { headers.forEach(undefined); });
     78  assert_throws_js(TypeError, function() { headers.forEach(1); });
     79 }, "Headers forEach throws if argument is not callable");
     80 
     81 test(function() {
     82  var headers = new Headers([["name1", "value1"], ["name2", "value2"], ["name3", "value3"]]);
     83  var counter = 0;
     84  try {
     85      headers.forEach(function(value, name) {
     86          counter++;
     87          if (name == "name2")
     88                throw "error";
     89      });
     90  } catch (e) {
     91      assert_equals(counter, 2);
     92      assert_equals(e, "error");
     93      return;
     94  }
     95  assert_unreached();
     96 }, "Headers forEach loop should stop if callback is throwing exception");