Files
claude-code-gitea-action/test/install-mcp-server.test.ts
2025-09-30 17:31:54 +01:00

60 lines
1.7 KiB
TypeScript

import { describe, test, expect, beforeEach, afterEach } from "bun:test";
import { prepareMcpConfig } from "../src/mcp/install-mcp-server";
const originalEnv = { ...process.env };
describe("prepareMcpConfig", () => {
beforeEach(() => {
process.env.GITHUB_ACTION_PATH = "/action/path";
process.env.GITHUB_WORKSPACE = "/workspace";
process.env.GITEA_API_URL = "https://gitea.example.com/api/v1";
});
afterEach(() => {
process.env = { ...originalEnv };
});
test("returns base gitea and local git MCP servers", async () => {
const result = await prepareMcpConfig({
githubToken: "token",
owner: "owner",
repo: "repo",
branch: "branch",
});
const parsed = JSON.parse(result);
expect(Object.keys(parsed.mcpServers)).toEqual(["gitea", "local_git_ops"]);
expect(parsed.mcpServers.gitea).toEqual({
command: "bun",
args: ["run", "/action/path/src/mcp/gitea-mcp-server.ts"],
env: {
GITHUB_TOKEN: "token",
REPO_OWNER: "owner",
REPO_NAME: "repo",
BRANCH_NAME: "branch",
REPO_DIR: "/workspace",
GITEA_API_URL: "https://gitea.example.com/api/v1",
},
});
expect(parsed.mcpServers.local_git_ops.args[1]).toBe(
"/action/path/src/mcp/local-git-ops-server.ts",
);
});
test("falls back to process.cwd when workspace not provided", async () => {
delete process.env.GITHUB_WORKSPACE;
const result = await prepareMcpConfig({
githubToken: "token",
owner: "owner",
repo: "repo",
branch: "branch",
});
const parsed = JSON.parse(result);
expect(parsed.mcpServers.gitea.env.REPO_DIR).toBe(process.cwd());
});
});