32 lines · 1.1 KB · TypeScript
RawDownload
import { describe, expect, it } from "@effect/vitest"; import { buildMcpInstallCommand, shellQuoteWord } from "./mcp-install-card"; describe("MCP install command rendering", () => {  it("quotes shell words without giving scope paths command syntax", () => {    expect(shellQuoteWord("plain/path")).toBe("plain/path");    expect(shellQuoteWord("owner's scope")).toBe(`'owner'"'"'s scope'`);     const command = buildMcpInstallCommand({      mode: "stdio",      isDev: false,      origin: null,      scopeDir: `/tmp/scope"; touch /tmp/unsafe; echo "`,    });     expect(command).toBe(      `npx add-mcp 'executor mcp --scope '"'"'/tmp/scope"; touch /tmp/unsafe; echo "'"'"'' --name executor`,    );    expect(command).not.toContain(`--scope "/tmp/scope"; touch`);  });   it("quotes HTTP endpoints as add-mcp arguments", () => {    expect(      buildMcpInstallCommand({        mode: "http",        isDev: false,        origin: "http://localhost:4788",      }),    ).toBe("npx add-mcp http://localhost:4788/mcp --transport http --name executor");  });});