tor-browser

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

navigate.tentative.https.window.js (5686B)


      1 // META: script=/common/subset-tests-by-key.js
      2 // META: script=/common/dispatcher/dispatcher.js
      3 // META: script=/common/utils.js
      4 // META: script=resources/support.sub.js
      5 // META: timeout=long
      6 // META: variant=?include=from-loopback
      7 // META: variant=?include=from-local
      8 // META: variant=?include=from-public
      9 // META: variant=?include=from-treat-as-public
     10 //
     11 // These tests verify that secure contexts can make top-level navigations
     12 // to less-public address spaces. These are not restricted under LNA.
     13 
     14 setup(() => {
     15  assert_true(window.isSecureContext);
     16 });
     17 
     18 // Source: secure loopback context.
     19 //
     20 // All top-level navigations unaffected by Local Network Access.
     21 
     22 subsetTestByKey(
     23    'from-loopback', promise_test, t => navigateTest(t, {
     24                                     source: Server.HTTPS_LOOPBACK,
     25                                     target: Server.HTTPS_LOOPBACK,
     26                                     expected: NavigationTestResult.SUCCESS,
     27                                   }),
     28    'loopback to loopback: no permission required.');
     29 
     30 subsetTestByKey(
     31    'from-loopback', promise_test, t => navigateTest(t, {
     32                                     source: Server.HTTPS_LOOPBACK,
     33                                     target: Server.HTTPS_LOCAL,
     34                                     expected: NavigationTestResult.SUCCESS,
     35                                   }),
     36    'loopback to local: no permission required.');
     37 
     38 subsetTestByKey(
     39    'from-loopback', promise_test, t => navigateTest(t, {
     40                                     source: Server.HTTPS_LOOPBACK,
     41                                     target: Server.HTTPS_PUBLIC,
     42                                     expected: NavigationTestResult.SUCCESS,
     43                                   }),
     44    'loopback to public: no preflight required.');
     45 
     46 // Source: secure local context.
     47 //
     48 // All top-level navigations unaffected by Local Network Access.
     49 
     50 subsetTestByKey(
     51    'from-local', promise_test, t => navigateTest(t, {
     52                                  source: Server.HTTPS_LOCAL,
     53                                  target: Server.HTTPS_LOOPBACK,
     54                                  expected: NavigationTestResult.SUCCESS,
     55                                }),
     56    'local to loopback: no permission required.');
     57 
     58 subsetTestByKey(
     59    'from-local', promise_test, t => navigateTest(t, {
     60                                  source: Server.HTTPS_LOCAL,
     61                                  target: Server.HTTPS_LOCAL,
     62                                  expected: NavigationTestResult.SUCCESS,
     63                                }),
     64    'local to local: no permission required.');
     65 
     66 subsetTestByKey(
     67    'from-local', promise_test, t => navigateTest(t, {
     68                                  source: Server.HTTPS_LOCAL,
     69                                  target: Server.HTTPS_PUBLIC,
     70                                  expected: NavigationTestResult.SUCCESS,
     71                                }),
     72    'local to public: no permission required.');
     73 
     74 // Source: secure public context.
     75 //
     76 // All top-level navigations unaffected by Local Network Access
     77 
     78 subsetTestByKey(
     79    'from-public', promise_test, t => navigateTest(t, {
     80                                   source: Server.HTTPS_PUBLIC,
     81                                   target: Server.HTTPS_LOOPBACK,
     82                                   expected: NavigationTestResult.SUCCESS,
     83                                 }),
     84    'public to loopback: no permission required.');
     85 
     86 subsetTestByKey(
     87    'from-public', promise_test, t => navigateTest(t, {
     88                                   source: Server.HTTPS_PUBLIC,
     89                                   target: Server.HTTPS_LOCAL,
     90                                   expected: NavigationTestResult.SUCCESS,
     91                                 }),
     92    'public to local: no permission required.');
     93 
     94 subsetTestByKey(
     95    'from-public', promise_test, t => navigateTest(t, {
     96                                   source: Server.HTTPS_PUBLIC,
     97                                   target: Server.HTTPS_PUBLIC,
     98                                   expected: NavigationTestResult.SUCCESS,
     99                                 }),
    100    'public to public: no permission required.');
    101 
    102 // The following tests verify that `CSP: treat-as-public-address` makes
    103 // documents behave as if they had been served from a public IP address.
    104 
    105 subsetTestByKey(
    106    'from-treat-as-public', promise_test,
    107    t => navigateTest(t, {
    108      source: {
    109        server: Server.HTTPS_LOOPBACK,
    110        treatAsPublic: true,
    111      },
    112      target: Server.OTHER_HTTPS_LOOPBACK,
    113      expected: NavigationTestResult.SUCCESS,
    114    }),
    115    'treat-as-public-address to loopback: no permission required.');
    116 
    117 subsetTestByKey(
    118    'from-treat-as-public', promise_test,
    119    t => navigateTest(t, {
    120      source: {
    121        server: Server.HTTPS_LOOPBACK,
    122        treatAsPublic: true,
    123      },
    124      target: Server.HTTPS_LOOPBACK,
    125      expected: NavigationTestResult.SUCCESS,
    126    }),
    127    'treat-as-public-address to loopback (same-origin): no permission required.');
    128 
    129 subsetTestByKey(
    130    'from-treat-as-public', promise_test,
    131    t => navigateTest(t, {
    132      source: {
    133        server: Server.HTTPS_LOOPBACK,
    134        treatAsPublic: true,
    135      },
    136      target: Server.HTTPS_LOCAL,
    137      expected: NavigationTestResult.SUCCESS,
    138    }),
    139    'treat-as-public-address to local: no permission required.');
    140 
    141 subsetTestByKey(
    142    'from-treat-as-public', promise_test,
    143    t => navigateTest(t, {
    144      source: {
    145        server: Server.HTTPS_LOOPBACK,
    146        treatAsPublic: true,
    147      },
    148      target: Server.HTTPS_PUBLIC,
    149      expected: NavigationTestResult.SUCCESS,
    150    }),
    151    'treat-as-public-address to public: no permission required.');