/* Tests for install/mcp-openclaw module behavior. */ import { afterEach, beforeEach, describe, expect, test } from "bun:test"; import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; import { openclawMcpHasServer, resolveOpenclawConfigPath } from "./mcp-openclaw.ts"; let home: string; let prevTestHome: string | undefined; beforeEach(() => { home = mkdtempSync(join(tmpdir(), "argsbarg-openclaw-")); prevTestHome = process.env.TEST_USER_HOME; process.env.TEST_USER_HOME = home; }); afterEach(() => { if (prevTestHome === undefined) delete process.env.TEST_USER_HOME; else process.env.TEST_USER_HOME = prevTestHome; rmSync(home, { recursive: true, force: true }); }); /** Tests for openclaw mcp config. */ describe("openclaw mcp config", () => { /** OpenclawMcpHasServer detects configured server. */ test("openclawMcpHasServer detects configured server", () => { const path = resolveOpenclawConfigPath(home); mkdirSync(join(home, ".openclaw"), { recursive: true }); writeFileSync( path, JSON.stringify({ mcp: { servers: { testapp: { command: "testapp", args: ["mcp"] }, }, }, }), "utf8", ); expect(openclawMcpHasServer(home, "testapp")).toBe(true); expect(openclawMcpHasServer(home, "other")).toBe(false); }); });