Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 a: { |
| 7 request: new Request('http://example.com/a'), | 7 request: new Request('http://example.com/a'), |
| 8 response: new Response('') | 8 response: new Response('') |
| 9 }, | 9 }, |
| 10 | 10 |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 31 a_org: { | 31 a_org: { |
| 32 request: new Request('http://example.org/a'), | 32 request: new Request('http://example.org/a'), |
| 33 response: new Response('') | 33 response: new Response('') |
| 34 }, | 34 }, |
| 35 | 35 |
| 36 cat: { | 36 cat: { |
| 37 request: new Request('http://example.com/cat'), | 37 request: new Request('http://example.com/cat'), |
| 38 response: new Response('') | 38 response: new Response('') |
| 39 }, | 39 }, |
| 40 | 40 |
| 41 cat_with_fragment: { | 41 catmandu: { |
| 42 request: new Request('http://example.com/cat#mouse'), | 42 request: new Request('http://example.com/catmandu'), |
| 43 response: new Response('') | |
| 44 }, | |
| 45 | |
| 46 cat_num_lives: { | |
| 47 request: new Request('http://example.com/cat?lives=9'), | |
| 43 response: new Response('') | 48 response: new Response('') |
| 44 }, | 49 }, |
| 45 | 50 |
| 46 cat_in_the_hat: { | 51 cat_in_the_hat: { |
| 47 request: new Request('http://example.com/cat/in/the/hat'), | 52 request: new Request('http://example.com/cat/in/the/hat'), |
| 48 response: new Response('') | 53 response: new Response('') |
| 54 }, | |
| 55 | |
| 56 secret_cat: { | |
| 57 request: new Request('http://tom:jerry@example.com/cat'), | |
| 58 response: new Response('') | |
| 59 }, | |
| 60 | |
| 61 top_secret_cat: { | |
| 62 request: new Request('http://tom:j3rry@example.com/cat'), | |
| 63 response: new Response('') | |
| 49 } | 64 } |
| 50 }; | 65 }; |
| 51 | 66 |
| 52 // A set of Request/Response pairs to be used with prepopulated_cache_test(). | 67 // A set of Request/Response pairs to be used with prepopulated_cache_test(). |
| 53 // These contain a mix of test cases that use Vary headers. | 68 // These contain a mix of test cases that use Vary headers. |
| 54 var vary_entries = { | 69 var vary_entries = { |
| 55 no_vary_header: { | 70 no_vary_header: { |
| 56 request: new Request('http://example.com/c'), | 71 request: new Request('http://example.com/c'), |
| 57 response: new Response('') | 72 response: new Response('') |
| 58 }, | 73 }, |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 79 | 94 |
| 80 vary_wildcard: { | 95 vary_wildcard: { |
| 81 request: new Request('http://example.com/c', | 96 request: new Request('http://example.com/c', |
| 82 {headers: {'Cookies': 'x', 'X-Key': '1'}}), | 97 {headers: {'Cookies': 'x', 'X-Key': '1'}}), |
| 83 response: new Response('', | 98 response: new Response('', |
| 84 {headers: {'Vary': '*'}}) | 99 {headers: {'Vary': '*'}}) |
| 85 } | 100 } |
| 86 }; | 101 }; |
| 87 | 102 |
| 88 prepopulated_cache_test(simple_entries, function(cache) { | 103 prepopulated_cache_test(simple_entries, function(cache) { |
| 104 return cacheAll.match('not-present-in-the-cache') | |
|
jsbell
2014/11/07 01:00:56
cacheAll.match -> cache.matchAll ?
asanka
2014/11/07 18:55:40
Oops. Done.
| |
| 105 .then(function(result) { | |
| 106 assert_array_equivalent( | |
| 107 result, [], | |
| 108 'Cache.matchAll should resolve with an empty array on failure.'); | |
| 109 }); | |
| 110 }, 'Cache.matchAll with no matching entries'); | |
| 111 | |
| 112 prepopulated_cache_test(simple_entries, function(cache) { | |
| 89 return cache.match('not-present-in-the-cache') | 113 return cache.match('not-present-in-the-cache') |
| 90 .then(function(result) { | 114 .then(function(result) { |
| 91 assert_equals(result, undefined, | 115 assert_equals(result, undefined, |
| 92 'Cache.match failures should resolve with undefined.'); | 116 'Cache.match failures should resolve with undefined.'); |
| 93 }); | 117 }); |
| 94 }, 'Cache.match failure'); | 118 }, 'Cache.match with no matching entries'); |
| 95 | 119 |
| 96 prepopulated_cache_test(simple_entries, function(cache) { | 120 prepopulated_cache_test(simple_entries, function(cache) { |
| 97 return cache.matchAll(simple_entries.a.request.url) | 121 return cache.matchAll(simple_entries.a.request.url) |
| 98 .then(function(result) { | 122 .then(function(result) { |
| 99 assert_array_objects_equals(result, [simple_entries.a.response], | 123 assert_array_objects_equals(result, [simple_entries.a.response], |
| 100 'Cache.matchAll should match by URL.'); | 124 'Cache.matchAll should match by URL.'); |
| 101 }); | 125 }); |
| 102 }, 'Cache.matchAll with URL'); | 126 }, 'Cache.matchAll with URL'); |
| 103 | 127 |
| 104 prepopulated_cache_test(simple_entries, function(cache) { | 128 prepopulated_cache_test(simple_entries, function(cache) { |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 180 simple_entries.a_with_query.response | 204 simple_entries.a_with_query.response |
| 181 ], | 205 ], |
| 182 'Cache.matchAll with ignoreSearch should ignore the ' + | 206 'Cache.matchAll with ignoreSearch should ignore the ' + |
| 183 'search parameters of cached request.'); | 207 'search parameters of cached request.'); |
| 184 }); | 208 }); |
| 185 }, | 209 }, |
| 186 'Cache.matchAll with ignoreSearch option (request with no search ' + | 210 'Cache.matchAll with ignoreSearch option (request with no search ' + |
| 187 'parameters)'); | 211 'parameters)'); |
| 188 | 212 |
| 189 prepopulated_cache_test(simple_entries, function(cache) { | 213 prepopulated_cache_test(simple_entries, function(cache) { |
| 214 return cache.match(simple_entries.a.request, | |
| 215 {ignoreSearch: true}) | |
| 216 .then(function(result) { | |
| 217 assert_object_in_array( | |
| 218 result, | |
| 219 [ | |
| 220 simple_entries.a.response, | |
| 221 simple_entries.a_with_query.response | |
| 222 ], | |
| 223 'Cache.match with ignoreSearch should ignore the ' + | |
| 224 'search parameters of cached request.'); | |
| 225 }); | |
| 226 }, | |
| 227 'Cache.match with ignoreSearch option (request with no search ' + | |
| 228 'parameters)'); | |
| 229 | |
| 230 prepopulated_cache_test(simple_entries, function(cache) { | |
| 190 return cache.matchAll(simple_entries.a_with_query.request, | 231 return cache.matchAll(simple_entries.a_with_query.request, |
| 191 {ignoreSearch: true}) | 232 {ignoreSearch: true}) |
| 192 .then(function(result) { | 233 .then(function(result) { |
| 193 assert_array_equivalent( | 234 assert_array_equivalent( |
| 194 result, | 235 result, |
| 195 [ | 236 [ |
| 196 simple_entries.a.response, | 237 simple_entries.a.response, |
| 197 simple_entries.a_with_query.response | 238 simple_entries.a_with_query.response |
| 198 ], | 239 ], |
| 199 'Cache.matchAll with ignoreSearch should ignore the ' + | 240 'Cache.matchAll with ignoreSearch should ignore the ' + |
| 200 'search parameters of request.'); | 241 'search parameters of request.'); |
| 201 }); | 242 }); |
| 202 }, | 243 }, |
| 203 'Cache.matchAll with ignoreSearch option (request with search parameter)'); | 244 'Cache.matchAll with ignoreSearch option (request with search parameter)'); |
| 204 | 245 |
| 205 prepopulated_cache_test(simple_entries, function(cache) { | 246 prepopulated_cache_test(simple_entries, function(cache) { |
| 206 return cache.matchAll(simple_entries.cat.request) | 247 return cache.match(simple_entries.a_with_query.request, |
| 248 {ignoreSearch: true}) | |
| 249 .then(function(result) { | |
| 250 assert_object_in_array( | |
| 251 result, | |
| 252 [ | |
| 253 simple_entries.a.response, | |
| 254 simple_entries.a_with_query.response | |
| 255 ], | |
| 256 'Cache.match with ignoreSearch should ignore the ' + | |
| 257 'search parameters of request.'); | |
| 258 }); | |
| 259 }, | |
| 260 'Cache.match with ignoreSearch option (request with search parameter)'); | |
| 261 | |
| 262 prepopulated_cache_test(simple_entries, function(cache) { | |
| 263 return cache.matchAll(simple_entries.cat.request.url + '#mouse') | |
| 207 .then(function(result) { | 264 .then(function(result) { |
| 208 assert_array_equivalent( | 265 assert_array_equivalent( |
| 209 result, | 266 result, |
| 210 [ | 267 [ |
| 211 simple_entries.cat.response, | 268 simple_entries.cat.response, |
| 212 simple_entries.cat_with_fragment.response | |
| 213 ], | 269 ], |
| 214 'Cache.matchAll should ignore URL hash.'); | 270 'Cache.matchAll should ignore URL fragment.'); |
| 215 }); | 271 }); |
| 216 }, 'Cache.matchAll with request containing hash'); | 272 }, 'Cache.matchAll with URL containing fragment'); |
| 273 | |
| 274 prepopulated_cache_test(simple_entries, function(cache) { | |
| 275 return cache.match(simple_entries.cat.request.url + '#mouse') | |
| 276 .then(function(result) { | |
| 277 assert_object_equals(result, simple_entries.cat.response, | |
| 278 'Cache.match should ignore URL fragment.'); | |
| 279 }); | |
| 280 }, 'Cache.match with URL containing fragment'); | |
| 217 | 281 |
| 218 prepopulated_cache_test(simple_entries, function(cache) { | 282 prepopulated_cache_test(simple_entries, function(cache) { |
| 219 return cache.matchAll('http') | 283 return cache.matchAll('http') |
| 220 .then(function(result) { | 284 .then(function(result) { |
| 221 assert_array_equivalent( | 285 assert_array_equivalent( |
| 222 result, [], | 286 result, [], |
| 223 'Cache.matchAll should treat query as a URL and not ' + | 287 'Cache.matchAll should treat query as a URL and not ' + |
| 224 'just a string fragment.'); | 288 'just a string fragment.'); |
| 225 }); | 289 }); |
| 226 }, 'Cache.matchAll with string fragment "http" as query'); | 290 }, 'Cache.matchAll with string fragment "http" as query'); |
| 227 | 291 |
| 228 prepopulated_cache_test(simple_entries, function(cache) { | 292 prepopulated_cache_test(simple_entries, function(cache) { |
| 293 return cache.match('http') | |
| 294 .then(function(result) { | |
| 295 assert_equals( | |
| 296 result, undefined, | |
| 297 'Cache.match should treat query as a URL and not ' + | |
| 298 'just a string fragment.'); | |
| 299 }); | |
| 300 }, 'Cache.match with string fragment "http" as query'); | |
| 301 | |
| 302 prepopulated_cache_test(simple_entries, function(cache) { | |
| 229 return cache.matchAll('http://example.com/cat', | 303 return cache.matchAll('http://example.com/cat', |
| 230 {prefixMatch: true}) | 304 {prefixMatch: true}) |
| 231 .then(function(result) { | 305 .then(function(result) { |
| 232 assert_array_equivalent( | 306 assert_array_equivalent( |
| 233 result, | 307 result, |
| 234 [ | 308 [ |
| 235 simple_entries.cat.response, | 309 simple_entries.cat.response, |
| 236 simple_entries.cat_with_fragment.response, | 310 simple_entries.catmandu.response, |
| 311 simple_entries.cat_num_lives.response, | |
| 237 simple_entries.cat_in_the_hat.response | 312 simple_entries.cat_in_the_hat.response |
| 238 ], | 313 ], |
| 239 'Cache.matchAll should honor prefixMatch.'); | 314 'Cache.matchAll should honor prefixMatch.'); |
| 240 }); | 315 }); |
| 241 }, 'Cache.matchAll with prefixMatch option'); | 316 }, 'Cache.matchAll with prefixMatch option'); |
| 242 | 317 |
| 243 prepopulated_cache_test(simple_entries, function(cache) { | 318 prepopulated_cache_test(simple_entries, function(cache) { |
| 319 return cache.match('http://example.com/cat', | |
| 320 {prefixMatch: true}) | |
| 321 .then(function(result) { | |
| 322 assert_object_in_array( | |
| 323 result, | |
| 324 [ | |
| 325 simple_entries.cat.response, | |
| 326 simple_entries.catmandu.response, | |
| 327 simple_entries.cat_num_lives.response, | |
| 328 simple_entries.cat_in_the_hat.response | |
| 329 ], | |
| 330 'Cache.match should honor prefixMatch.'); | |
| 331 }); | |
| 332 }, 'Cache.match with prefixMatch option'); | |
| 333 | |
| 334 prepopulated_cache_test(simple_entries, function(cache) { | |
| 244 return cache.matchAll('http://example.com/cat/', | 335 return cache.matchAll('http://example.com/cat/', |
| 245 {prefixMatch: true}) | 336 {prefixMatch: true}) |
| 246 .then(function(result) { | 337 .then(function(result) { |
| 247 assert_array_equivalent( | 338 assert_array_equivalent( |
| 248 result, [simple_entries.cat_in_the_hat.response], | 339 result, [simple_entries.cat_in_the_hat.response], |
| 249 'Cache.matchAll should honor prefixMatch.'); | 340 'Cache.matchAll should honor prefixMatch.'); |
| 250 }); | 341 }); |
| 251 }, 'Cache.matchAll with prefixMatch option'); | 342 }, 'Cache.matchAll with prefixMatch option (URL ending with path delimiter)'); |
| 343 | |
| 344 prepopulated_cache_test(simple_entries, function(cache) { | |
| 345 return cache.match('http://example.com/cat/', | |
| 346 {prefixMatch: true}) | |
| 347 .then(function(result) { | |
| 348 assert_object_equals( | |
| 349 result, simple_entries.cat_in_the_hat.response, | |
| 350 'Cache.match should honor prefixMatch.'); | |
| 351 }); | |
| 352 }, 'Cache.match with prefixMatch option (URL ending with path delimiter)'); | |
| 353 | |
| 354 prepopulated_cache_test(simple_entries, function(cache) { | |
| 355 return cache.matchAll('http://tom:jerry@example.com', {prefixMatch: true}) | |
| 356 .then(function(result) { | |
| 357 assert_array_equivalent( | |
| 358 result, | |
| 359 [ | |
| 360 simple_entries.secret_cat.response, | |
| 361 ], | |
| 362 'Cache.matchAll should honor prefixMatch.'); | |
| 363 }); | |
| 364 }, 'Cache.matchAll with prefixMatch option (URL with embedded credentials)'); | |
| 365 | |
| 366 prepopulated_cache_test(simple_entries, function(cache) { | |
| 367 return cache.match('http://tom:jerry@example.com', {prefixMatch: true}) | |
| 368 .then(function(result) { | |
| 369 assert_object_equals( | |
| 370 result, simple_entries.secret_cat.response, | |
| 371 'Cache.match should honor prefixMatch.'); | |
| 372 }); | |
| 373 }, 'Cache.match with prefixMatch option (URL with embedded credentials)'); | |
| 374 | |
| 375 prepopulated_cache_test(simple_entries, function(cache) { | |
| 376 // 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 | |
| 378 // the embedded credentials in the entries already in the cache. | |
| 379 return cache.matchAll('http://tom', {prefixMatch: true}) | |
| 380 .then(function(result) { | |
| 381 assert_array_equivalent( | |
| 382 result, [], | |
| 383 'Cache.matchAll should honor prefixMatch.'); | |
| 384 }); | |
| 385 }, | |
| 386 'Cache.matchAll with prefixMatch option (URL matching embedded credentials)'); | |
| 387 | |
| 388 prepopulated_cache_test(simple_entries, function(cache) { | |
| 389 // 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 | |
| 391 // the embedded credentials in the entries already in the cache. | |
| 392 return cache.match('http://tom', {prefixMatch: true}) | |
| 393 .then(function(result) { | |
| 394 assert_equals(result, undefined, | |
| 395 'Cache.match should honor prefixMatch.'); | |
| 396 }); | |
| 397 }, | |
| 398 'Cache.match with prefixMatch option (URL matching embedded credentials)'); | |
| 399 | |
| 400 prepopulated_cache_test(simple_entries, function(cache) { | |
| 401 return cache.matchAll(simple_entries.secret_cat.request.url) | |
| 402 .then(function(result) { | |
| 403 assert_array_equivalent( | |
| 404 result, [simple_entries.secret_cat.response], | |
| 405 'Cache.matchAll should not ignore embedded credentials'); | |
| 406 }); | |
| 407 }, 'Cache.matchAll with URL containing credentials'); | |
| 408 | |
| 409 prepopulated_cache_test(simple_entries, function(cache) { | |
| 410 return cache.match(simple_entries.secret_cat.request.url) | |
| 411 .then(function(result) { | |
| 412 assert_object_equals( | |
| 413 result, simple_entries.secret_cat.response, | |
| 414 'Cache.match should not ignore embedded credentials'); | |
| 415 }); | |
| 416 }, 'Cache.match with URL containing credentials'); | |
| 252 | 417 |
| 253 prepopulated_cache_test(vary_entries, function(cache) { | 418 prepopulated_cache_test(vary_entries, function(cache) { |
| 254 return cache.matchAll('http://example.com/c') | 419 return cache.matchAll('http://example.com/c') |
| 255 .then(function(result) { | 420 .then(function(result) { |
| 256 assert_array_equivalent( | 421 assert_array_equivalent( |
| 257 result, | 422 result, |
| 258 [ | 423 [ |
| 259 vary_entries.no_vary_header.response, | 424 vary_entries.no_vary_header.response, |
| 260 vary_entries.vary_wildcard.response, | 425 vary_entries.vary_wildcard.response, |
| 261 vary_entries.vary_cookie_absent.response | 426 vary_entries.vary_cookie_absent.response |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 401 return cache.put(entries[k].request, entries[k].response); | 566 return cache.put(entries[k].request, entries[k].response); |
| 402 })) | 567 })) |
| 403 .catch(function(reason) { | 568 .catch(function(reason) { |
| 404 assert_unreached('Test setup failed: ' + reason.message); | 569 assert_unreached('Test setup failed: ' + reason.message); |
| 405 }) | 570 }) |
| 406 .then(function() { | 571 .then(function() { |
| 407 return test_function(cache); | 572 return test_function(cache); |
| 408 }); | 573 }); |
| 409 }, description); | 574 }, description); |
| 410 } | 575 } |
| OLD | NEW |