tor-browser

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

test_permmanager_matches.js (4216B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 var attrs;
      5 
      6 function matches_always(perm, principals) {
      7  principals.forEach(principal => {
      8    Assert.ok(
      9      perm.matches(principal, true),
     10      "perm: " + perm.principal.origin + ", princ: " + principal.origin
     11    );
     12    Assert.ok(
     13      perm.matches(principal, false),
     14      "perm: " + perm.principal.origin + ", princ: " + principal.origin
     15    );
     16  });
     17 }
     18 
     19 function matches_weak(perm, principals) {
     20  principals.forEach(principal => {
     21    Assert.ok(
     22      !perm.matches(principal, true),
     23      "perm: " + perm.principal.origin + ", princ: " + principal.origin
     24    );
     25    Assert.ok(
     26      perm.matches(principal, false),
     27      "perm: " + perm.principal.origin + ", princ: " + principal.origin
     28    );
     29  });
     30 }
     31 
     32 function matches_never(perm, principals) {
     33  principals.forEach(principal => {
     34    Assert.ok(
     35      !perm.matches(principal, true),
     36      "perm: " + perm.principal.origin + ", princ: " + principal.origin
     37    );
     38    Assert.ok(
     39      !perm.matches(principal, false),
     40      "perm: " + perm.principal.origin + ", princ: " + principal.origin
     41    );
     42  });
     43 }
     44 
     45 function run_test() {
     46  // initialize the permission manager service
     47  let pm = Services.perms;
     48 
     49  let secMan = Services.scriptSecurityManager;
     50 
     51  // Add some permissions
     52  let uri0 = NetUtil.newURI("http://google.com/search?q=foo#hashtag");
     53  let uri1 = NetUtil.newURI("http://hangouts.google.com/subdir");
     54  let uri2 = NetUtil.newURI("http://google.org/");
     55  let uri3 = NetUtil.newURI("https://google.com/some/random/subdirectory");
     56  let uri4 = NetUtil.newURI("https://hangouts.google.com/#!/hangout");
     57  let uri5 = NetUtil.newURI("http://google.com:8096/");
     58 
     59  let uri0_n = secMan.createContentPrincipal(uri0, {});
     60  let uri1_n = secMan.createContentPrincipal(uri1, {});
     61  let uri2_n = secMan.createContentPrincipal(uri2, {});
     62  let uri3_n = secMan.createContentPrincipal(uri3, {});
     63  let uri4_n = secMan.createContentPrincipal(uri4, {});
     64  let uri5_n = secMan.createContentPrincipal(uri5, {});
     65 
     66  attrs = { userContextId: 1 };
     67  let uri0_1 = secMan.createContentPrincipal(uri0, attrs);
     68  let uri1_1 = secMan.createContentPrincipal(uri1, attrs);
     69  let uri2_1 = secMan.createContentPrincipal(uri2, attrs);
     70  let uri3_1 = secMan.createContentPrincipal(uri3, attrs);
     71  let uri4_1 = secMan.createContentPrincipal(uri4, attrs);
     72  let uri5_1 = secMan.createContentPrincipal(uri5, attrs);
     73 
     74  attrs = { firstPartyDomain: "cnn.com" };
     75  let uri0_cnn = secMan.createContentPrincipal(uri0, attrs);
     76  let uri1_cnn = secMan.createContentPrincipal(uri1, attrs);
     77  let uri2_cnn = secMan.createContentPrincipal(uri2, attrs);
     78  let uri3_cnn = secMan.createContentPrincipal(uri3, attrs);
     79  let uri4_cnn = secMan.createContentPrincipal(uri4, attrs);
     80  let uri5_cnn = secMan.createContentPrincipal(uri5, attrs);
     81 
     82  pm.addFromPrincipal(uri0_n, "test/matches", pm.ALLOW_ACTION);
     83  let perm_n = pm.getPermissionObject(uri0_n, "test/matches", true);
     84  pm.addFromPrincipal(uri0_1, "test/matches", pm.ALLOW_ACTION);
     85  let perm_1 = pm.getPermissionObject(uri0_n, "test/matches", true);
     86  pm.addFromPrincipal(uri0_cnn, "test/matches", pm.ALLOW_ACTION);
     87  let perm_cnn = pm.getPermissionObject(uri0_n, "test/matches", true);
     88 
     89  matches_always(perm_n, [uri0_n, uri0_1]);
     90  matches_weak(perm_n, [uri1_n, uri1_1]);
     91  matches_never(perm_n, [
     92    uri2_n,
     93    uri3_n,
     94    uri4_n,
     95    uri5_n,
     96    uri2_1,
     97    uri3_1,
     98    uri4_1,
     99    uri5_1,
    100    uri0_cnn,
    101    uri1_cnn,
    102    uri2_cnn,
    103    uri3_cnn,
    104    uri4_cnn,
    105    uri5_cnn,
    106  ]);
    107 
    108  matches_always(perm_1, [uri0_n, uri0_1]);
    109  matches_weak(perm_1, [uri1_n, uri1_1]);
    110  matches_never(perm_1, [
    111    uri2_n,
    112    uri3_n,
    113    uri4_n,
    114    uri5_n,
    115    uri2_1,
    116    uri3_1,
    117    uri4_1,
    118    uri5_1,
    119    uri0_cnn,
    120    uri1_cnn,
    121    uri2_cnn,
    122    uri3_cnn,
    123    uri4_cnn,
    124    uri5_cnn,
    125  ]);
    126 
    127  matches_always(perm_cnn, [uri0_n, uri0_1]);
    128  matches_weak(perm_cnn, [uri1_n, uri1_1]);
    129  matches_never(perm_cnn, [
    130    uri2_n,
    131    uri3_n,
    132    uri4_n,
    133    uri5_n,
    134    uri2_1,
    135    uri3_1,
    136    uri4_1,
    137    uri5_1,
    138    uri0_cnn,
    139    uri1_cnn,
    140    uri2_cnn,
    141    uri3_cnn,
    142    uri4_cnn,
    143    uri5_cnn,
    144  ]);
    145 
    146  // Clean up!
    147  pm.removeAll();
    148 }