| 123456789101112131415161718192021222324252627 |
- 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" },
- ])
- })
- })
|