mirror of
https://github.com/different-ai/openwork
synced 2026-04-25 17:15:34 +02:00
* feat(mcp): simplify remote MCP setup and cover with e2e test * fix(mcp): apply remote runtime changes before OAuth retry
44 lines
1.6 KiB
TypeScript
44 lines
1.6 KiB
TypeScript
import { describe, expect, test } from "bun:test";
|
|
import { mkdtemp, readFile, rm } from "node:fs/promises";
|
|
import { join } from "node:path";
|
|
import { tmpdir } from "node:os";
|
|
|
|
import { addMcp, listMcp, removeMcp } from "./mcp.js";
|
|
|
|
describe("mcp remote connect flow", () => {
|
|
test("adds, lists, and removes a remote MCP without OAuth", async () => {
|
|
const workspaceRoot = await mkdtemp(join(tmpdir(), "openwork-mcp-remote-e2e-"));
|
|
|
|
try {
|
|
const added = await addMcp(workspaceRoot, "simple-remote", {
|
|
type: "remote",
|
|
url: "https://example.com/mcp",
|
|
enabled: true,
|
|
});
|
|
expect(added.action).toBe("added");
|
|
|
|
const listedAfterAdd = await listMcp(workspaceRoot);
|
|
const item = listedAfterAdd.find((entry) => entry.name === "simple-remote");
|
|
expect(item).toBeDefined();
|
|
expect(item?.config).toEqual({
|
|
type: "remote",
|
|
url: "https://example.com/mcp",
|
|
enabled: true,
|
|
});
|
|
expect(item?.source).toBe("config.project");
|
|
|
|
const configText = await readFile(join(workspaceRoot, "opencode.jsonc"), "utf8");
|
|
expect(configText).toContain("\"simple-remote\"");
|
|
expect(configText).toContain("\"https://example.com/mcp\"");
|
|
|
|
const removed = await removeMcp(workspaceRoot, "simple-remote");
|
|
expect(removed).toBe(true);
|
|
|
|
const listedAfterRemove = await listMcp(workspaceRoot);
|
|
expect(listedAfterRemove.some((entry) => entry.name === "simple-remote")).toBe(false);
|
|
} finally {
|
|
await rm(workspaceRoot, { recursive: true, force: true });
|
|
}
|
|
});
|
|
});
|