mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 10:28:47 +00:00
fix(request) handle undefined/null/empty signal on request (#5503)
* handle undefined/null/empty signal on request * better approach
This commit is contained in:
@@ -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();
|
||||
|
||||
37
test/js/web/request/request.test.ts
Normal file
37
test/js/web/request/request.test.ts
Normal file
@@ -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");
|
||||
});
|
||||
Reference in New Issue
Block a user