Skip to main content
Glama
index.test.ts2.11 kB
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; import { main } from '../src/index.js'; describe('index (main entry point)', () => { let processOnSpy: ReturnType<typeof vi.fn>; let processExitSpy: ReturnType<typeof vi.fn>; let originalProcessOn: typeof process.on; let originalProcessExit: typeof process.exit; beforeEach(() => { // Store original process functions originalProcessOn = process.on; originalProcessExit = process.exit; // Mock process.on to capture SIGINT handler processOnSpy = vi.fn(); process.on = processOnSpy as any; // Mock process.exit to prevent actual exits during testing processExitSpy = vi.fn(); process.exit = processExitSpy as any; }); afterEach(() => { // Restore original process functions process.on = originalProcessOn; process.exit = originalProcessExit; vi.restoreAllMocks(); }); it('should create and connect server', async () => { const result = await main(); // Verify server and transport are returned expect(result).toHaveProperty('server'); expect(result).toHaveProperty('transport'); expect(result.server).toBeDefined(); expect(result.transport).toBeDefined(); }); it('should register SIGINT handler for graceful shutdown', async () => { await main(); // Verify SIGINT handler was registered expect(processOnSpy).toHaveBeenCalledWith('SIGINT', expect.any(Function)); }); it('should close server and exit on SIGINT', async () => { const result = await main(); // Get the SIGINT handler that was registered const sigintHandler = processOnSpy.mock.calls.find( (call) => call[0] === 'SIGINT' )?.[1] as () => Promise<void>; expect(sigintHandler).toBeDefined(); // Mock server.close const closeSpy = vi.spyOn(result.server, 'close').mockResolvedValue(); // Call the SIGINT handler await sigintHandler(); // Verify server.close was called and process.exit(0) was called expect(closeSpy).toHaveBeenCalled(); expect(processExitSpy).toHaveBeenCalledWith(0); }); });

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/rawveg/ollama-mcp'

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