chat-ui-agent-demo / src /lib /server /hooks /error.spec.ts
Mike0021's picture
Harden sandbox reconnect lifecycle
c9a836e verified
Raw History Blame Contribute Delete
1.28 kB
import { beforeEach, describe, expect, it, vi } from "vitest";
const mocks = vi.hoisted(() => ({
error: vi.fn(),
}));
vi.mock("$lib/server/logger", () => ({
logger: { error: mocks.error },
}));
import { handleServerError } from "./error";
describe("handleServerError", () => {
beforeEach(() => mocks.error.mockReset());
it("logs a plain request summary without native Headers or credentials", async () => {
const request = new Request("https://example.com/api/conversation/test", {
method: "POST",
headers: {
authorization: "Bearer secret-never-log",
cookie: "session=secret-never-log",
},
});
const result = await handleServerError({
error: new Error("upstream failed"),
event: {
locals: {},
params: {},
request,
route: { id: "/api/conversation/[id]" },
url: new URL(request.url),
} as never,
status: 500,
message: "Internal Error",
} as never);
expect(result.message).toBe("An error occurred");
expect(mocks.error).toHaveBeenCalledOnce();
const logged = mocks.error.mock.calls[0]?.[0];
expect(logged.request).toEqual({ method: "POST", mode: "cors" });
expect(Object.getPrototypeOf(logged.request)).toBe(Object.prototype);
expect(JSON.stringify(logged)).not.toContain("secret-never-log");
});
});