import { readFileSync } from "node:fs"; import { describe, expect, it } from "vitest"; import { writeClaudeMcpConfig } from "./attach-cli.js"; const MCP_CONFIG = { mcpServers: { openclaw: { type: "http", url: "http://127.0.0.1:54321/mcp", headers: { Authorization: "Bearer ${OPENCLAW_MCP_TOKEN}", "x-session-key": "${OPENCLAW_MCP_SESSION_KEY}", }, }, }, }; describe("writeClaudeMcpConfig", () => { it("writes the gateway mcpConfig verbatim to a .mcp.json (placeholders preserved for Claude env substitution)", () => { const { path, cleanup } = writeClaudeMcpConfig(MCP_CONFIG); try { expect(path.endsWith(".mcp.json")).toBe(true); expect(JSON.parse(readFileSync(path, "utf8"))).toEqual(MCP_CONFIG); } finally { cleanup(); } }); it("cleanup removes the temp config", () => { const { path, cleanup } = writeClaudeMcpConfig(MCP_CONFIG); cleanup(); expect(() => readFileSync(path, "utf8")).toThrow(); }); });