tor-browser

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

test_sss_readstate.js (3950B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 "use strict";
      5 
      6 // The purpose of this test is to create a site security service state file
      7 // and see that the site security service reads it properly.
      8 
      9 function run_test() {
     10  let stateFile = do_get_profile();
     11  stateFile.append(SSS_STATE_FILE_NAME);
     12  // Assuming we're working with a clean slate, the file shouldn't exist
     13  // until we create it.
     14  ok(!stateFile.exists());
     15  let outputStream = FileUtils.openFileOutputStream(stateFile);
     16  let now = Date.now();
     17  let keyValuePairs = [
     18    { key: "expired.example.com", value: `${now - 100000},1,0` },
     19    { key: "notexpired.example.com", value: `${now + 100000},1,0` },
     20    // This overrides an entry on the preload list.
     21    { key: "includesubdomains.preloaded.test", value: `${now + 100000},1,0` },
     22    { key: "incsubdomain.example.com", value: `${now + 100000},1,1` },
     23    // This overrides an entry on the preload list.
     24    { key: "includesubdomains2.preloaded.test", value: "0,2,0" },
     25  ];
     26  for (let keyValuePair of keyValuePairs) {
     27    append_line_to_data_storage_file(
     28      outputStream,
     29      1,
     30      1,
     31      keyValuePair.key,
     32      keyValuePair.value
     33    );
     34  }
     35  // Append a line with a bad checksum.
     36  append_line_to_data_storage_file(
     37    outputStream,
     38    1,
     39    1,
     40    "badchecksum.example.com",
     41    `${now + 100000},1,0`,
     42    24,
     43    true
     44  );
     45  outputStream.close();
     46  let siteSecurityService = Cc["@mozilla.org/ssservice;1"].getService(
     47    Ci.nsISiteSecurityService
     48  );
     49  notEqual(siteSecurityService, null);
     50 
     51  // The backing data storage will block until the background task that reads
     52  // the backing file has finished.
     53  ok(
     54    !siteSecurityService.isSecureURI(
     55      Services.io.newURI("https://expired.example.com")
     56    )
     57  );
     58  ok(
     59    siteSecurityService.isSecureURI(
     60      Services.io.newURI("https://notexpired.example.com")
     61    )
     62  );
     63  ok(
     64    siteSecurityService.isSecureURI(
     65      Services.io.newURI("https://includesubdomains.preloaded.test")
     66    )
     67  );
     68  ok(
     69    !siteSecurityService.isSecureURI(
     70      Services.io.newURI("https://sub.includesubdomains.preloaded.test")
     71    )
     72  );
     73  ok(
     74    siteSecurityService.isSecureURI(
     75      Services.io.newURI("https://incsubdomain.example.com")
     76    )
     77  );
     78  ok(
     79    siteSecurityService.isSecureURI(
     80      Services.io.newURI("https://sub.incsubdomain.example.com")
     81    )
     82  );
     83  ok(
     84    !siteSecurityService.isSecureURI(
     85      Services.io.newURI("https://includesubdomains2.preloaded.test")
     86    )
     87  );
     88  ok(
     89    !siteSecurityService.isSecureURI(
     90      Services.io.newURI("https://sub.includesubdomains2.preloaded.test")
     91    )
     92  );
     93 
     94  // Clearing the data should make everything go back to default.
     95  siteSecurityService.clearAll();
     96  ok(
     97    !siteSecurityService.isSecureURI(
     98      Services.io.newURI("https://expired.example.com")
     99    )
    100  );
    101  ok(
    102    !siteSecurityService.isSecureURI(
    103      Services.io.newURI("https://notexpired.example.com")
    104    )
    105  );
    106  ok(
    107    siteSecurityService.isSecureURI(
    108      Services.io.newURI("https://includesubdomains.preloaded.test")
    109    )
    110  );
    111  ok(
    112    siteSecurityService.isSecureURI(
    113      Services.io.newURI("https://sub.includesubdomains.preloaded.test")
    114    )
    115  );
    116  ok(
    117    !siteSecurityService.isSecureURI(
    118      Services.io.newURI("https://incsubdomain.example.com")
    119    )
    120  );
    121  ok(
    122    !siteSecurityService.isSecureURI(
    123      Services.io.newURI("https://sub.incsubdomain.example.com")
    124    )
    125  );
    126  ok(
    127    siteSecurityService.isSecureURI(
    128      Services.io.newURI("https://includesubdomains2.preloaded.test")
    129    )
    130  );
    131  ok(
    132    siteSecurityService.isSecureURI(
    133      Services.io.newURI("https://sub.includesubdomains2.preloaded.test")
    134    )
    135  );
    136  ok(
    137    !siteSecurityService.isSecureURI(
    138      Services.io.newURI("https://badchecksum.example.com")
    139    )
    140  );
    141 }