File size: 2,565 Bytes
6aa76ed | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | import { describe, expect, it } from "vitest";
import { buildMcpServerCreate, emptyMcpServerDraft } from "./mcp-server-create";
describe("buildMcpServerCreate", () => {
it("builds an HTTP Bearer request without stdio fields", () => {
const server = buildMcpServerCreate({
...emptyMcpServerDraft(),
name: " Linear ",
url: " https://mcp.linear.app/mcp ",
httpAuth: "header",
bearerToken: "Bearer secret-token",
command: "ignored",
args: "--ignored",
env: "IGNORED=value",
});
expect(server).toEqual({
name: "Linear",
url: "https://mcp.linear.app/mcp",
auth: "header",
bearer_token: "Bearer secret-token",
});
});
it("builds OAuth and unauthenticated HTTP requests without a token", () => {
expect(
buildMcpServerCreate({
...emptyMcpServerDraft(),
name: "oauth",
url: "https://example.com/mcp",
httpAuth: "oauth",
}),
).toEqual({
name: "oauth",
url: "https://example.com/mcp",
auth: "oauth",
});
expect(
buildMcpServerCreate({
...emptyMcpServerDraft(),
name: "public",
url: "https://example.com/mcp",
}),
).toEqual({
name: "public",
url: "https://example.com/mcp",
});
});
it("parses stdio arguments and environment assignments", () => {
const server = buildMcpServerCreate({
...emptyMcpServerDraft(),
name: "local",
transport: "stdio",
command: " uvx ",
args: "mcp-server, --debug",
env: "API_KEY=secret\nURL=https://example.com?a=b\nINVALID",
});
expect(server).toEqual({
name: "local",
command: "uvx",
args: ["mcp-server", "--debug"],
env: {
API_KEY: "secret",
URL: "https://example.com?a=b",
},
});
});
it("rejects missing transport fields and Bearer tokens", () => {
expect(() => buildMcpServerCreate(emptyMcpServerDraft())).toThrow(
"Name required",
);
expect(() =>
buildMcpServerCreate({
...emptyMcpServerDraft(),
name: "remote",
}),
).toThrow("URL required");
expect(() =>
buildMcpServerCreate({
...emptyMcpServerDraft(),
name: "remote",
url: "https://example.com/mcp",
httpAuth: "header",
}),
).toThrow("Bearer token required");
expect(() =>
buildMcpServerCreate({
...emptyMcpServerDraft(),
name: "local",
transport: "stdio",
}),
).toThrow("Command required");
});
});
|