| Index: LayoutTests/http/tests/serviceworker/resources/cache-put-worker.js
|
| diff --git a/LayoutTests/http/tests/serviceworker/resources/cache-put-worker.js b/LayoutTests/http/tests/serviceworker/resources/cache-put-worker.js
|
| index 6a8151545e9f589177f73ba4d13912afc3bad5af..0a3901aa1205fcc8877a9ac2263c69dc1159dcd2 100644
|
| --- a/LayoutTests/http/tests/serviceworker/resources/cache-put-worker.js
|
| +++ b/LayoutTests/http/tests/serviceworker/resources/cache-put-worker.js
|
| @@ -2,27 +2,11 @@ importScripts('worker-testharness.js');
|
| importScripts('/resources/testharness-helpers.js');
|
|
|
| var test_url = 'https://example.com/foo';
|
| -
|
| -// Construct a generic Request object. The URL is |test_url|. All other fields
|
| -// are defaults.
|
| -function new_test_request() {
|
| - return new Request(test_url);
|
| -}
|
| -
|
| -// Construct a generic Response object. The URL is empty. If specified |body|
|
| -// will be set as the response body string.
|
| -function new_test_response(body) {
|
| - body = body || 'Hello world!';
|
| - return new Response(body, {
|
| - status: 200,
|
| - statusText: 'OK',
|
| - headers: [['Content-Type', 'text/plain']]
|
| - });
|
| -}
|
| +var test_response_body = 'Hello world!';
|
|
|
| cache_test(function(cache) {
|
| - var request = new_test_request();
|
| - var response = new_test_response();
|
| + var request = new Request(test_url);
|
| + var response = new Response(test_response_body);
|
| return cache.put(request, response)
|
| .then(function(result) {
|
| assert_equals(result, undefined,
|
| @@ -59,7 +43,7 @@ cache_test(function(cache) {
|
| method: 'GET',
|
| body: 'Hello'
|
| });
|
| - var response = new_test_response();
|
| + var response = new Response(test_response_body);
|
| assert_false(request.bodyUsed,
|
| '[https://fetch.spec.whatwg.org/#dom-body-bodyused] ' +
|
| 'Request.bodyUsed should be initially false.');
|
| @@ -78,8 +62,8 @@ cache_test(function(cache) {
|
| }, 'Cache.put with Request containing a body');
|
|
|
| cache_test(function(cache) {
|
| - var request = new_test_request();
|
| - var response = new_test_response();
|
| + var request = new Request(test_url);
|
| + var response = new Response(test_response_body);
|
| return cache.put(request, response)
|
| .then(function() {
|
| return cache.match(test_url);
|
| @@ -92,7 +76,7 @@ cache_test(function(cache) {
|
| }, 'Cache.put with a Response containing an empty URL');
|
|
|
| cache_test(function(cache) {
|
| - var request = new_test_request();
|
| + var request = new Request(test_url);
|
| var response = new Response('', {
|
| status: 200,
|
| headers: [['Content-Type', 'text/plain']]
|
| @@ -119,6 +103,8 @@ cache_test(function(cache) {
|
| var response;
|
| return fetch(test_url)
|
| .then(function(fetch_result) {
|
| + assert_equals(fetch_result.status, 500,
|
| + 'Test framework error: The status code should be 500.');
|
| response = fetch_result.clone();
|
| return cache.put(request, fetch_result);
|
| })
|
| @@ -138,10 +124,13 @@ cache_test(function(cache) {
|
| }, 'Cache.put with HTTP 500 response');
|
|
|
| cache_test(function(cache) {
|
| - var alternate_response = new_test_response('Lorem ipsum');
|
| - return cache.put(new_test_request(), new_test_response())
|
| + var alternate_response_body = 'New body';
|
| + var alternate_response = new Response(alternate_response_body,
|
| + { statusText: 'New status' });
|
| + return cache.put(new Request(test_url),
|
| + new Response('Old body', { statusText: 'Old status' }))
|
| .then(function() {
|
| - return cache.put(new_test_request(), alternate_response);
|
| + return cache.put(new Request(test_url), alternate_response);
|
| })
|
| .then(function() {
|
| return cache.match(test_url);
|
| @@ -150,36 +139,104 @@ cache_test(function(cache) {
|
| assert_object_equals(result, alternate_response,
|
| 'Cache.put should replace existing ' +
|
| 'response with new response.');
|
| + return result.text();
|
| + })
|
| + .then(function(body) {
|
| + assert_equals(body, alternate_response_body,
|
| + 'Cache put should store new response body.');
|
| + });
|
| + }, 'Cache.put called twice with matching Requests and different Responses');
|
| +
|
| +cache_test(function(cache) {
|
| + var first_url = test_url;
|
| + var second_url = first_url + '#(O_o)';
|
| + var alternate_response_body = 'New body';
|
| + var alternate_response = new Response(alternate_response_body,
|
| + { statusText: 'New status' });
|
| + return cache.put(new Request(first_url),
|
| + new Response('Old body', { statusText: 'Old status' }))
|
| + .then(function() {
|
| + return cache.put(new Request(second_url), alternate_response);
|
| + })
|
| + .then(function() {
|
| + return cache.match(test_url);
|
| + })
|
| + .then(function(result) {
|
| + assert_object_equals(result, alternate_response,
|
| + 'Cache.put should replace existing ' +
|
| + 'response with new response.');
|
| + return result.text();
|
| + })
|
| + .then(function(body) {
|
| + assert_equals(body, alternate_response_body,
|
| + 'Cache put should store new response body.');
|
| + });
|
| + }, 'Cache.put called twice with request URLs that differ only by a fragment');
|
| +
|
| +cache_test(function(cache) {
|
| + var entries = {
|
| + dark: {
|
| + url: 'http://darkhelmet:12345@example.com/spaceballs',
|
| + body: 'Moranis'
|
| + },
|
| +
|
| + skroob: {
|
| + url: 'http://skroob:12345@example.com/spaceballs',
|
| + body: 'Brooks'
|
| + },
|
| +
|
| + control: {
|
| + url: 'http://example.com/spaceballs',
|
| + body: 'v(o.o)v'
|
| + }
|
| + };
|
| +
|
| + return Promise.all(Object.keys(entries).map(function(key) {
|
| + return cache.put(new Request(entries[key].url),
|
| + new Response(entries[key].body));
|
| + }))
|
| + .then(function() {
|
| + return Promise.all(Object.keys(entries).map(function(key) {
|
| + return cache.match(entries[key].url)
|
| + .then(function(result) {
|
| + return result.text();
|
| + })
|
| + .then(function(body) {
|
| + assert_equals(body, entries[key].body,
|
| + 'Cache put should store response body.');
|
| + });
|
| + }));
|
| });
|
| - }, 'Cache.put called twice with same Request and different Responses');
|
| + }, 'Cache.put with request URLs containing embedded credentials');
|
|
|
| cache_test(function(cache) {
|
| var url = 'http://example.com/foo';
|
| - return cache.put(url, new_test_response('some body'))
|
| + return cache.put(url, new Response('some body'))
|
| .then(function() { return cache.match(url); })
|
| .then(function(response) { return response.text(); })
|
| .then(function(body) {
|
| assert_equals(body, 'some body',
|
| 'Cache.put should accept a string as request.');
|
| });
|
| - }, 'Cache.put with an string request');
|
| + }, 'Cache.put with a string request');
|
|
|
| cache_test(function(cache) {
|
| return assert_promise_rejects(
|
| - cache.put(new_test_request(), 'Hello world!'),
|
| + cache.put(new Request(test_url), 'Hello world!'),
|
| new TypeError(),
|
| 'Cache.put should only accept a Response object as the response.');
|
| }, 'Cache.put with an invalid response');
|
|
|
| cache_test(function(cache) {
|
| return assert_promise_rejects(
|
| - cache.put(new Request('file:///etc/passwd'), new_test_response()),
|
| + cache.put(new Request('file:///etc/passwd'),
|
| + new Response(test_response_body)),
|
| new TypeError(),
|
| 'Cache.put should reject non-HTTP/HTTPS requests with a TypeError.');
|
| }, 'Cache.put with a non-HTTP/HTTPS request');
|
|
|
| cache_test(function(cache) {
|
| - var response = new_test_response();
|
| + var response = new Response(test_response_body);
|
| return cache.put(new Request('relative-url'), response)
|
| .then(function() {
|
| return cache.match(new URL('relative-url', location.href).href);
|
| @@ -192,16 +249,16 @@ cache_test(function(cache) {
|
| }, 'Cache.put with a relative URL');
|
|
|
| cache_test(function(cache) {
|
| - var request = new Request('http://example.com/foo', {method: 'HEAD'});
|
| + var request = new Request('http://example.com/foo', { method: 'HEAD' });
|
| return assert_promise_rejects(
|
| - cache.put(request, new_test_response()),
|
| + cache.put(request, new Response(test_response_body)),
|
| new TypeError(),
|
| 'Cache.put should throw a TypeError for non-GET requests.');
|
| }, 'Cache.put with a non-GET request');
|
|
|
| cache_test(function(cache) {
|
| return assert_promise_rejects(
|
| - cache.put(new_test_request(), null),
|
| + cache.put(new Request(test_url), null),
|
| new TypeError(),
|
| 'Cache.put should throw a TypeError for an empty response.');
|
| }, 'Cache.put with an empty response');
|
|
|