tor-browser

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

cache-keys.https.any.js (7568B)


      1 // META: title=Cache.keys
      2 // META: global=window,worker
      3 // META: script=./resources/test-helpers.js
      4 // META: timeout=long
      5 
      6 cache_test(cache => {
      7    return cache.keys()
      8      .then(requests => {
      9          assert_equals(
     10            requests.length, 0,
     11            'Cache.keys should resolve to an empty array for an empty cache');
     12        });
     13  }, 'Cache.keys() called on an empty cache');
     14 
     15 prepopulated_cache_test(simple_entries, function(cache, entries) {
     16    return cache.keys('not-present-in-the-cache')
     17      .then(function(result) {
     18          assert_request_array_equals(
     19            result, [],
     20            'Cache.keys should resolve with an empty array on failure.');
     21        });
     22  }, 'Cache.keys with no matching entries');
     23 
     24 prepopulated_cache_test(simple_entries, function(cache, entries) {
     25    return cache.keys(entries.a.request.url)
     26      .then(function(result) {
     27          assert_request_array_equals(result, [entries.a.request],
     28                                      'Cache.keys should match by URL.');
     29        });
     30  }, 'Cache.keys with URL');
     31 
     32 prepopulated_cache_test(simple_entries, function(cache, entries) {
     33    return cache.keys(entries.a.request)
     34      .then(function(result) {
     35          assert_request_array_equals(
     36            result, [entries.a.request],
     37            'Cache.keys should match by Request.');
     38        });
     39  }, 'Cache.keys with Request');
     40 
     41 prepopulated_cache_test(simple_entries, function(cache, entries) {
     42    return cache.keys(new Request(entries.a.request.url))
     43      .then(function(result) {
     44          assert_request_array_equals(
     45            result, [entries.a.request],
     46            'Cache.keys should match by Request.');
     47        });
     48  }, 'Cache.keys with new Request');
     49 
     50 prepopulated_cache_test(simple_entries, function(cache, entries) {
     51    return cache.keys(entries.a.request, {ignoreSearch: true})
     52      .then(function(result) {
     53          assert_request_array_equals(
     54            result,
     55            [
     56              entries.a.request,
     57              entries.a_with_query.request
     58            ],
     59            'Cache.keys with ignoreSearch should ignore the ' +
     60            'search parameters of cached request.');
     61        });
     62  },
     63  'Cache.keys with ignoreSearch option (request with no search ' +
     64  'parameters)');
     65 
     66 prepopulated_cache_test(simple_entries, function(cache, entries) {
     67    return cache.keys(entries.a_with_query.request, {ignoreSearch: true})
     68      .then(function(result) {
     69          assert_request_array_equals(
     70            result,
     71            [
     72              entries.a.request,
     73              entries.a_with_query.request
     74            ],
     75            'Cache.keys with ignoreSearch should ignore the ' +
     76            'search parameters of request.');
     77        });
     78  },
     79  'Cache.keys with ignoreSearch option (request with search parameters)');
     80 
     81 cache_test(function(cache) {
     82    var request = new Request('http://example.com/');
     83    var head_request = new Request('http://example.com/', {method: 'HEAD'});
     84    var response = new Response('foo');
     85    return cache.put(request.clone(), response.clone())
     86      .then(function() {
     87          return cache.keys(head_request.clone());
     88        })
     89      .then(function(result) {
     90          assert_request_array_equals(
     91            result, [],
     92            'Cache.keys should resolve with an empty array with a ' +
     93            'mismatched method.');
     94          return cache.keys(head_request.clone(),
     95                            {ignoreMethod: true});
     96        })
     97      .then(function(result) {
     98          assert_request_array_equals(
     99            result,
    100            [
    101              request,
    102            ],
    103            'Cache.keys with ignoreMethod should ignore the ' +
    104            'method of request.');
    105        });
    106  }, 'Cache.keys supports ignoreMethod');
    107 
    108 cache_test(function(cache) {
    109    var vary_request = new Request('http://example.com/c',
    110                                   {headers: {'Cookies': 'is-for-cookie'}});
    111    var vary_response = new Response('', {headers: {'Vary': 'Cookies'}});
    112    var mismatched_vary_request = new Request('http://example.com/c');
    113 
    114    return cache.put(vary_request.clone(), vary_response.clone())
    115      .then(function() {
    116          return cache.keys(mismatched_vary_request.clone());
    117        })
    118      .then(function(result) {
    119          assert_request_array_equals(
    120            result, [],
    121            'Cache.keys should resolve with an empty array with a ' +
    122            'mismatched vary.');
    123          return cache.keys(mismatched_vary_request.clone(),
    124                              {ignoreVary: true});
    125        })
    126      .then(function(result) {
    127          assert_request_array_equals(
    128            result,
    129            [
    130              vary_request,
    131            ],
    132            'Cache.keys with ignoreVary should ignore the ' +
    133            'vary of request.');
    134        });
    135  }, 'Cache.keys supports ignoreVary');
    136 
    137 prepopulated_cache_test(simple_entries, function(cache, entries) {
    138    return cache.keys(entries.cat.request.url + '#mouse')
    139      .then(function(result) {
    140          assert_request_array_equals(
    141            result,
    142            [
    143              entries.cat.request,
    144            ],
    145            'Cache.keys should ignore URL fragment.');
    146        });
    147  }, 'Cache.keys with URL containing fragment');
    148 
    149 prepopulated_cache_test(simple_entries, function(cache, entries) {
    150    return cache.keys('http')
    151      .then(function(result) {
    152          assert_request_array_equals(
    153            result, [],
    154            'Cache.keys should treat query as a URL and not ' +
    155            'just a string fragment.');
    156        });
    157  }, 'Cache.keys with string fragment "http" as query');
    158 
    159 prepopulated_cache_test(simple_entries, function(cache, entries) {
    160    return cache.keys()
    161      .then(function(result) {
    162          assert_request_array_equals(
    163            result,
    164            simple_entries.map(entry => entry.request),
    165            'Cache.keys without parameters should match all entries.');
    166        });
    167  }, 'Cache.keys without parameters');
    168 
    169 prepopulated_cache_test(simple_entries, function(cache, entries) {
    170    return cache.keys(undefined)
    171      .then(function(result) {
    172          assert_request_array_equals(
    173            result,
    174            simple_entries.map(entry => entry.request),
    175            'Cache.keys with undefined request should match all entries.');
    176        });
    177  }, 'Cache.keys with explicitly undefined request');
    178 
    179 cache_test(cache => {
    180    return cache.keys(undefined, {})
    181      .then(requests => {
    182          assert_equals(
    183            requests.length, 0,
    184            'Cache.keys should resolve to an empty array for an empty cache');
    185        });
    186  }, 'Cache.keys with explicitly undefined request and empty options');
    187 
    188 prepopulated_cache_test(vary_entries, function(cache, entries) {
    189    return cache.keys()
    190      .then(function(result) {
    191          assert_request_array_equals(
    192            result,
    193            [
    194              entries.vary_cookie_is_cookie.request,
    195              entries.vary_cookie_is_good.request,
    196              entries.vary_cookie_absent.request,
    197            ],
    198            'Cache.keys without parameters should match all entries.');
    199        });
    200  }, 'Cache.keys without parameters and VARY entries');
    201 
    202 prepopulated_cache_test(simple_entries, function(cache, entries) {
    203    return cache.keys(new Request(entries.cat.request.url, {method: 'HEAD'}))
    204      .then(function(result) {
    205          assert_request_array_equals(
    206            result, [],
    207            'Cache.keys should not match HEAD request unless ignoreMethod ' +
    208            'option is set.');
    209        });
    210  }, 'Cache.keys with a HEAD Request');
    211 
    212 done();