Skip to main content
Glama

WASM MCP Server

by beekmarks
browser-transport.test.ts3.65 kB
import { BrowserTransport } from '../browser-transport'; describe('BrowserTransport', () => { let transport: BrowserTransport; beforeEach(() => { transport = new BrowserTransport(true); // Enable test mode }); afterEach(async () => { await transport.stop(); }); test('should start and stop correctly', async () => { await transport.start(); expect(transport.isConnected()).toBe(true); await transport.stop(); expect(transport.isConnected()).toBe(false); }); test('should send messages when connected', async () => { await transport.start(); const message = { jsonrpc: "2.0" as const, method: "test", id: 1, params: { data: "test data" } }; const mockCallback = jest.fn(); transport.onMessage(mockCallback); await transport.send(message); expect(mockCallback).toHaveBeenCalledWith(message); }); test('should handle multiple message callbacks', async () => { await transport.start(); const message = { jsonrpc: "2.0" as const, method: "test", id: 1, params: { data: "test data" } }; const mockCallback1 = jest.fn(); const mockCallback2 = jest.fn(); transport.onMessage(mockCallback1); transport.onMessage(mockCallback2); await transport.send(message); expect(mockCallback1).toHaveBeenCalledWith(message); expect(mockCallback2).toHaveBeenCalledWith(message); }); test('should throw error when sending message while not connected', async () => { const message = { jsonrpc: "2.0" as const, method: "test", id: 1, params: { data: "test data" } }; await expect(transport.send(message)).rejects.toThrow('Transport not connected'); }); test('should remove message callback when cleanup function is called', async () => { await transport.start(); const message = { jsonrpc: "2.0" as const, method: "test", id: 1, params: { data: "test data" } }; const mockCallback = jest.fn(); const cleanup = transport.onMessage(mockCallback); await transport.send(message); expect(mockCallback).toHaveBeenCalledWith(message); mockCallback.mockClear(); cleanup(); await transport.send(message); expect(mockCallback).not.toHaveBeenCalled(); }); test('should handle multiple messages in sequence', async () => { await transport.start(); const messages = [ { jsonrpc: "2.0" as const, method: "test1", id: 1, params: { data: "test data 1" } }, { jsonrpc: "2.0" as const, method: "test2", id: 2, params: { data: "test data 2" } } ]; const mockCallback = jest.fn(); transport.onMessage(mockCallback); for (const message of messages) { await transport.send(message); } expect(mockCallback).toHaveBeenCalledTimes(2); expect(mockCallback).toHaveBeenNthCalledWith(1, messages[0]); expect(mockCallback).toHaveBeenNthCalledWith(2, messages[1]); }); test('should handle window message events', async () => { await transport.start(); const message = { jsonrpc: "2.0" as const, method: "test", id: 1, params: { data: "test data" } }; const mockCallback = jest.fn(); transport.onMessage(mockCallback); window.postMessage({ type: "mcp-message", message }, "*"); await new Promise(resolve => setTimeout(resolve, 0)); expect(mockCallback).toHaveBeenCalledWith(message); }); });

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/beekmarks/mcp-wasm'

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