51 lines
1.5 KiB
JavaScript
51 lines
1.5 KiB
JavaScript
import { describe, expect, test } from "bun:test";
|
|
import { createMcpHttpHeaders, encodeMirroredHeader } from "./mcp-http-headers.mjs";
|
|
|
|
const modernRequest = (method, params = {}) => ({
|
|
jsonrpc: "2.0",
|
|
id: 1,
|
|
method,
|
|
params: {
|
|
...params,
|
|
_meta: {
|
|
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
|
|
"io.modelcontextprotocol/clientCapabilities": {},
|
|
},
|
|
},
|
|
});
|
|
|
|
describe("EdgeEver MCP stdio adapter headers", () => {
|
|
test("mirrors modern protocol routing fields into HTTP headers", () => {
|
|
expect(createMcpHttpHeaders(modernRequest("server/discover"), null)).toEqual({
|
|
"MCP-Protocol-Version": "2026-07-28",
|
|
"Mcp-Method": "server/discover",
|
|
});
|
|
|
|
expect(
|
|
createMcpHttpHeaders(modernRequest("tools/call", { name: "get_current_user", arguments: {} }), null),
|
|
).toEqual({
|
|
"MCP-Protocol-Version": "2026-07-28",
|
|
"Mcp-Method": "tools/call",
|
|
"Mcp-Name": "get_current_user",
|
|
});
|
|
});
|
|
|
|
test("keeps legacy negotiation and safely encodes mirrored names", () => {
|
|
expect(
|
|
createMcpHttpHeaders(
|
|
{ jsonrpc: "2.0", id: 1, method: "tools/list" },
|
|
"2025-11-25",
|
|
),
|
|
).toEqual({
|
|
"MCP-Protocol-Version": "2025-11-25",
|
|
"Mcp-Method": "tools/list",
|
|
});
|
|
expect(encodeMirroredHeader("笔记/今天")).toBe(
|
|
`=?base64?${Buffer.from("笔记/今天", "utf8").toString("base64")}?=`,
|
|
);
|
|
expect(encodeMirroredHeader("=?base64?literal?=")).toBe(
|
|
`=?base64?${Buffer.from("=?base64?literal?=", "utf8").toString("base64")}?=`,
|
|
);
|
|
});
|
|
});
|