tor-browser

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

cookies.any.js (2347B)


      1 // META: global=window,worker
      2 // META: script=../resources/utils.js
      3 
      4 function cookies(desc, credentials1, credentials2 ,cookies) {
      5  var url = RESOURCES_DIR + "top.txt"
      6  var urlParameters = "";
      7  var urlCleanParameters = "";
      8  if (cookies) {
      9    urlParameters +="?pipe=header(Set-Cookie,";
     10    urlParameters += cookies.join(",True)|header(Set-Cookie,") +  ",True)";
     11    urlCleanParameters +="?pipe=header(Set-Cookie,";
     12    urlCleanParameters +=  cookies.join("%3B%20max-age=0,True)|header(Set-Cookie,") +  "%3B%20max-age=0,True)";
     13  }
     14 
     15  var requestInit = {"credentials": credentials1}
     16  promise_test(function(test){
     17    var requestInit = {"credentials": credentials1}
     18    return fetch(url + urlParameters, requestInit).then(function(resp) {
     19      assert_equals(resp.status, 200, "HTTP status is 200");
     20      assert_equals(resp.type , "basic", "Response's type is basic");
     21      //check cookies sent
     22      return fetch(RESOURCES_DIR + "inspect-headers.py?headers=cookie" , {"credentials": credentials2});
     23    }).then(function(resp) {
     24      assert_equals(resp.status, 200, "HTTP status is 200");
     25      assert_equals(resp.type , "basic", "Response's type is basic");
     26      assert_false(resp.headers.has("Cookie") , "Cookie header is not exposed in response");
     27      if (credentials1 != "omit" && credentials2 != "omit") {
     28        assert_equals(resp.headers.get("x-request-cookie") , cookies.join("; "), "Request include cookie(s)");
     29      }
     30      else {
     31        assert_false(resp.headers.has("x-request-cookie") , "Request does not have cookie(s)");
     32      }
     33      //clean cookies
     34      return fetch(url + urlCleanParameters, {"credentials": "include"});
     35    }).catch(function(e) {
     36      return fetch(url + urlCleanParameters, {"credentials": "include"}).then(function() {
     37         return Promise.reject(e);
     38      });
     39    });
     40  }, desc);
     41 }
     42 
     43 cookies("Include mode: 1 cookie", "include", "include", ["a=1"]);
     44 cookies("Include mode: 2 cookies", "include", "include", ["b=2", "c=3"]);
     45 cookies("Omit mode: discard cookies", "omit", "omit", ["d=4"]);
     46 cookies("Omit mode: no cookie is stored", "omit", "include", ["e=5"]);
     47 cookies("Omit mode: no cookie is sent", "include", "omit", ["f=6"]);
     48 cookies("Same-origin mode: 1 cookie", "same-origin", "same-origin", ["a=1"]);
     49 cookies("Same-origin mode: 2 cookies", "same-origin", "same-origin", ["b=2", "c=3"]);