// META: script=/common/utils.js // META: script=../resources/utils.js // META: script=/common/get-host-info.sub.js var cors_url = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "preflight.py"; promise_test((test) => { var uuid_token = token(); var request_url = cors_url + "?token=" + uuid_token + "&max_age=12000&allow_methods=POST" + "&allow_headers=x-test-header"; return fetch(cors_url + "?token=" + uuid_token + "&clear-stash") .then(() => { return fetch( new Request(request_url, { mode: "cors", method: "POST", headers: [["x-test-header", "test1"]] })); }) .then((resp) => { assert_equals(resp.status, 200, "Response's status is 200"); assert_equals(resp.headers.get("x-did-preflight"), "1", "Preflight request has been made"); return fetch(cors_url + "?token=" + uuid_token + "&clear-stash"); }) .then((res) => res.text()) .then((txt) => { assert_equals(txt, "1", "Server stash must be cleared."); return fetch( new Request(request_url, { mode: "cors", method: "POST", headers: [["x-test-header", "test2"]] })); }) .then((resp) => { assert_equals(resp.status, 200, "Response's status is 200"); assert_equals(resp.headers.get("x-did-preflight"), "0", "Preflight request has not been made"); return fetch(cors_url + "?token=" + uuid_token + "&clear-stash"); }); });