diff options
Diffstat (limited to 'dom/cache/test/mochitest/test_cache_keys.js')
-rw-r--r-- | dom/cache/test/mochitest/test_cache_keys.js | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/dom/cache/test/mochitest/test_cache_keys.js b/dom/cache/test/mochitest/test_cache_keys.js new file mode 100644 index 000000000..6c1fa5ee4 --- /dev/null +++ b/dom/cache/test/mochitest/test_cache_keys.js @@ -0,0 +1,74 @@ +var name = "keys" + context; +var c; + +var tests = [ + "//mochi.test:8888/?page" + context, + "//mochi.test:8888/?another" + context, +]; + +caches.open(name).then(function(cache) { + c = cache; + return c.addAll(tests); +}).then(function() { + // Add another cache entry using Cache.add + var another = "//mochi.test:8888/?yetanother" + context; + tests.push(another); + return c.add(another); +}).then(function() { + // Add another cache entry with URL fragment using Cache.add + var anotherWithFragment = "//mochi.test:8888/?fragment" + context + "#fragment"; + tests.push(anotherWithFragment); + return c.add(anotherWithFragment); +}).then(function() { + return c.keys(); +}).then(function(keys) { + is(keys.length, tests.length, "Same number of elements"); + // Verify both the insertion order of the requests and their validity. + keys.forEach(function(r, i) { + ok(r instanceof Request, "Valid request object"); + ok(r.url.indexOf(tests[i]) >= 0, "Valid URL"); + }); + // Try searching for just one request + return c.keys(tests[1]); +}).then(function(keys) { + is(keys.length, 1, "One match should be found"); + ok(keys[0].url.indexOf(tests[1]) >= 0, "Valid URL"); + // Try to see if ignoreSearch works as expected. + return c.keys(new Request("//mochi.test:8888/?foo"), {ignoreSearch: true}); +}).then(function(keys) { + is(keys.length, tests.length, "Same number of elements"); + keys.forEach(function(r, i) { + ok(r instanceof Request, "Valid request object"); + ok(r.url.indexOf(tests[i]) >= 0, "Valid URL"); + }); + // Try to see if ignoreMethod works as expected + return Promise.all( + ["POST", "PUT", "DELETE", "OPTIONS"] + .map(function(method) { + var req = new Request(tests[2], {method: method}); + return c.keys(req) + .then(function(keys) { + is(keys.length, 0, "No request should be matched without ignoreMethod"); + return c.keys(req, {ignoreMethod: true}); + }).then(function(keys) { + is(keys.length, 1, "One match should be found"); + ok(keys[0].url.indexOf(tests[2]) >= 0, "Valid URL"); + }); + }) + ); +}).then(function() { + // But HEAD should be allowed even without ignoreMethod + return c.keys(new Request(tests[0], {method: "HEAD"})); +}).then(function(keys) { + is(keys.length, 1, "One match should be found"); + ok(keys[0].url.indexOf(tests[0]) >= 0, "Valid URL"); + // Make sure cacheName is ignored. + return c.keys(tests[0], {cacheName: "non-existing-cache"}); +}).then(function(keys) { + is(keys.length, 1, "One match should be found"); + ok(keys[0].url.indexOf(tests[0]) >= 0, "Valid URL"); + return caches.delete(name); +}).then(function(deleted) { + ok(deleted, "The cache should be successfully deleted"); + testDone(); +}); |