header-refresh.https.optional.sub.html (9226B)
1 <!DOCTYPE html> 2 <!-- 3 This test was procedurally generated. Please do not modify it directly. 4 Sources: 5 - fetch/metadata/tools/fetch-metadata.conf.yml 6 - fetch/metadata/tools/templates/header-refresh.optional.sub.html 7 --> 8 <html lang="en"> 9 <meta charset="utf-8"> 10 <meta name="timeout" content="long"> 11 <title>HTTP headers on request for HTTP "Refresh" header</title> 12 <script src="/resources/testharness.js"></script> 13 <script src="/resources/testharnessreport.js"></script> 14 <script src="/fetch/metadata/resources/helper.sub.js"></script> 15 <body> 16 <script> 17 'use strict'; 18 19 function induceRequest(url, test) { 20 const win = window.open(); 21 test.add_cleanup(() => win.close()); 22 23 win.location = `/common/refresh.py?location=${encodeURIComponent(url)}` 24 25 return new Promise((resolve) => { 26 addEventListener('message', (event) => { 27 if (event.source === win) { 28 resolve(); 29 } 30 }); 31 }); 32 } 33 34 const responseParams = { 35 mime: 'text/html', 36 body: `<script>opener.postMessage(0, '*')</${''}script>` 37 }; 38 39 promise_test((t) => { 40 const key = '{{uuid()}}'; 41 42 return induceRequest( 43 makeRequestURL(key, ['httpsOrigin'], responseParams), t 44 ) 45 .then(() => retrieve(key)) 46 .then((headers) => { 47 assert_own_property(headers, 'sec-fetch-site'); 48 assert_array_equals(headers['sec-fetch-site'], ['same-origin']); 49 }); 50 }, 'sec-fetch-site - Same origin'); 51 52 promise_test((t) => { 53 const key = '{{uuid()}}'; 54 55 return induceRequest( 56 makeRequestURL(key, ['httpsCrossSite'], responseParams), t 57 ) 58 .then(() => retrieve(key)) 59 .then((headers) => { 60 assert_own_property(headers, 'sec-fetch-site'); 61 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 62 }); 63 }, 'sec-fetch-site - Cross-site'); 64 65 promise_test((t) => { 66 const key = '{{uuid()}}'; 67 68 return induceRequest( 69 makeRequestURL(key, ['httpsSameSite'], responseParams), t 70 ) 71 .then(() => retrieve(key)) 72 .then((headers) => { 73 assert_own_property(headers, 'sec-fetch-site'); 74 assert_array_equals(headers['sec-fetch-site'], ['same-site']); 75 }); 76 }, 'sec-fetch-site - Same site'); 77 78 promise_test((t) => { 79 const key = '{{uuid()}}'; 80 81 return induceRequest( 82 makeRequestURL(key, ['httpsOrigin', 'httpsCrossSite', 'httpsOrigin'], responseParams), t 83 ) 84 .then(() => retrieve(key)) 85 .then((headers) => { 86 assert_own_property(headers, 'sec-fetch-site'); 87 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 88 }); 89 }, 'sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect'); 90 91 promise_test((t) => { 92 const key = '{{uuid()}}'; 93 94 return induceRequest( 95 makeRequestURL(key, ['httpsOrigin', 'httpsSameSite', 'httpsOrigin'], responseParams), t 96 ) 97 .then(() => retrieve(key)) 98 .then((headers) => { 99 assert_own_property(headers, 'sec-fetch-site'); 100 assert_array_equals(headers['sec-fetch-site'], ['same-site']); 101 }); 102 }, 'sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect'); 103 104 promise_test((t) => { 105 const key = '{{uuid()}}'; 106 107 return induceRequest( 108 makeRequestURL(key, ['httpsCrossSite', 'httpsOrigin'], responseParams), t 109 ) 110 .then(() => retrieve(key)) 111 .then((headers) => { 112 assert_own_property(headers, 'sec-fetch-site'); 113 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 114 }); 115 }, 'sec-fetch-site - Cross-Site -> Same Origin'); 116 117 promise_test((t) => { 118 const key = '{{uuid()}}'; 119 120 return induceRequest( 121 makeRequestURL(key, ['httpsCrossSite', 'httpsSameSite'], responseParams), t 122 ) 123 .then(() => retrieve(key)) 124 .then((headers) => { 125 assert_own_property(headers, 'sec-fetch-site'); 126 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 127 }); 128 }, 'sec-fetch-site - Cross-Site -> Same-Site'); 129 130 promise_test((t) => { 131 const key = '{{uuid()}}'; 132 133 return induceRequest( 134 makeRequestURL(key, ['httpsCrossSite', 'httpsCrossSite'], responseParams), t 135 ) 136 .then(() => retrieve(key)) 137 .then((headers) => { 138 assert_own_property(headers, 'sec-fetch-site'); 139 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 140 }); 141 }, 'sec-fetch-site - Cross-Site -> Cross-Site'); 142 143 promise_test((t) => { 144 const key = '{{uuid()}}'; 145 146 return induceRequest( 147 makeRequestURL(key, ['httpsOrigin', 'httpsOrigin'], responseParams), t 148 ) 149 .then(() => retrieve(key)) 150 .then((headers) => { 151 assert_own_property(headers, 'sec-fetch-site'); 152 assert_array_equals(headers['sec-fetch-site'], ['same-origin']); 153 }); 154 }, 'sec-fetch-site - Same-Origin -> Same Origin'); 155 156 promise_test((t) => { 157 const key = '{{uuid()}}'; 158 159 return induceRequest( 160 makeRequestURL(key, ['httpsOrigin', 'httpsSameSite'], responseParams), t 161 ) 162 .then(() => retrieve(key)) 163 .then((headers) => { 164 assert_own_property(headers, 'sec-fetch-site'); 165 assert_array_equals(headers['sec-fetch-site'], ['same-site']); 166 }); 167 }, 'sec-fetch-site - Same-Origin -> Same-Site'); 168 169 promise_test((t) => { 170 const key = '{{uuid()}}'; 171 172 return induceRequest( 173 makeRequestURL(key, ['httpsOrigin', 'httpsCrossSite'], responseParams), t 174 ) 175 .then(() => retrieve(key)) 176 .then((headers) => { 177 assert_own_property(headers, 'sec-fetch-site'); 178 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 179 }); 180 }, 'sec-fetch-site - Same-Origin -> Cross-Site'); 181 182 promise_test((t) => { 183 const key = '{{uuid()}}'; 184 185 return induceRequest( 186 makeRequestURL(key, ['httpsSameSite', 'httpsOrigin'], responseParams), t 187 ) 188 .then(() => retrieve(key)) 189 .then((headers) => { 190 assert_own_property(headers, 'sec-fetch-site'); 191 assert_array_equals(headers['sec-fetch-site'], ['same-site']); 192 }); 193 }, 'sec-fetch-site - Same-Site -> Same Origin'); 194 195 promise_test((t) => { 196 const key = '{{uuid()}}'; 197 198 return induceRequest( 199 makeRequestURL(key, ['httpsSameSite', 'httpsSameSite'], responseParams), t 200 ) 201 .then(() => retrieve(key)) 202 .then((headers) => { 203 assert_own_property(headers, 'sec-fetch-site'); 204 assert_array_equals(headers['sec-fetch-site'], ['same-site']); 205 }); 206 }, 'sec-fetch-site - Same-Site -> Same-Site'); 207 208 promise_test((t) => { 209 const key = '{{uuid()}}'; 210 211 return induceRequest( 212 makeRequestURL(key, ['httpsSameSite', 'httpsCrossSite'], responseParams), t 213 ) 214 .then(() => retrieve(key)) 215 .then((headers) => { 216 assert_own_property(headers, 'sec-fetch-site'); 217 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 218 }); 219 }, 'sec-fetch-site - Same-Site -> Cross-Site'); 220 221 promise_test((t) => { 222 const key = '{{uuid()}}'; 223 224 return induceRequest( 225 makeRequestURL(key, ['httpsOrigin', 'httpOrigin', 'httpsOrigin'], responseParams), t 226 ) 227 .then(() => retrieve(key)) 228 .then((headers) => { 229 assert_own_property(headers, 'sec-fetch-site'); 230 assert_array_equals(headers['sec-fetch-site'], ['cross-site']); 231 }); 232 }, 'sec-fetch-site - HTTPS downgrade-upgrade'); 233 234 promise_test((t) => { 235 const key = '{{uuid()}}'; 236 237 return induceRequest( 238 makeRequestURL(key, [], responseParams), t 239 ) 240 .then(() => retrieve(key)) 241 .then((headers) => { 242 assert_own_property(headers, 'sec-fetch-mode'); 243 assert_array_equals(headers['sec-fetch-mode'], ['navigate']); 244 }); 245 }, 'sec-fetch-mode'); 246 247 promise_test((t) => { 248 const key = '{{uuid()}}'; 249 250 return induceRequest( 251 makeRequestURL(key, [], responseParams), t 252 ) 253 .then(() => retrieve(key)) 254 .then((headers) => { 255 assert_own_property(headers, 'sec-fetch-dest'); 256 assert_array_equals(headers['sec-fetch-dest'], ['document']); 257 }); 258 }, 'sec-fetch-dest'); 259 260 promise_test((t) => { 261 const key = '{{uuid()}}'; 262 263 return induceRequest( 264 makeRequestURL(key, [], responseParams), t 265 ) 266 .then(() => retrieve(key)) 267 .then((headers) => { 268 assert_not_own_property(headers, 'sec-fetch-user'); 269 }); 270 }, 'sec-fetch-user'); 271 272 promise_test((t) => { 273 const key = '{{uuid()}}'; 274 275 return induceRequest( 276 makeRequestURL(key, ['httpsCrossSite'], responseParams), t 277 ) 278 .then(() => retrieve(key)) 279 .then((headers) => { 280 assert_not_own_property(headers, 'sec-fetch-storage-access'); 281 }); 282 }, 'sec-fetch-storage-access - Cross-site'); 283 284 promise_test((t) => { 285 const key = '{{uuid()}}'; 286 287 return induceRequest( 288 makeRequestURL(key, ['httpsSameSite'], responseParams), t 289 ) 290 .then(() => retrieve(key)) 291 .then((headers) => { 292 assert_not_own_property(headers, 'sec-fetch-storage-access'); 293 }); 294 }, 'sec-fetch-storage-access - Same site'); 295 </script> 296 </body> 297 </html>