68 lines
1.8 KiB
TypeScript
68 lines
1.8 KiB
TypeScript
import { describe, expect } from "bun:test"
|
|
import { Effect } from "effect"
|
|
import path from "node:path"
|
|
import { cliIt } from "../lib/cli-process"
|
|
|
|
describe("opencode mcp", () => {
|
|
cliIt.live(
|
|
"adds MCP servers from inline arguments",
|
|
({ home, opencode }) =>
|
|
Effect.gen(function* () {
|
|
const result = yield* opencode.spawn([
|
|
"mcp",
|
|
"add",
|
|
"github",
|
|
"https://api.githubcopilot.com/mcp",
|
|
"--type",
|
|
"remote",
|
|
"--header",
|
|
"Authorization: Bearer test-token",
|
|
"--global",
|
|
])
|
|
opencode.expectExit(result, 0, "opencode mcp add remote")
|
|
|
|
expect(yield* Effect.promise(() => Bun.file(path.join(home, ".config/opencode/opencode.json")).json())).toEqual(
|
|
{
|
|
mcp: {
|
|
github: {
|
|
type: "remote",
|
|
url: "https://api.githubcopilot.com/mcp",
|
|
headers: {
|
|
Authorization: "Bearer test-token",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
)
|
|
|
|
const local = yield* opencode.spawn([
|
|
"mcp",
|
|
"add",
|
|
"everything",
|
|
"--env",
|
|
"FOO=bar",
|
|
"--global",
|
|
"--",
|
|
"npx",
|
|
"-y",
|
|
"@modelcontextprotocol/server-everything",
|
|
])
|
|
opencode.expectExit(local, 0, "opencode mcp add local")
|
|
|
|
expect(
|
|
yield* Effect.promise(() => Bun.file(path.join(home, ".config/opencode/opencode.json")).json()),
|
|
).toMatchObject({
|
|
mcp: {
|
|
everything: {
|
|
type: "local",
|
|
command: ["npx", "-y", "@modelcontextprotocol/server-everything"],
|
|
environment: {
|
|
FOO: "bar",
|
|
},
|
|
},
|
|
},
|
|
})
|
|
}),
|
|
120_000,
|
|
)
|
|
})
|