| OLD | NEW |
| (Empty) |
| 1 if (self.importScripts) { | |
| 2 importScripts('../resources/fetch-test-helpers.js'); | |
| 3 importScripts('../resources/fetch-access-control-util.js'); | |
| 4 } | |
| 5 | |
| 6 // Tests for CORS preflight fetch (non-simple methods). | |
| 7 // Spec: https://fetch.spec.whatwg.org/#cors-preflight-fetch | |
| 8 | |
| 9 var TEST_TARGETS = []; | |
| 10 | |
| 11 ['PUT', 'XXX'].forEach(function(method) { | |
| 12 var checkMethod = checkJsonpMethod.bind(this, method); | |
| 13 TEST_TARGETS.push( | |
| 14 // CORS check | |
| 15 // https://fetch.spec.whatwg.org/#concept-cors-check | |
| 16 // Tests for Access-Control-Allow-Origin header. | |
| 17 // CORS preflight fetch | |
| 18 // https://fetch.spec.whatwg.org/#cors-preflight-fetch | |
| 19 // Tests for Access-Control-Allow-Methods header. | |
| 20 // Tests for Access-Control-Allow-Headers header. | |
| 21 [OTHER_BASE_URL + 'mode=cors&method=' + method, | |
| 22 [fetchRejected]], | |
| 23 [OTHER_BASE_URL + 'mode=cors&method=' + method + '&ACAMethods=' + method, | |
| 24 [fetchRejected]], | |
| 25 [OTHER_BASE_URL + 'mode=cors&method=' + method + '&ACAOrigin=*', | |
| 26 [fetchRejected]], | |
| 27 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 28 '&ACAOrigin=*&ACAMethods=' + method, | |
| 29 [fetchResolved, noContentLength, noServerHeader, hasBody, typeCors], | |
| 30 [checkMethod]], | |
| 31 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 32 '&ACAOrigin=*&headers=CUSTOM&ACAMethods=' + method, | |
| 33 [fetchRejected]], | |
| 34 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 35 '&ACAOrigin=*&headers=CUSTOM&ACAMethods=' + method + | |
| 36 '&ACAHeaders=x-serviceworker-test', | |
| 37 [fetchResolved, noContentLength, noServerHeader, hasBody, typeCors], | |
| 38 [checkMethod, hasCustomHeader]], | |
| 39 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 40 '&ACAOrigin=*&headers=CUSTOM&ACAMethods=' + method + | |
| 41 '&ACAHeaders=x-serviceworker-test&ACEHeaders=Content-Length, X-ServiceWor
ker-ServerHeader', | |
| 42 [fetchResolved, hasContentLength, hasServerHeader, hasBody, typeCors], | |
| 43 [checkMethod, hasCustomHeader]], | |
| 44 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 45 '&ACAOrigin=*&headers=CUSTOM&ACAMethods=PUT, XXX', | |
| 46 [fetchRejected]], | |
| 47 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 48 '&ACAOrigin=*&headers=CUSTOM&ACAMethods=PUT, XXX&ACAHeaders=x-servicework
er-test', | |
| 49 [fetchResolved, noContentLength, noServerHeader, hasBody, typeCors], | |
| 50 [checkMethod, hasCustomHeader]], | |
| 51 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 52 '&ACAOrigin=*&headers=CUSTOM&ACAMethods=PUT, XXX&ACAHeaders=x-servicework
er-test&ACEHeaders=Content-Length, X-ServiceWorker-ServerHeader', | |
| 53 [fetchResolved, hasContentLength, hasServerHeader, hasBody, typeCors], | |
| 54 [checkMethod, hasCustomHeader]], | |
| 55 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 56 '&ACAOrigin=' + BASE_ORIGIN, | |
| 57 [fetchRejected]], | |
| 58 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 59 '&ACAOrigin=' + BASE_ORIGIN + '&ACAMethods=' + method, | |
| 60 [fetchResolved, noContentLength, noServerHeader, hasBody, typeCors], | |
| 61 [checkMethod]], | |
| 62 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 63 '&ACAOrigin=' + BASE_ORIGIN + '&headers=CUSTOM&ACAMethods=' + method, | |
| 64 [fetchRejected]], | |
| 65 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 66 '&ACAOrigin=' + BASE_ORIGIN + '&headers=CUSTOM&ACAMethods=' + method + | |
| 67 '&ACAHeaders=x-serviceworker-test', | |
| 68 [fetchResolved, noContentLength, noServerHeader, hasBody, typeCors], | |
| 69 [checkMethod, hasCustomHeader]], | |
| 70 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 71 '&ACAOrigin=' + BASE_ORIGIN + '&headers=CUSTOM&ACAMethods=' + method + | |
| 72 '&ACAHeaders=x-serviceworker-test&ACEHeaders=Content-Length, X-ServiceWor
ker-ServerHeader', | |
| 73 [fetchResolved, hasContentLength, hasServerHeader, hasBody, typeCors], | |
| 74 [checkMethod, hasCustomHeader]], | |
| 75 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 76 '&ACAOrigin=' + BASE_ORIGIN + '&headers=CUSTOM&ACAMethods=PUT, XXX', | |
| 77 [fetchRejected]], | |
| 78 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 79 '&ACAOrigin=' + BASE_ORIGIN + | |
| 80 '&headers=CUSTOM&ACAMethods=PUT, XXX&ACAHeaders=x-serviceworker-test', | |
| 81 [fetchResolved, noContentLength, noServerHeader, hasBody, typeCors], | |
| 82 [checkMethod, hasCustomHeader]], | |
| 83 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 84 '&ACAOrigin=' + BASE_ORIGIN + | |
| 85 '&headers=CUSTOM&ACAMethods=PUT, XXX&ACAHeaders=x-serviceworker-test&ACEH
eaders=Content-Length, X-ServiceWorker-ServerHeader', | |
| 86 [fetchResolved, hasContentLength, hasServerHeader, hasBody, typeCors], | |
| 87 [checkMethod, hasCustomHeader]], | |
| 88 | |
| 89 // Test that Access-Control-Allow-Methods is checked in | |
| 90 // CORS preflight fetch. | |
| 91 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 92 '&ACAOrigin=*&PACAOrigin=*&PACAMethods=' + method + '&PreflightTest=200', | |
| 93 [fetchResolved, noContentLength, noServerHeader, hasBody, typeCors], | |
| 94 [checkMethod]], | |
| 95 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 96 '&ACAOrigin=*&PACAOrigin=*&ACAMethods=' + method + '&PreflightTest=200', | |
| 97 [fetchRejected]], | |
| 98 | |
| 99 // Test that Access-Control-Allow-Headers is checked in | |
| 100 // CORS preflight fetch. | |
| 101 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 102 '&headers=CUSTOM&ACAOrigin=*&PACAOrigin=*&PACAMethods=' + method + | |
| 103 '&PACAHeaders=x-serviceworker-test&PreflightTest=200', | |
| 104 [fetchResolved, noContentLength, noServerHeader, hasBody, typeCors], | |
| 105 [checkMethod, hasCustomHeader]], | |
| 106 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 107 '&headers=CUSTOM&ACAOrigin=*&PACAOrigin=*&PACAMethods=' + method + | |
| 108 '&ACAHeaders=x-serviceworker-test&PreflightTest=200', | |
| 109 [fetchRejected]], | |
| 110 | |
| 111 // Test that CORS check is done in both preflight and main fetch. | |
| 112 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 113 '&ACAOrigin=*&PACAMethods=' + method + '&PreflightTest=200', | |
| 114 [fetchRejected]], | |
| 115 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 116 '&PACAOrigin=*&PACAMethods=' + method + '&PreflightTest=200', | |
| 117 [fetchRejected]], | |
| 118 | |
| 119 // Test that Access-Control-Expose-Headers of CORS preflight is ignored. | |
| 120 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 121 '&ACAOrigin=*&PACAOrigin=*&PACAMethods=' + method + | |
| 122 '&PACEHeaders=Content-Length, X-ServiceWorker-ServerHeader&PreflightTest=
200', | |
| 123 [fetchResolved, noContentLength, noServerHeader, hasBody, typeCors], | |
| 124 [checkMethod]], | |
| 125 | |
| 126 // Test that CORS preflight with Status 2XX succeeds. | |
| 127 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 128 '&ACAOrigin=*&PACAOrigin=*&PACAMethods=' + method + '&PreflightTest=201', | |
| 129 [fetchResolved, noContentLength, noServerHeader, hasBody, typeCors], | |
| 130 [checkMethod]], | |
| 131 | |
| 132 // Test that CORS preflight with Status other than 2XX fails. | |
| 133 // https://crbug.com/452394 | |
| 134 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 135 '&ACAOrigin=*&PACAOrigin=*&PACAMethods=' + method + '&PreflightTest=301', | |
| 136 [fetchRejected]], | |
| 137 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 138 '&ACAOrigin=*&PACAOrigin=*&PACAMethods=' + method + '&PreflightTest=401', | |
| 139 [fetchRejected]], | |
| 140 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 141 '&ACAOrigin=*&PACAOrigin=*&PACAMethods=' + method + '&PreflightTest=500', | |
| 142 [fetchRejected]], | |
| 143 | |
| 144 // Test CORS preflight with multiple request headers. | |
| 145 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 146 '&headers=CUSTOM2&ACAOrigin=*&PACAOrigin=*&PACAMethods=' + method + | |
| 147 '&PACAHeaders=x-servicEworker-u, x-servicEworker-ua, x-servicewOrker-test
, x-sErviceworker-s, x-sErviceworker-v&PreflightTest=200', | |
| 148 [fetchResolved, noContentLength, noServerHeader, hasBody, typeCors], | |
| 149 [checkMethod, hasCustomHeader2]], | |
| 150 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 151 '&headers=CUSTOM2&ACAOrigin=*&PACAOrigin=*&PACAMethods=' + method + | |
| 152 '&PACAHeaders=x-servicewOrker-test&PreflightTest=200', | |
| 153 [fetchRejected]], | |
| 154 | |
| 155 // Test request headers sent in CORS preflight requests. | |
| 156 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 157 '&headers=CUSTOM&ACAOrigin=*&PACAOrigin=*&PACAMethods=' + method + | |
| 158 '&PACAHeaders=x-serviceworker-test&PACRMethod=' + method + | |
| 159 '&PACRHeaders=x-serviceworker-test&PreflightTest=200', | |
| 160 [fetchResolved, noContentLength, noServerHeader, hasBody, typeCors], | |
| 161 [checkMethod, hasCustomHeader]], | |
| 162 // Test Access-Control-Request-Headers is sorted https://crbug.com/452391 | |
| 163 [OTHER_BASE_URL + 'mode=cors&method=' + method + | |
| 164 '&headers=CUSTOM2&ACAOrigin=*&PACAOrigin=*&PACAMethods=' + method + | |
| 165 '&PACAHeaders=x-servicEworker-u, x-servicEworker-ua, x-servicewOrker-test
, x-sErviceworker-s, x-sErviceworker-v&PACRMethod=' + method + | |
| 166 '&PACRHeaders=x-serviceworker-s, x-serviceworker-test, x-serviceworker-u,
x-serviceworker-ua, x-serviceworker-v&PreflightTest=200', | |
| 167 [fetchResolved, noContentLength, noServerHeader, hasBody, typeCors], | |
| 168 [checkMethod, hasCustomHeader2]]); | |
| 169 }); | |
| 170 | |
| 171 if (self.importScripts) { | |
| 172 executeTests(TEST_TARGETS); | |
| 173 done(); | |
| 174 } | |
| OLD | NEW |