copilot-api / tests /trace.test.ts
imspsycho's picture
Initial upload from Google Colab
98c9143 verified
Raw
History Blame Contribute Delete
1.93 kB
import { describe, expect, test } from "bun:test"
import { Hono } from "hono"
import { streamSSE } from "hono/streaming"
import { requestContext } from "~/lib/request-context"
import { traceIdMiddleware } from "~/lib/trace"
const createTracingApp = () => {
const app = new Hono()
app.use(traceIdMiddleware)
app.get("/trace", (c) => {
const traceId = requestContext.getStore()?.traceId ?? null
return c.json({ traceId })
})
app.get("/trace-stream", (c) => {
return streamSSE(c, async (stream) => {
const traceId = requestContext.getStore()?.traceId ?? null
await stream.writeSSE({
event: "trace",
data: JSON.stringify({ traceId }),
})
})
})
return app
}
describe("traceIdMiddleware", () => {
test("sanitizes a valid client trace id and exposes it via request context", async () => {
const app = createTracingApp()
const response = await app.request("/trace", {
headers: {
"x-trace-id": " trace-123_ABC ",
},
})
expect(response.status).toBe(200)
expect(response.headers.get("x-trace-id")).toBe("trace-123_ABC")
expect(await response.json()).toEqual({ traceId: "trace-123_ABC" })
})
test("falls back to a generated trace id for invalid input and preserves it in SSE", async () => {
const app = createTracingApp()
const response = await app.request("/trace-stream", {
headers: {
"x-trace-id": "bad trace value",
},
})
expect(response.status).toBe(200)
const traceId = response.headers.get("x-trace-id")
expect(traceId).not.toBeNull()
if (!traceId) {
throw new Error("Expected x-trace-id response header")
}
expect(traceId).not.toBe("bad trace value")
expect(traceId).toMatch(/^\w[\w.-]*$/)
const body = await response.text()
expect(body).toContain("event: trace")
expect(body).toContain(`"traceId":"${traceId}"`)
})
})