diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /dom/cache/test/mochitest/test_cache_keys.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/cache/test/mochitest/test_cache_keys.js')
-rw-r--r-- | dom/cache/test/mochitest/test_cache_keys.js | 98 |
1 files changed, 98 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 0000000000..1eda988af2 --- /dev/null +++ b/dom/cache/test/mochitest/test_cache_keys.js @@ -0,0 +1,98 @@ +/* global context testDone:true */ + +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.includes(tests[i]), "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.includes(tests[1]), "Valid URL"); + // Try to see if ignoreSearch works as expected. + return c.keys(new Request("//mochi.test:8888/?foo"), { + ignoreSearch: true, + }); + }) + .then(function (key_arr) { + is(key_arr.length, tests.length, "Same number of elements"); + key_arr.forEach(function (r, i) { + ok(r instanceof Request, "Valid request object"); + ok(r.url.includes(tests[i]), "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 }); + 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.includes(tests[2]), "Valid URL"); + }); + }) + ); + }) + .then(function () { + // But HEAD should be allowed only when ignoreMethod is ture + return c.keys(new Request(tests[0], { method: "HEAD" }), { + ignoreMethod: true, + }); + }) + .then(function (keys) { + is(keys.length, 1, "One match should be found"); + ok(keys[0].url.includes(tests[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.includes(tests[0]), "Valid URL"); + return caches.delete(name); + }) + .then(function (deleted) { + ok(deleted, "The cache should be successfully deleted"); + testDone(); + }); |