// META: global=window,worker // META: script=../resources/utils.js const nullBodyStatus = [204, 205, 304]; const methods = ["GET", "POST", "OPTIONS"]; for (const status of nullBodyStatus) { for (const method of methods) { promise_test( async () => { const url = `${RESOURCES_DIR}status.py?code=${status}&content=hello-world`; const resp = await fetch(url, { method }); assert_equals(resp.status, status); assert_equals(resp.body, null, "the body should be null"); const text = await resp.text(); assert_equals(text, "", "null bodies result in empty text"); }, `Response.body is null for responses with status=${status} (method=${method})`, ); } } promise_test(async () => { const url = `${RESOURCES_DIR}status.py?code=200&content=hello-world`; const resp = await fetch(url, { method: "HEAD" }); assert_equals(resp.status, 200); assert_equals(resp.body, null, "the body should be null"); const text = await resp.text(); assert_equals(text, "", "null bodies result in empty text"); }, `Response.body is null for responses with method=HEAD`); promise_test(async (t) => { const integrity = "sha384-UT6f7WCFp32YJnp1is4l/ZYnOeQKpE8xjmdkLOwZ3nIP+tmT2aMRFQGJomjVf5cE"; const url = `${RESOURCES_DIR}status.py?code=204&content=hello-world`; const promise = fetch(url, { method: "GET", integrity }); promise_rejects_js(t, TypeError, promise); }, "Null body status with subresource integrity should abort");