27 lines
1 KiB
TypeScript
27 lines
1 KiB
TypeScript
import path from "node:path"
|
|
import { describe, expect, test } from "bun:test"
|
|
|
|
describe("mcp session recovery", () => {
|
|
test.skip("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" },
|
|
])
|
|
})
|
|
})
|