tor-browser

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

test_documentcookies_maxage.html (4790B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 -->
      5 <head>
      6  <title>Test for document.cookie max-age pref</title>
      7  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      8  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
      9 
     10 <script type="text/javascript">
     11 const kTwoDays = 2 * 24 * 60 * 60;
     12 const kSevenDays = 7 * 24 * 60 * 60;
     13 const kInTwoDays = (new Date().getTime() + kTwoDays * 1000);
     14 const kInSevenDays = (new Date().getTime() + kSevenDays * 1000);
     15 const kScriptURL = SimpleTest.getTestFileURL("file_documentcookie_maxage_chromescript.js");
     16 
     17 let gScript;
     18 
     19 function getDateInTwoDays()
     20 {
     21  let date2 = new Date(kInTwoDays);
     22  let days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
     23  let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct",
     24                "Nov", "Dec"];
     25  let day = date2.getUTCDate();
     26  if (day < 10) {
     27    day = "0" + day;
     28  }
     29  let month = months[date2.getUTCMonth()];
     30  let year = date2.getUTCFullYear();
     31  let hour = date2.getUTCHours();
     32  if (hour < 10) {
     33    hour = "0" + hour;
     34  }
     35  let minute = date2.getUTCMinutes();
     36  if (minute < 10) {
     37    minute = "0" + minute;
     38  }
     39  let second = date2.getUTCSeconds();
     40  if (second < 10) {
     41    second = "0" + second;
     42  }
     43  return days[date2.getUTCDay()] + ", " + day + "-" + month + "-" +
     44         year + " " + hour + ":" + minute + ":" + second + " GMT";
     45 }
     46 
     47 function dotest()
     48 {
     49  SimpleTest.waitForExplicitFinish();
     50  SpecialPowers.pushPrefEnv({
     51    set: [["network.cookie.maxageCap", kSevenDays]],
     52  }).then(_ => {
     53    gScript = SpecialPowers.loadChromeScript(kScriptURL);
     54 
     55    return new Promise(resolve => {
     56      gScript.addMessageListener("init:return", resolve);
     57      gScript.sendAsyncMessage("init");
     58    });
     59  }).then(_ => {
     60    let date2 = getDateInTwoDays();
     61 
     62    document.cookie = "test1=value1; expires=Fri, 02-Jan-2037 00:00:01 GMT;";
     63    document.cookie = "test2=value2; expires=" + date2 + ";";
     64 
     65    return fetch("subResources.sjs?3");
     66  }).then(_ => {
     67    return fetch("subResources.sjs?4");
     68  }).then(_ => {
     69    return new Promise(resolve => {
     70      gScript.addMessageListener("getCookies:return", resolve);
     71      gScript.sendAsyncMessage("getCookies");
     72    });
     73  }).then(_ => {
     74    for (let cookie of _.cookies) {
     75      switch (cookie.name) {
     76        case "test1": {
     77          is(cookie.value, "value1", "The correct value expected");
     78          let d = new Date(cookie.expires);
     79          let [day, month, year] = [d.getUTCDate(), d.getUTCMonth(), d.getUTCFullYear()];
     80          let d2 = new Date(kInSevenDays);
     81          let [day2, month2, year2] = [d2.getUTCDate(), d2.getUTCMonth(), d2.getUTCFullYear()];
     82          is(day, day2, "Days match");
     83          is(month, month2, "Months match");
     84          is(year, year2, "Years match");
     85        }
     86        break;
     87 
     88      case "test2": {
     89          is(cookie.value, "value2", "The correct value expected");
     90          let d = new Date(cookie.expires);
     91          let [day, month, year] = [d.getUTCDate(), d.getUTCMonth(), d.getUTCFullYear()];
     92          let d2 = new Date(kInTwoDays);
     93          let [day2, month2, year2] = [d2.getUTCDate(), d2.getUTCMonth(), d2.getUTCFullYear()];
     94          is(day, day2, "Days match");
     95          is(month, month2, "Months match");
     96          is(year, year2, "Years match");
     97        }
     98        break;
     99 
    100      case "test3": {
    101          is(cookie.value, "value3", "The correct value expected");
    102          let d = new Date(cookie.expires);
    103          let [day, month, year] = [d.getUTCDate(), d.getUTCMonth(), d.getUTCFullYear()];
    104          let d2 = new Date(kInSevenDays);
    105          let [day2, month2, year2] = [d2.getUTCDate(), d2.getUTCMonth(), d2.getUTCFullYear()];
    106          is(day, day2, "Days match");
    107          is(month, month2, "Months match");
    108          is(year, year2, "Years match");
    109        }
    110        break;
    111 
    112      case "test4": {
    113          is(cookie.value, "value4", "The correct value expected");
    114          let d = new Date(cookie.expires);
    115          let [day, month, year] = [d.getUTCDate(), d.getUTCMonth(), d.getUTCFullYear()];
    116          let d2 = new Date(kInTwoDays);
    117          let [day2, month2, year2] = [d2.getUTCDate(), d2.getUTCMonth(), d2.getUTCFullYear()];
    118          is(day, day2, "Days match");
    119          is(month, month2, "Months match");
    120          is(year, year2, "Years match");
    121        }
    122        break;
    123 
    124      default:
    125        ok(false, "Unexpected cookie found!");
    126        break;
    127      }
    128    }
    129 
    130    return new Promise(resolve => {
    131      gScript.addMessageListener("shutdown:return", resolve);
    132      gScript.sendAsyncMessage("shutdown");
    133    });
    134  }).then(finish);
    135 }
    136 
    137 function finish()
    138 {
    139  SimpleTest.finish();
    140 }
    141 </script>
    142 </head>
    143 <body onload="dotest();">
    144 <p id="display"></p>
    145 <div id="content" style="display: none"></div>
    146 <pre id="test">
    147 </pre>
    148 </body>
    149 </html>