Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(66)

Side by Side Diff: LayoutTests/http/tests/serviceworker/resources/cache-put-worker.js

Issue 425413002: [ServiceWorker] Tests for Cache (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Updates tests to comply with spec changes Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 importScripts('worker-testharness.js');
2 importScripts('/resources/testharness-helpers.js');
3
4 var test_url = 'https://example.com/foo';
5
6 // Construct a generic Request object. The URL is |test_url|. All other fields
7 // are defaults.
8 function new_test_request() {
9 return new Request(test_url);
10 }
11
12
13 // Construct a generic Response object. The URL is empty. If specified |body|
14 // will be set as the response body string.
15 function new_test_response(body) {
16 body = body || 'Hello world!';
17 return new Response(body, {
18 status: 200,
19 statusText: 'OK',
20 headers: [['Content-Type', 'text/plain']]
21 });
22 }
23
24 cache_test(function(cache) {
25 var request = new_test_request();
26 var response = new_test_response();
27 return cache.put(request, response)
28 .then(function(result) {
29 assert_equals(result, undefined,
30 'Cache.put should resolve with undefined on success.');
31 });
32 }, 'Cache.put result on success');
33
34 cache_test(function(cache) {
35 var test_url = new URL('simple.txt', location.href).href;
36 var request = new Request(test_url);
37 var response;
38 return fetch(test_url)
39 .then(function(fetch_result) {
40 response = fetch_result.clone();
41 return cache.put(request, fetch_result);
42 })
43 .then(function() {
44 return cache.match(test_url);
45 })
46 .then(function(result) {
47 assert_object_equals(result, response,
48 'Cache.put should update the cache with ' +
49 'new request and response.');
50 return result.text();
51 })
52 .then(function(body) {
53 assert_equals(body, 'a simple text file\n',
54 'Cache.put should store response body.');
55 });
56 }, 'Cache.put with a valid request and response');
57
58 cache_test(function(cache) {
59 var request = new Request(test_url, {
60 method: 'GET',
61 body: 'Hello'
62 });
63 var response = new_test_response();
64 assert_false(request.bodyUsed,
65 '[https://fetch.spec.whatwg.org/#dom-body-bodyused] ' +
66 'Request.bodyUsed should be initially false.');
67 return cache.put(request, response)
68 .then(function() {
69 assert_false(request.bodyUsed,
70 'Cache.put should not consume Request body.');
71 })
72 .then(function() {
73 return cache.match(request);
74 })
75 .then(function(result) {
76 assert_object_equals(result, response,
77 'Cache.put should store response body.');
78 });
79 }, 'Cache.put with request containing a body');
80
81 cache_test(function(cache) {
82 var request = new_test_request();
83 var response = new_test_response();
84 return cache.put(request, response)
85 .then(function() {
86 return cache.match(test_url);
87 })
88 .then(function(result) {
89 assert_object_equals(result, response,
90 'Cache.put should update the cache with ' +
91 'new request and response.');
92 });
93 }, 'Cache.put with a response containing an empty URL');
94
95 // TODO: This test currently causes a browser crash. Enable test again once the
96 // crash is resolved. http://crbug.com/426150
jsbell 2014/10/23 00:30:32 Testing locally: crash resolved by https://coderev
asanka 2014/10/23 06:12:39 Enabling test and updating expectations.
97 if (false) {
98 cache_test(function(cache) {
99 var request = new_test_request();
100 var response = new Response('', {
101 status: 200,
102 headers: [['Content-Type', 'text/plain']]
103 });
104 return cache.put(request, response)
105 .then(function() {
106 return cache.match(test_url);
107 })
108 .then(function(result) {
109 assert_object_equals(result, response,
110 'Cache.put should update the cache with ' +
111 'new request and response.');
112 return result.text();
113 })
114 .then(function(body) {
115 assert_equals(body, '',
116 'Cache.put should store response body.');
117 });
118 }, 'Cache.put with an empty response body');
119 }
120
121 // TODO: This test currently causes a renderer crash. Enable test again once the
122 // crash is resolved. http://crbug.com/426153
jsbell 2014/10/23 00:15:31 Fix posted - thanks for catching this!
jsbell 2014/10/23 00:23:51 Well, fix posted crbug.com/426153 (i.e. put(..., s
jsbell 2014/10/23 00:30:32 Testing locally: resolved by https://codereview.ch
asanka 2014/10/23 06:12:39 Whoops. Bug annotations was wrong. This should be
123 if (false) {
124 cache_test(function(cache) {
125 var test_url = new URL('fetch-status.php?status=500', location.href).href;
126 var request = new Request(test_url);
127 var response;
128 return fetch(test_url)
129 .then(function(fetch_result) {
130 response = fetch_result.clone();
131 return cache.put(request, fetch_result);
132 })
133 .then(function() {
134 return cache.match(test_url);
135 })
136 .then(function(result) {
137 assert_object_equals(result, response,
138 'Cache.put should update the cache with ' +
139 'new request and response.');
140 return result.text();
141 })
142 .then(function(body) {
143 assert_equals(body, '',
144 'Cache.put should store response body.');
145 });
146 }, 'Cache.put with HTTP 500 response');
147 }
148
149 cache_test(function(cache) {
150 var alternate_response = new_test_response('Lorem ipsum');
151 return cache.put(new_test_request(), new_test_response())
152 .then(function() {
153 return cache.put(new_test_request(), alternate_response);
154 })
155 .then(function() {
156 return cache.match(test_url);
157 })
158 .then(function(result) {
159 assert_object_equals(result, alternate_response,
160 'Cache.put should replace existing ' +
161 'response with new response.');
162 });
163 }, 'Cache.put with an existing request');
164
165 cache_test(function(cache) {
166 return assert_promise_rejects(
167 cache.put('http://example.com/foo', new_test_response()),
168 new TypeError(),
169 'Cache.put should only accept a Request object as the request.');
170 }, 'Cache.put with an invalid request');
171
172 // TODO: This test currently causes a renderer crash. Enable test again once the
173 // crash is resolved. http://crbug.com/426153
jsbell 2014/10/23 00:30:32 Testing locally: resolved by https://codereview.ch
asanka 2014/10/23 06:12:39 Ack. If this lands before that CL, I'll enable the
174 if (false) {
175 cache_test(function(cache) {
176 return assert_promise_rejects(
177 cache.put(new_test_request(), 'Hello world!'),
178 new TypeError(),
179 'Cache.put should only accept a Response object as the response.');
180 }, 'Cache.put with an invalid response');
181 }
182
183 cache_test(function(cache) {
184 return assert_promise_rejects(
185 cache.put(new Request('file:///etc/passwd'), new_test_response()),
186 new TypeError(),
187 'Cache.put should reject non-HTTP/HTTPS requests with a TypeError.');
188 }, 'Cache.put with a non-HTTP/HTTPS request');
189
190 cache_test(function(cache) {
191 var response = new_test_response();
192 return cache.put(new Request('relative-url'), response)
193 .then(function() {
194 return cache.match(new URL('relative-url', location.href).href);
195 })
196 .then(function(result) {
197 assert_object_equals(result, response,
198 'Cache.put should accept a relative URL ' +
199 'as the request.');
200 });
201 }, 'Cache.put with a relative URL');
202
203 cache_test(function(cache) {
204 var request = new Request('http://example.com/foo', {method: 'get'});
205 return assert_promise_rejects(
206 cache.put(request, new_test_response()),
207 new TypeError(),
208 'Cache.put should throw a TypeError for non-GET requests.');
209 }, 'Cache.put with a non-GET request');
210
211 cache_test(function(cache) {
212 var request = new Request('http://example.com/foo', {method: 'HEAD'});
213 return assert_promise_rejects(
214 cache.put(request, new_test_response()),
215 new TypeError(),
216 'Cache.put should throw a TypeError for non-GET requests.');
217 }, 'Cache.put with a non-GET request');
218
219 // TODO: This test currently cuases a renderer crash. Enable test again once the
220 // crash is resolved. http://crbug.com/426153
jsbell 2014/10/23 00:30:32 Testing locally: resolved by https://codereview.ch
asanka 2014/10/23 06:12:39 Acknowledged.
221 if (false) {
222 cache_test(function(cache) {
223 return assert_promise_rejects(
224 cache.put(new_test_request(), null),
225 new TypeError(),
226 'Cache.put should throw a TypeError for an empty response.');
227 }, 'Cache.put with an empty response');
228 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698