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

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

Issue 705343002: [ServiceWorker] Serialize Cache.put() calls in Cache.match tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@no-fragments
Patch Set: Update test expectations Created 6 years, 1 month 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
« no previous file with comments | « LayoutTests/http/tests/serviceworker/cache-match-expected.txt ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 importScripts('worker-testharness.js'); 1 importScripts('worker-testharness.js');
2 importScripts('/resources/testharness-helpers.js'); 2 importScripts('/resources/testharness-helpers.js');
3 3
4 // A set of Request/Response pairs to be used with prepopulated_cache_test(). 4 // A set of Request/Response pairs to be used with prepopulated_cache_test().
5 var simple_entries = { 5 var simple_entries = [
6 a: { 6 {
7 name: 'a',
7 request: new Request('http://example.com/a'), 8 request: new Request('http://example.com/a'),
8 response: new Response('') 9 response: new Response('')
9 }, 10 },
10 11
11 b: { 12 {
13 name: 'b',
12 request: new Request('http://example.com/b'), 14 request: new Request('http://example.com/b'),
13 response: new Response('') 15 response: new Response('')
14 }, 16 },
15 17
16 a_with_query: { 18 {
19 name: 'a_with_query',
17 request: new Request('http://example.com/a?q=r'), 20 request: new Request('http://example.com/a?q=r'),
18 response: new Response('') 21 response: new Response('')
19 }, 22 },
20 23
21 A: { 24 {
25 name: 'A',
22 request: new Request('http://example.com/A'), 26 request: new Request('http://example.com/A'),
23 response: new Response('') 27 response: new Response('')
24 }, 28 },
25 29
26 a_https: { 30 {
31 name: 'a_https',
27 request: new Request('https://example.com/a'), 32 request: new Request('https://example.com/a'),
28 response: new Response('') 33 response: new Response('')
29 }, 34 },
30 35
31 a_org: { 36 {
37 name: 'a_org',
32 request: new Request('http://example.org/a'), 38 request: new Request('http://example.org/a'),
33 response: new Response('') 39 response: new Response('')
34 }, 40 },
35 41
36 cat: { 42 {
43 name: 'cat',
37 request: new Request('http://example.com/cat'), 44 request: new Request('http://example.com/cat'),
38 response: new Response('') 45 response: new Response('')
39 }, 46 },
40 47
41 catmandu: { 48 {
49 name: 'catmandu',
42 request: new Request('http://example.com/catmandu'), 50 request: new Request('http://example.com/catmandu'),
43 response: new Response('') 51 response: new Response('')
44 }, 52 },
45 53
46 cat_num_lives: { 54 {
55 name: 'cat_num_lives',
47 request: new Request('http://example.com/cat?lives=9'), 56 request: new Request('http://example.com/cat?lives=9'),
48 response: new Response('') 57 response: new Response('')
49 }, 58 },
50 59
51 cat_in_the_hat: { 60 {
61 name: 'cat_in_the_hat',
52 request: new Request('http://example.com/cat/in/the/hat'), 62 request: new Request('http://example.com/cat/in/the/hat'),
53 response: new Response('') 63 response: new Response('')
54 }, 64 },
55 65
56 secret_cat: { 66 {
67 name: 'secret_cat',
57 request: new Request('http://tom:jerry@example.com/cat'), 68 request: new Request('http://tom:jerry@example.com/cat'),
58 response: new Response('') 69 response: new Response('')
59 }, 70 },
60 71
61 top_secret_cat: { 72 {
73 name: 'top_secret_cat',
62 request: new Request('http://tom:j3rry@example.com/cat'), 74 request: new Request('http://tom:j3rry@example.com/cat'),
63 response: new Response('') 75 response: new Response('')
64 } 76 }
65 }; 77 ];
66 78
67 // A set of Request/Response pairs to be used with prepopulated_cache_test(). 79 // A set of Request/Response pairs to be used with prepopulated_cache_test().
68 // These contain a mix of test cases that use Vary headers. 80 // These contain a mix of test cases that use Vary headers.
69 var vary_entries = { 81 var vary_entries = [
70 no_vary_header: { 82 {
71 request: new Request('http://example.com/c'), 83 name: 'vary_cookie_is_cookie',
72 response: new Response('')
73 },
74
75 vary_cookie_is_cookie: {
76 request: new Request('http://example.com/c', 84 request: new Request('http://example.com/c',
77 {headers: {'Cookies': 'is-for-cookie'}}), 85 {headers: {'Cookies': 'is-for-cookie'}}),
78 response: new Response('', 86 response: new Response('',
79 {headers: {'Vary': 'Cookies'}}) 87 {headers: {'Vary': 'Cookies'}})
80 }, 88 },
81 89
82 vary_cookie_is_good: { 90 {
91 name: 'vary_cookie_is_good',
83 request: new Request('http://example.com/c', 92 request: new Request('http://example.com/c',
84 {headers: {'Cookies': 'is-good-enough-for-me'}}), 93 {headers: {'Cookies': 'is-good-enough-for-me'}}),
85 response: new Response('', 94 response: new Response('',
86 {headers: {'Vary': 'Cookies'}}) 95 {headers: {'Vary': 'Cookies'}})
87 }, 96 },
88 97
89 vary_cookie_absent: { 98 {
99 name: 'vary_cookie_absent',
90 request: new Request('http://example.com/c'), 100 request: new Request('http://example.com/c'),
91 response: new Response('', 101 response: new Response('',
92 {headers: {'Vary': 'Cookies'}}) 102 {headers: {'Vary': 'Cookies'}})
93 }, 103 },
94 104
95 vary_wildcard: { 105 {
106 name: 'vary_wildcard',
96 request: new Request('http://example.com/c', 107 request: new Request('http://example.com/c',
97 {headers: {'Cookies': 'x', 'X-Key': '1'}}), 108 {headers: {'Cookies': 'x', 'X-Key': '1'}}),
98 response: new Response('', 109 response: new Response('',
99 {headers: {'Vary': '*'}}) 110 {headers: {'Vary': '*'}})
100 } 111 }
101 }; 112 ];
102 113
103 prepopulated_cache_test(simple_entries, function(cache) { 114 prepopulated_cache_test(simple_entries, function(cache, entries) {
104 return cache.matchAll('not-present-in-the-cache') 115 return cache.matchAll('not-present-in-the-cache')
105 .then(function(result) { 116 .then(function(result) {
106 assert_array_equivalent( 117 assert_array_equivalent(
107 result, [], 118 result, [],
108 'Cache.matchAll should resolve with an empty array on failure.'); 119 'Cache.matchAll should resolve with an empty array on failure.');
109 }); 120 });
110 }, 'Cache.matchAll with no matching entries'); 121 }, 'Cache.matchAll with no matching entries');
111 122
112 prepopulated_cache_test(simple_entries, function(cache) { 123 prepopulated_cache_test(simple_entries, function(cache, entries) {
113 return cache.match('not-present-in-the-cache') 124 return cache.match('not-present-in-the-cache')
114 .then(function(result) { 125 .then(function(result) {
115 assert_equals(result, undefined, 126 assert_equals(result, undefined,
116 'Cache.match failures should resolve with undefined.'); 127 'Cache.match failures should resolve with undefined.');
117 }); 128 });
118 }, 'Cache.match with no matching entries'); 129 }, 'Cache.match with no matching entries');
119 130
120 prepopulated_cache_test(simple_entries, function(cache) { 131 prepopulated_cache_test(simple_entries, function(cache, entries) {
121 return cache.matchAll(simple_entries.a.request.url) 132 return cache.matchAll(entries.a.request.url)
122 .then(function(result) { 133 .then(function(result) {
123 assert_array_objects_equals(result, [simple_entries.a.response], 134 assert_array_objects_equals(result, [entries.a.response],
124 'Cache.matchAll should match by URL.'); 135 'Cache.matchAll should match by URL.');
125 }); 136 });
126 }, 'Cache.matchAll with URL'); 137 }, 'Cache.matchAll with URL');
127 138
128 prepopulated_cache_test(simple_entries, function(cache) { 139 prepopulated_cache_test(simple_entries, function(cache, entries) {
129 return cache.match(simple_entries.a.request.url) 140 return cache.match(entries.a.request.url)
130 .then(function(result) { 141 .then(function(result) {
131 assert_object_equals(result, simple_entries.a.response, 142 assert_object_equals(result, entries.a.response,
132 'Cache.match should match by URL.'); 143 'Cache.match should match by URL.');
133 }); 144 });
134 }, 'Cache.match with URL'); 145 }, 'Cache.match with URL');
135 146
136 prepopulated_cache_test(simple_entries, function(cache) { 147 prepopulated_cache_test(simple_entries, function(cache, entries) {
137 return cache.matchAll(simple_entries.a.request) 148 return cache.matchAll(entries.a.request)
138 .then(function(result) { 149 .then(function(result) {
139 assert_array_objects_equals( 150 assert_array_objects_equals(
140 result, [simple_entries.a.response], 151 result, [entries.a.response],
141 'Cache.matchAll should match by Request.'); 152 'Cache.matchAll should match by Request.');
142 }); 153 });
143 }, 'Cache.matchAll with Request'); 154 }, 'Cache.matchAll with Request');
144 155
145 prepopulated_cache_test(simple_entries, function(cache) { 156 prepopulated_cache_test(simple_entries, function(cache, entries) {
146 return cache.match(simple_entries.a.request) 157 return cache.match(entries.a.request)
147 .then(function(result) { 158 .then(function(result) {
148 assert_object_equals(result, simple_entries.a.response, 159 assert_object_equals(result, entries.a.response,
149 'Cache.match should match by Request.'); 160 'Cache.match should match by Request.');
150 }); 161 });
151 }, 'Cache.match with Request'); 162 }, 'Cache.match with Request');
152 163
153 prepopulated_cache_test(simple_entries, function(cache) { 164 prepopulated_cache_test(simple_entries, function(cache, entries) {
154 return cache.matchAll(new Request(simple_entries.a.request.url)) 165 return cache.matchAll(new Request(entries.a.request.url))
155 .then(function(result) { 166 .then(function(result) {
156 assert_array_objects_equals( 167 assert_array_objects_equals(
157 result, [simple_entries.a.response], 168 result, [entries.a.response],
158 'Cache.matchAll should match by Request.'); 169 'Cache.matchAll should match by Request.');
159 }); 170 });
160 }, 'Cache.matchAll with new Request'); 171 }, 'Cache.matchAll with new Request');
161 172
162 prepopulated_cache_test(simple_entries, function(cache) { 173 prepopulated_cache_test(simple_entries, function(cache, entries) {
163 return cache.match(new Request(simple_entries.a.request.url)) 174 return cache.match(new Request(entries.a.request.url))
164 .then(function(result) { 175 .then(function(result) {
165 assert_object_equals(result, simple_entries.a.response, 176 assert_object_equals(result, entries.a.response,
166 'Cache.match should match by Request.'); 177 'Cache.match should match by Request.');
167 }); 178 });
168 }, 'Cache.match with new Request'); 179 }, 'Cache.match with new Request');
169 180
170 cache_test(function(cache) { 181 cache_test(function(cache) {
171 var request = new Request('https://example.com/foo', { 182 var request = new Request('https://example.com/foo', {
172 method: 'GET', 183 method: 'GET',
173 body: 'Hello world!' 184 body: 'Hello world!'
174 }); 185 });
175 var response = new Response('Booyah!', { 186 var response = new Response('Booyah!', {
(...skipping 10 matching lines...) Expand all
186 }) 197 })
187 .then(function() { 198 .then(function() {
188 return cache.match(request); 199 return cache.match(request);
189 }) 200 })
190 .then(function(result) { 201 .then(function(result) {
191 assert_false(request.bodyUsed, 202 assert_false(request.bodyUsed,
192 'Cache.match should not consume Request body.'); 203 'Cache.match should not consume Request body.');
193 }); 204 });
194 }, 'Cache.match with Request containing non-empty body'); 205 }, 'Cache.match with Request containing non-empty body');
195 206
196 prepopulated_cache_test(simple_entries, function(cache) { 207 prepopulated_cache_test(simple_entries, function(cache, entries) {
197 return cache.matchAll(simple_entries.a.request, 208 return cache.matchAll(entries.a.request,
198 {ignoreSearch: true}) 209 {ignoreSearch: true})
199 .then(function(result) { 210 .then(function(result) {
200 assert_array_equivalent( 211 assert_array_equivalent(
201 result, 212 result,
202 [ 213 [
203 simple_entries.a.response, 214 entries.a.response,
204 simple_entries.a_with_query.response 215 entries.a_with_query.response
205 ], 216 ],
206 'Cache.matchAll with ignoreSearch should ignore the ' + 217 'Cache.matchAll with ignoreSearch should ignore the ' +
207 'search parameters of cached request.'); 218 'search parameters of cached request.');
208 }); 219 });
209 }, 220 },
210 'Cache.matchAll with ignoreSearch option (request with no search ' + 221 'Cache.matchAll with ignoreSearch option (request with no search ' +
211 'parameters)'); 222 'parameters)');
212 223
213 prepopulated_cache_test(simple_entries, function(cache) { 224 prepopulated_cache_test(simple_entries, function(cache, entries) {
214 return cache.match(simple_entries.a.request, 225 return cache.match(entries.a.request,
215 {ignoreSearch: true}) 226 {ignoreSearch: true})
216 .then(function(result) { 227 .then(function(result) {
217 assert_object_in_array( 228 assert_object_in_array(
218 result, 229 result,
219 [ 230 [
220 simple_entries.a.response, 231 entries.a.response,
221 simple_entries.a_with_query.response 232 entries.a_with_query.response
222 ], 233 ],
223 'Cache.match with ignoreSearch should ignore the ' + 234 'Cache.match with ignoreSearch should ignore the ' +
224 'search parameters of cached request.'); 235 'search parameters of cached request.');
225 }); 236 });
226 }, 237 },
227 'Cache.match with ignoreSearch option (request with no search ' + 238 'Cache.match with ignoreSearch option (request with no search ' +
228 'parameters)'); 239 'parameters)');
229 240
230 prepopulated_cache_test(simple_entries, function(cache) { 241 prepopulated_cache_test(simple_entries, function(cache, entries) {
231 return cache.matchAll(simple_entries.a_with_query.request, 242 return cache.matchAll(entries.a_with_query.request,
232 {ignoreSearch: true}) 243 {ignoreSearch: true})
233 .then(function(result) { 244 .then(function(result) {
234 assert_array_equivalent( 245 assert_array_equivalent(
235 result, 246 result,
236 [ 247 [
237 simple_entries.a.response, 248 entries.a.response,
238 simple_entries.a_with_query.response 249 entries.a_with_query.response
239 ], 250 ],
240 'Cache.matchAll with ignoreSearch should ignore the ' + 251 'Cache.matchAll with ignoreSearch should ignore the ' +
241 'search parameters of request.'); 252 'search parameters of request.');
242 }); 253 });
243 }, 254 },
244 'Cache.matchAll with ignoreSearch option (request with search parameter)'); 255 'Cache.matchAll with ignoreSearch option (request with search parameter)');
245 256
246 prepopulated_cache_test(simple_entries, function(cache) { 257 prepopulated_cache_test(simple_entries, function(cache, entries) {
247 return cache.match(simple_entries.a_with_query.request, 258 return cache.match(entries.a_with_query.request,
248 {ignoreSearch: true}) 259 {ignoreSearch: true})
249 .then(function(result) { 260 .then(function(result) {
250 assert_object_in_array( 261 assert_object_in_array(
251 result, 262 result,
252 [ 263 [
253 simple_entries.a.response, 264 entries.a.response,
254 simple_entries.a_with_query.response 265 entries.a_with_query.response
255 ], 266 ],
256 'Cache.match with ignoreSearch should ignore the ' + 267 'Cache.match with ignoreSearch should ignore the ' +
257 'search parameters of request.'); 268 'search parameters of request.');
258 }); 269 });
259 }, 270 },
260 'Cache.match with ignoreSearch option (request with search parameter)'); 271 'Cache.match with ignoreSearch option (request with search parameter)');
261 272
262 prepopulated_cache_test(simple_entries, function(cache) { 273 prepopulated_cache_test(simple_entries, function(cache, entries) {
263 return cache.matchAll(simple_entries.cat.request.url + '#mouse') 274 return cache.matchAll(entries.cat.request.url + '#mouse')
264 .then(function(result) { 275 .then(function(result) {
265 assert_array_equivalent( 276 assert_array_equivalent(
266 result, 277 result,
267 [ 278 [
268 simple_entries.cat.response, 279 entries.cat.response,
269 ], 280 ],
270 'Cache.matchAll should ignore URL fragment.'); 281 'Cache.matchAll should ignore URL fragment.');
271 }); 282 });
272 }, 'Cache.matchAll with URL containing fragment'); 283 }, 'Cache.matchAll with URL containing fragment');
273 284
274 prepopulated_cache_test(simple_entries, function(cache) { 285 prepopulated_cache_test(simple_entries, function(cache, entries) {
275 return cache.match(simple_entries.cat.request.url + '#mouse') 286 return cache.match(entries.cat.request.url + '#mouse')
276 .then(function(result) { 287 .then(function(result) {
277 assert_object_equals(result, simple_entries.cat.response, 288 assert_object_equals(result, entries.cat.response,
278 'Cache.match should ignore URL fragment.'); 289 'Cache.match should ignore URL fragment.');
279 }); 290 });
280 }, 'Cache.match with URL containing fragment'); 291 }, 'Cache.match with URL containing fragment');
281 292
282 prepopulated_cache_test(simple_entries, function(cache) { 293 prepopulated_cache_test(simple_entries, function(cache, entries) {
283 return cache.matchAll('http') 294 return cache.matchAll('http')
284 .then(function(result) { 295 .then(function(result) {
285 assert_array_equivalent( 296 assert_array_equivalent(
286 result, [], 297 result, [],
287 'Cache.matchAll should treat query as a URL and not ' + 298 'Cache.matchAll should treat query as a URL and not ' +
288 'just a string fragment.'); 299 'just a string fragment.');
289 }); 300 });
290 }, 'Cache.matchAll with string fragment "http" as query'); 301 }, 'Cache.matchAll with string fragment "http" as query');
291 302
292 prepopulated_cache_test(simple_entries, function(cache) { 303 prepopulated_cache_test(simple_entries, function(cache, entries) {
293 return cache.match('http') 304 return cache.match('http')
294 .then(function(result) { 305 .then(function(result) {
295 assert_equals( 306 assert_equals(
296 result, undefined, 307 result, undefined,
297 'Cache.match should treat query as a URL and not ' + 308 'Cache.match should treat query as a URL and not ' +
298 'just a string fragment.'); 309 'just a string fragment.');
299 }); 310 });
300 }, 'Cache.match with string fragment "http" as query'); 311 }, 'Cache.match with string fragment "http" as query');
301 312
302 prepopulated_cache_test(simple_entries, function(cache) { 313 prepopulated_cache_test(simple_entries, function(cache, entries) {
303 return cache.matchAll('http://example.com/cat', 314 return cache.matchAll('http://example.com/cat',
304 {prefixMatch: true}) 315 {prefixMatch: true})
305 .then(function(result) { 316 .then(function(result) {
306 assert_array_equivalent( 317 assert_array_equivalent(
307 result, 318 result,
308 [ 319 [
309 simple_entries.cat.response, 320 entries.cat.response,
310 simple_entries.catmandu.response, 321 entries.catmandu.response,
311 simple_entries.cat_num_lives.response, 322 entries.cat_num_lives.response,
312 simple_entries.cat_in_the_hat.response 323 entries.cat_in_the_hat.response
313 ], 324 ],
314 'Cache.matchAll should honor prefixMatch.'); 325 'Cache.matchAll should honor prefixMatch.');
315 }); 326 });
316 }, 'Cache.matchAll with prefixMatch option'); 327 }, 'Cache.matchAll with prefixMatch option');
317 328
318 prepopulated_cache_test(simple_entries, function(cache) { 329 prepopulated_cache_test(simple_entries, function(cache, entries) {
319 return cache.match('http://example.com/cat', 330 return cache.match('http://example.com/cat',
320 {prefixMatch: true}) 331 {prefixMatch: true})
321 .then(function(result) { 332 .then(function(result) {
322 assert_object_in_array( 333 assert_object_in_array(
323 result, 334 result,
324 [ 335 [
325 simple_entries.cat.response, 336 entries.cat.response,
326 simple_entries.catmandu.response, 337 entries.catmandu.response,
327 simple_entries.cat_num_lives.response, 338 entries.cat_num_lives.response,
328 simple_entries.cat_in_the_hat.response 339 entries.cat_in_the_hat.response
329 ], 340 ],
330 'Cache.match should honor prefixMatch.'); 341 'Cache.match should honor prefixMatch.');
331 }); 342 });
332 }, 'Cache.match with prefixMatch option'); 343 }, 'Cache.match with prefixMatch option');
333 344
334 prepopulated_cache_test(simple_entries, function(cache) { 345 prepopulated_cache_test(simple_entries, function(cache, entries) {
335 return cache.matchAll('http://example.com/cat/', 346 return cache.matchAll('http://example.com/cat/',
336 {prefixMatch: true}) 347 {prefixMatch: true})
337 .then(function(result) { 348 .then(function(result) {
338 assert_array_equivalent( 349 assert_array_equivalent(
339 result, [simple_entries.cat_in_the_hat.response], 350 result, [entries.cat_in_the_hat.response],
340 'Cache.matchAll should honor prefixMatch.'); 351 'Cache.matchAll should honor prefixMatch.');
341 }); 352 });
342 }, 'Cache.matchAll with prefixMatch option (URL ending with path delimiter)'); 353 }, 'Cache.matchAll with prefixMatch option (URL ending with path delimiter)');
343 354
344 prepopulated_cache_test(simple_entries, function(cache) { 355 prepopulated_cache_test(simple_entries, function(cache, entries) {
345 return cache.match('http://example.com/cat/', 356 return cache.match('http://example.com/cat/',
346 {prefixMatch: true}) 357 {prefixMatch: true})
347 .then(function(result) { 358 .then(function(result) {
348 assert_object_equals( 359 assert_object_equals(
349 result, simple_entries.cat_in_the_hat.response, 360 result, entries.cat_in_the_hat.response,
350 'Cache.match should honor prefixMatch.'); 361 'Cache.match should honor prefixMatch.');
351 }); 362 });
352 }, 'Cache.match with prefixMatch option (URL ending with path delimiter)'); 363 }, 'Cache.match with prefixMatch option (URL ending with path delimiter)');
353 364
354 prepopulated_cache_test(simple_entries, function(cache) { 365 prepopulated_cache_test(simple_entries, function(cache, entries) {
355 return cache.matchAll('http://tom:jerry@example.com', {prefixMatch: true}) 366 return cache.matchAll('http://tom:jerry@example.com', {prefixMatch: true})
356 .then(function(result) { 367 .then(function(result) {
357 assert_array_equivalent( 368 assert_array_equivalent(
358 result, 369 result,
359 [ 370 [
360 simple_entries.secret_cat.response, 371 entries.secret_cat.response,
361 ], 372 ],
362 'Cache.matchAll should honor prefixMatch.'); 373 'Cache.matchAll should honor prefixMatch.');
363 }); 374 });
364 }, 'Cache.matchAll with prefixMatch option (URL with embedded credentials)'); 375 }, 'Cache.matchAll with prefixMatch option (URL with embedded credentials)');
365 376
366 prepopulated_cache_test(simple_entries, function(cache) { 377 prepopulated_cache_test(simple_entries, function(cache, entries) {
367 return cache.match('http://tom:jerry@example.com', {prefixMatch: true}) 378 return cache.match('http://tom:jerry@example.com', {prefixMatch: true})
368 .then(function(result) { 379 .then(function(result) {
369 assert_object_equals( 380 assert_object_equals(
370 result, simple_entries.secret_cat.response, 381 result, entries.secret_cat.response,
371 'Cache.match should honor prefixMatch.'); 382 'Cache.match should honor prefixMatch.');
372 }); 383 });
373 }, 'Cache.match with prefixMatch option (URL with embedded credentials)'); 384 }, 'Cache.match with prefixMatch option (URL with embedded credentials)');
374 385
375 prepopulated_cache_test(simple_entries, function(cache) { 386 prepopulated_cache_test(simple_entries, function(cache, entries) {
376 // The string 'http://tom' should be converted to a URL and then serialized 387 // The string 'http://tom' should be converted to a URL and then serialized
377 // yielding 'http://tom/'. The trailing slash prevents the URL from matching 388 // yielding 'http://tom/'. The trailing slash prevents the URL from matching
378 // the embedded credentials in the entries already in the cache. 389 // the embedded credentials in the entries already in the cache.
379 return cache.matchAll('http://tom', {prefixMatch: true}) 390 return cache.matchAll('http://tom', {prefixMatch: true})
380 .then(function(result) { 391 .then(function(result) {
381 assert_array_equivalent( 392 assert_array_equivalent(
382 result, [], 393 result, [],
383 'Cache.matchAll should honor prefixMatch.'); 394 'Cache.matchAll should honor prefixMatch.');
384 }); 395 });
385 }, 396 },
386 'Cache.matchAll with prefixMatch option (URL matching embedded credentials)'); 397 'Cache.matchAll with prefixMatch option (URL matching embedded credentials)');
387 398
388 prepopulated_cache_test(simple_entries, function(cache) { 399 prepopulated_cache_test(simple_entries, function(cache, entries) {
389 // The string 'http://tom' should be converted to a URL and then serialized 400 // The string 'http://tom' should be converted to a URL and then serialized
390 // yielding 'http://tom/'. The trailing slash prevents the URL from matching 401 // yielding 'http://tom/'. The trailing slash prevents the URL from matching
391 // the embedded credentials in the entries already in the cache. 402 // the embedded credentials in the entries already in the cache.
392 return cache.match('http://tom', {prefixMatch: true}) 403 return cache.match('http://tom', {prefixMatch: true})
393 .then(function(result) { 404 .then(function(result) {
394 assert_equals(result, undefined, 405 assert_equals(result, undefined,
395 'Cache.match should honor prefixMatch.'); 406 'Cache.match should honor prefixMatch.');
396 }); 407 });
397 }, 408 },
398 'Cache.match with prefixMatch option (URL matching embedded credentials)'); 409 'Cache.match with prefixMatch option (URL matching embedded credentials)');
399 410
400 prepopulated_cache_test(simple_entries, function(cache) { 411 prepopulated_cache_test(simple_entries, function(cache, entries) {
401 return cache.matchAll(simple_entries.secret_cat.request.url) 412 return cache.matchAll(entries.secret_cat.request.url)
402 .then(function(result) { 413 .then(function(result) {
403 assert_array_equivalent( 414 assert_array_equivalent(
404 result, [simple_entries.secret_cat.response], 415 result, [entries.secret_cat.response],
405 'Cache.matchAll should not ignore embedded credentials'); 416 'Cache.matchAll should not ignore embedded credentials');
406 }); 417 });
407 }, 'Cache.matchAll with URL containing credentials'); 418 }, 'Cache.matchAll with URL containing credentials');
408 419
409 prepopulated_cache_test(simple_entries, function(cache) { 420 prepopulated_cache_test(simple_entries, function(cache, entries) {
410 return cache.match(simple_entries.secret_cat.request.url) 421 return cache.match(entries.secret_cat.request.url)
411 .then(function(result) { 422 .then(function(result) {
412 assert_object_equals( 423 assert_object_equals(
413 result, simple_entries.secret_cat.response, 424 result, entries.secret_cat.response,
414 'Cache.match should not ignore embedded credentials'); 425 'Cache.match should not ignore embedded credentials');
415 }); 426 });
416 }, 'Cache.match with URL containing credentials'); 427 }, 'Cache.match with URL containing credentials');
417 428
418 prepopulated_cache_test(vary_entries, function(cache) { 429 prepopulated_cache_test(vary_entries, function(cache, entries) {
419 return cache.matchAll('http://example.com/c') 430 return cache.matchAll('http://example.com/c')
420 .then(function(result) { 431 .then(function(result) {
421 assert_array_equivalent( 432 assert_array_equivalent(
422 result, 433 result,
423 [ 434 [
424 vary_entries.no_vary_header.response, 435 entries.vary_wildcard.response,
425 vary_entries.vary_wildcard.response, 436 entries.vary_cookie_absent.response
426 vary_entries.vary_cookie_absent.response
427 ], 437 ],
428 'Cache.matchAll should exclude matches if a vary header is ' + 438 'Cache.matchAll should exclude matches if a vary header is ' +
429 'missing in the query request, but is present in the cached ' + 439 'missing in the query request, but is present in the cached ' +
430 'request.'); 440 'request.');
431 }) 441 })
432 442
433 .then(function() { 443 .then(function() {
434 return cache.matchAll( 444 return cache.matchAll(
435 new Request('http://example.com/c', 445 new Request('http://example.com/c',
436 {headers: {'Cookies': 'none-of-the-above'}})); 446 {headers: {'Cookies': 'none-of-the-above'}}));
437 }) 447 })
438 .then(function(result) { 448 .then(function(result) {
439 assert_array_equivalent( 449 assert_array_equivalent(
440 result, 450 result,
441 [ 451 [
442 vary_entries.no_vary_header.response, 452 entries.vary_wildcard.response
443 vary_entries.vary_wildcard.response
444 ], 453 ],
445 'Cache.matchAll should exclude matches if a vary header is ' + 454 'Cache.matchAll should exclude matches if a vary header is ' +
446 'missing in the cached request, but is present in the query ' + 455 'missing in the cached request, but is present in the query ' +
447 'request.'); 456 'request.');
448 }) 457 })
449 458
450 .then(function() { 459 .then(function() {
451 return cache.matchAll( 460 return cache.matchAll(
452 new Request('http://example.com/c', 461 new Request('http://example.com/c',
453 {headers: {'Cookies': 'is-for-cookie'}})); 462 {headers: {'Cookies': 'is-for-cookie'}}));
454 }) 463 })
455 .then(function(result) { 464 .then(function(result) {
456 assert_array_equivalent( 465 assert_array_equivalent(
457 result, 466 result,
458 [vary_entries.vary_cookie_is_cookie.response], 467 [entries.vary_cookie_is_cookie.response],
459 'Cache.matchAll should match the entire header if a vary header ' + 468 'Cache.matchAll should match the entire header if a vary header ' +
460 'is present in both the query and cached requests.'); 469 'is present in both the query and cached requests.');
461 }); 470 });
462 }, 'Cache.matchAll with responses containing "Vary" header'); 471 }, 'Cache.matchAll with responses containing "Vary" header');
463 472
464 prepopulated_cache_test(vary_entries, function(cache) { 473 prepopulated_cache_test(vary_entries, function(cache, entries) {
465 return cache.match('http://example.com/c') 474 return cache.match('http://example.com/c')
466 .then(function(result) { 475 .then(function(result) {
467 assert_object_in_array( 476 assert_object_in_array(
468 result, 477 result,
469 [ 478 [
470 vary_entries.no_vary_header.response, 479 entries.vary_wildcard.response,
471 vary_entries.vary_wildcard.response, 480 entries.vary_cookie_absent.response
472 vary_entries.vary_cookie_absent.response
473 ], 481 ],
474 'Cache.match should honor "Vary" header.'); 482 'Cache.match should honor "Vary" header.');
475 }); 483 });
476 }, 'Cache.match with responses containing "Vary" header'); 484 }, 'Cache.match with responses containing "Vary" header');
477 485
478 prepopulated_cache_test(vary_entries, function(cache) { 486 prepopulated_cache_test(vary_entries, function(cache, entries) {
479 return cache.matchAll('http://example.com/c', 487 return cache.matchAll('http://example.com/c',
480 {ignoreVary: true}) 488 {ignoreVary: true})
481 .then(function(result) { 489 .then(function(result) {
482 assert_array_equivalent( 490 assert_array_equivalent(
483 result, 491 result,
484 [ 492 [
485 vary_entries.no_vary_header.response, 493 entries.vary_cookie_is_cookie.response,
486 vary_entries.vary_cookie_is_cookie.response, 494 entries.vary_cookie_is_good.response,
487 vary_entries.vary_cookie_is_good.response, 495 entries.vary_cookie_absent.response,
488 vary_entries.vary_cookie_absent.response, 496 entries.vary_wildcard.response
489 vary_entries.vary_wildcard.response
490 ], 497 ],
491 'Cache.matchAll should honor "ignoreVary" parameter.'); 498 'Cache.matchAll should honor "ignoreVary" parameter.');
492 }); 499 });
493 }, 'Cache.matchAll with "ignoreVary" parameter'); 500 }, 'Cache.matchAll with "ignoreVary" parameter');
494 501
495 cache_test(function(cache) { 502 cache_test(function(cache) {
496 var request = new Request('http://example.com'); 503 var request = new Request('http://example.com');
497 var response; 504 var response;
498 var request_url = new URL('simple.txt', location.href).href; 505 var request_url = new URL('simple.txt', location.href).href;
499 return fetch(request_url) 506 return fetch(request_url)
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 'Cache.match should return a Response object with a ' + 557 'Cache.match should return a Response object with a ' +
551 'valid body each time it is called.'); 558 'valid body each time it is called.');
552 }); 559 });
553 }, 'Cache.match invoked multiple times for the same Request/Response'); 560 }, 'Cache.match invoked multiple times for the same Request/Response');
554 561
555 // Helpers --- 562 // Helpers ---
556 563
557 // Run |test_function| with a Cache object as its only parameter. Prior to the 564 // Run |test_function| with a Cache object as its only parameter. Prior to the
558 // call, the Cache is populated by cache entries from |entries|. The latter is 565 // call, the Cache is populated by cache entries from |entries|. The latter is
559 // expected to be an Object mapping arbitrary keys to objects of the form 566 // expected to be an Object mapping arbitrary keys to objects of the form
560 // {request: <Request object>, response: <Response object>}. 567 // {request: <Request object>, response: <Response object>}. There's no
568 // guarantee on the order in which entries will be added to the cache.
561 // 569 //
562 // |test_function| should return a Promise that can be used with promise_test. 570 // |test_function| should return a Promise that can be used with promise_test.
563 function prepopulated_cache_test(entries, test_function, description) { 571 function prepopulated_cache_test(entries, test_function, description) {
564 cache_test(function(cache) { 572 cache_test(function(cache) {
565 return Promise.all(Object.keys(entries).map(function(k) { 573 var p = Promise.resolve();
566 return cache.put(entries[k].request, entries[k].response) 574 var hash = {};
567 .catch(function(e) { 575 entries.forEach(function(entry) {
568 assert_unreached('Test setup failed for entry ' + k + ' : ' + e) ; 576 p = p.then(function() {
569 }); 577 return cache.put(entry.request, entry.response)
570 })) 578 .catch(function(e) {
571 .then(function() { 579 assert_unreached('Test setup failed for entry ' +
572 return test_function(cache); 580 entry.name + ': ' + e);
573 }); 581 });
582 });
583 hash[entry.name] = entry;
584 });
585 p = p.then(function() {
586 assert_equals(Object.keys(hash).length, entries.length);
587 });
588
589 return p.then(function() {
590 return test_function(cache, hash);
591 });
574 }, description); 592 }, description);
575 } 593 }
OLDNEW
« no previous file with comments | « LayoutTests/http/tests/serviceworker/cache-match-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698