summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/js/web/fetch.ts7
-rw-r--r--cli/tests/unit/fetch_test.ts22
2 files changed, 25 insertions, 4 deletions
diff --git a/cli/js/web/fetch.ts b/cli/js/web/fetch.ts
index 1f0242a96..47ed1a7d1 100644
--- a/cli/js/web/fetch.ts
+++ b/cli/js/web/fetch.ts
@@ -12,7 +12,7 @@ import { DomFileImpl } from "./dom_file.ts";
import { getHeaderValueParams } from "./util.ts";
import { ReadableStreamImpl } from "./streams/readable_stream.ts";
-const NULL_BODY_STATUS = [/* 101, */ 204, 205, 304];
+const NULL_BODY_STATUS = [101, 204, 205, 304];
const REDIRECT_STATUS = [301, 302, 303, 307, 308];
const responseData = new WeakMap();
@@ -115,7 +115,7 @@ export class Response extends Body.Body implements domTypes.Response {
this.url = url;
this.statusText = statusText;
- this.status = status;
+ this.status = extraInit.status || status;
this.headers = headers;
this.redirected = extraInit.redirected;
this.type = type;
@@ -329,7 +329,7 @@ export async function fetch(
}
responseInit = {
- status: fetchResponse.status,
+ status: 200,
statusText: fetchResponse.statusText,
headers: fetchResponse.headers,
};
@@ -337,6 +337,7 @@ export async function fetch(
responseData.set(responseInit, {
redirected,
rid: fetchResponse.bodyRid,
+ status: fetchResponse.status,
url,
});
diff --git a/cli/tests/unit/fetch_test.ts b/cli/tests/unit/fetch_test.ts
index b95ecfb96..7c054c964 100644
--- a/cli/tests/unit/fetch_test.ts
+++ b/cli/tests/unit/fetch_test.ts
@@ -767,7 +767,7 @@ unitTest(
unitTest(
{ perms: { net: true } },
async function fetchNullBodyStatus(): Promise<void> {
- const nullBodyStatus = [204, 205, 304];
+ const nullBodyStatus = [101, 204, 205, 304];
for (const status of nullBodyStatus) {
const headers = new Headers([["x-status", String(status)]]);
@@ -801,3 +801,23 @@ unitTest(
}
}
);
+
+unitTest(
+ { perms: { net: true } },
+ function fetchResponseConstructorInvalidStatus(): void {
+ const invalidStatus = [101, 600, 199];
+
+ for (const status of invalidStatus) {
+ try {
+ new Response("deno", { status });
+ fail("Invalid status");
+ } catch (e) {
+ assert(e instanceof RangeError);
+ assertEquals(
+ e.message,
+ `The status provided (${status}) is outside the range [200, 599]`
+ );
+ }
+ }
+ }
+);