diff options
-rw-r--r-- | src/bun.js/webcore/request.zig | 3 | ||||
-rw-r--r-- | test/js/web/request/request.test.ts | 37 |
2 files changed, 38 insertions, 2 deletions
diff --git a/src/bun.js/webcore/request.zig b/src/bun.js/webcore/request.zig index fc38e1825..db073fccc 100644 --- a/src/bun.js/webcore/request.zig +++ b/src/bun.js/webcore/request.zig @@ -608,9 +608,8 @@ pub const Request = struct { } if (!fields.contains(.signal)) { - if (value.get(globalThis, "signal")) |signal_| { + if (value.getTruthy(globalThis, "signal")) |signal_| { fields.insert(.signal); - if (AbortSignal.fromJS(signal_)) |signal| { //Keep it alive signal_.ensureStillAlive(); diff --git a/test/js/web/request/request.test.ts b/test/js/web/request/request.test.ts new file mode 100644 index 000000000..ac6008eb4 --- /dev/null +++ b/test/js/web/request/request.test.ts @@ -0,0 +1,37 @@ +import { test, expect } from "bun:test"; + +test("request can receive undefined signal", async () => { + const request = new Request("http://example.com/", { + method: "POST", + headers: { + "Content-Type": "text/bun;charset=utf-8", + }, + body: "bun", + signal: undefined, + }); + expect(request.method).toBe("POST"); + // @ts-ignore + const clone = new Request(request); + expect(clone.method).toBe("POST"); + expect(clone.headers.get("content-type")).toBe("text/bun;charset=utf-8"); + expect(await request.text()).toBe("bun"); + expect(await clone.text()).toBe("bun"); +}); + +test("request can receive null signal", async () => { + const request = new Request("http://example.com/", { + method: "POST", + headers: { + "Content-Type": "text/bun;charset=utf-8", + }, + body: "bun", + signal: null, + }); + expect(request.method).toBe("POST"); + // @ts-ignore + const clone = new Request(request); + expect(clone.method).toBe("POST"); + expect(clone.headers.get("content-type")).toBe("text/bun;charset=utf-8"); + expect(await request.text()).toBe("bun"); + expect(await clone.text()).toBe("bun"); +}); |