aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js/serve.test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'test/bun.js/serve.test.ts')
-rw-r--r--test/bun.js/serve.test.ts68
1 files changed, 60 insertions, 8 deletions
diff --git a/test/bun.js/serve.test.ts b/test/bun.js/serve.test.ts
index c050e29b0..3e2e70bb1 100644
--- a/test/bun.js/serve.test.ts
+++ b/test/bun.js/serve.test.ts
@@ -39,6 +39,21 @@ afterAll(() => {
}
});
+it("should display a welcome message when the response value type is incorrect", async () => {
+ await runTest(
+ {
+ fetch(req) {
+ return Symbol("invalid response type");
+ },
+ },
+ async (server) => {
+ const response = await fetch(`http://${server.hostname}:${server.port}`);
+ const text = await response.text();
+ expect(text).toContain("Welcome to Bun!");
+ },
+ );
+});
+
it("should work for a file", async () => {
const fixture = resolve(import.meta.dir, "./fetch.js.txt");
const textToExpect = readFileSync(fixture, "utf-8");
@@ -104,7 +119,6 @@ describe("streaming", () => {
var pass = false;
await runTest(
{
- development: false,
error(e) {
pass = true;
return new Response("PASS", { status: 555 });
@@ -136,16 +150,16 @@ describe("streaming", () => {
var pass = true;
await runTest(
{
- development: false,
error(e) {
- pass = true;
+ pass = false;
return new Response("FAIL", { status: 555 });
},
fetch(req) {
return new Response(
new ReadableStream({
- pull(controller) {
+ async pull(controller) {
controller.enqueue("PASS");
+ controller.close();
throw new Error("error");
},
}),
@@ -157,7 +171,7 @@ describe("streaming", () => {
`http://${server.hostname}:${server.port}`,
);
// connection terminated
- expect(response.status).toBe(500);
+ expect(response.status).toBe(200);
expect(await response.text()).toBe("PASS");
expect(pass).toBe(true);
},
@@ -217,11 +231,14 @@ describe("streaming", () => {
);
});
- it("text from JS throws on start no error handler", async () => {
+ it("Error handler is called when a throwing stream hasn't written anything", async () => {
await runTest(
{
port: port++,
- development: false,
+ error(e) {
+ return new Response("Test Passed", { status: 200 });
+ },
+
fetch(req) {
return new Response(
new ReadableStream({
@@ -229,6 +246,42 @@ describe("streaming", () => {
throw new Error("Test Passed");
},
}),
+ {
+ status: 404,
+ },
+ );
+ },
+ },
+ async (server) => {
+ const response = await fetch(
+ `http://${server.hostname}:${server.port}`,
+ );
+ expect(response.status).toBe(200);
+ expect(await response.text()).toBe("Test Passed");
+ },
+ );
+ });
+
+ // TODO: this test fails because we write status/headers at start of stream
+ it("text from JS throws on start with no error handler", async () => {
+ await runTest(
+ {
+ port: port++,
+ error: undefined,
+
+ fetch(req) {
+ return new Response(
+ new ReadableStream({
+ start(controller) {
+ throw new Error("Test Passed");
+ },
+ }),
+ {
+ status: 420,
+ headers: {
+ "x-what": "123",
+ },
+ },
);
},
},
@@ -246,7 +299,6 @@ describe("streaming", () => {
var err;
await runTest(
{
- development: false,
error(e) {
pass = true;
err = e;