Skip to main content
Glama
sse-endpoint.test.ts2.89 kB
import { randomUUID } from "node:crypto"; import { describe, expect, it, vi } from "vitest"; // Mock the S3Client for SSE endpoint tests vi.mock("@aws-sdk/client-s3", async () => { const actual = await vi.importActual("@aws-sdk/client-s3"); return { ...actual, S3Client: vi.fn().mockImplementation(() => ({ send: vi.fn().mockResolvedValue({ Buckets: [] }), config: {}, middlewareStack: { clone: () => ({ use: () => {} }) }, destroy: () => {}, })), }; }); describe("SSE Endpoint Configuration", () => { it("should verify StreamableHTTPServerTransport configuration", async () => { // Test that the transport is configured correctly for SSE const { StreamableHTTPServerTransport } = await import( "@modelcontextprotocol/sdk/server/streamableHttp.js" ); expect(StreamableHTTPServerTransport).toBeDefined(); expect(typeof StreamableHTTPServerTransport).toBe("function"); }); it("should test MCP transport configuration options", () => { // Test the configuration options for StreamableHTTPServerTransport const config = { sessionIdGenerator: () => randomUUID(), enableJsonResponse: false, // Use SSE mode }; expect(typeof config.sessionIdGenerator).toBe("function"); expect(config.enableJsonResponse).toBe(false); const sessionId = config.sessionIdGenerator(); expect(sessionId).toMatch(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/); }); it("should test SSE headers configuration", () => { const sseHeaders = { "Content-Type": "text/event-stream", "Cache-Control": "no-cache", Connection: "keep-alive", "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Last-Event-ID", }; expect(sseHeaders["Content-Type"]).toBe("text/event-stream"); expect(sseHeaders["Cache-Control"]).toBe("no-cache"); expect(sseHeaders.Connection).toBe("keep-alive"); expect(sseHeaders["Access-Control-Allow-Origin"]).toBe("*"); }); it("should test session ID generation", () => { const generateSessionId = () => randomUUID(); const sessionId1 = generateSessionId(); const sessionId2 = generateSessionId(); expect(sessionId1).toBeDefined(); expect(sessionId2).toBeDefined(); expect(sessionId1).not.toBe(sessionId2); expect(sessionId1).toMatch(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/); }); it("should verify TransformStream for SSE data flow", () => { const { readable, writable } = new TransformStream(); const writer = writable.getWriter(); const reader = readable.getReader(); expect(writer).toBeDefined(); expect(reader).toBeDefined(); expect(typeof writer.write).toBe("function"); expect(typeof reader.read).toBe("function"); // Clean up writer.releaseLock(); reader.releaseLock(); }); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/samuraikun/aws-s3-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server