Files
2026-06-13 11:20:59 -05:00

28 lines
1022 B
TypeScript

import path from "node:path"
import { describe, expect, test } from "bun:test"
describe("mcp session recovery", () => {
test("reinitializes and retries once after a session-bound POST returns 404", async () => {
const child = Bun.spawn([process.execPath, path.join(import.meta.dir, "../fixture/mcp-session-recovery.ts")], {
cwd: path.join(import.meta.dir, "../.."),
stdout: "pipe",
stderr: "pipe",
})
const [code, stdout, stderr] = await Promise.all([
child.exited,
Bun.readableStreamToText(child.stdout),
Bun.readableStreamToText(child.stderr),
])
expect(code, stderr).toBe(0)
expect(JSON.parse(stdout)).toEqual([
{ method: "initialize", session: null },
{ method: "notifications/initialized", session: "expired" },
{ method: "ping", session: "expired" },
{ method: "initialize", session: null },
{ method: "notifications/initialized", session: "replacement" },
{ method: "ping", session: "replacement" },
])
})
})