mock-server.js•2.71 kB
import { vi } from 'vitest';
/**
 * Creates a mock LettaServer instance for testing
 */
export function createMockLettaServer(overrides = {}) {
    const mockApi = {
        get: vi.fn(),
        post: vi.fn(),
        put: vi.fn(),
        patch: vi.fn(),
        delete: vi.fn(),
        request: vi.fn(),
    };
    const mockServer = {
        api: mockApi,
        server: createMockMCPServer(),
        logger: createMockLogger(),
        getApiHeaders: vi.fn().mockReturnValue({
            Authorization: 'Bearer test-token',
            'Content-Type': 'application/json',
        }),
        createErrorResponse: vi.fn((errorOrMessage, context) => {
            let message =
                typeof errorOrMessage === 'string'
                    ? errorOrMessage
                    : errorOrMessage.message || 'Unknown error';
            if (context) {
                message = `${context}: ${message}`;
            }
            throw new Error(message);
        }),
        ...overrides,
    };
    return mockServer;
}
/**
 * Creates a mock MCP Server instance
 */
export function createMockMCPServer() {
    const mockMCPServer = {
        setRequestHandler: vi.fn(),
        onerror: vi.fn(),
        connect: vi.fn(),
        close: vi.fn(),
        handleRequest: vi.fn(),
        _handlers: new Map(),
    };
    // Mock the setRequestHandler to store handlers
    mockMCPServer.setRequestHandler.mockImplementation((type, handler) => {
        mockMCPServer._handlers.set(type, handler);
    });
    // Helper to trigger a handler
    mockMCPServer.triggerHandler = async (type, args) => {
        const handler = mockMCPServer._handlers.get(type);
        if (!handler) {
            throw new Error(`No handler registered for ${type}`);
        }
        return await handler(args);
    };
    // Mock handleRequest for transport tests
    mockMCPServer.handleRequest.mockImplementation(async (request) => {
        if (request.method === 'initialize') {
            return {
                protocolVersion: '2025-06-18',
                capabilities: {},
                serverInfo: {
                    name: 'letta-mcp-server',
                    version: '1.0.0',
                },
            };
        }
        return { result: {} };
    });
    return mockMCPServer;
}
/**
 * Creates a mock logger
 */
export function createMockLogger() {
    return {
        info: vi.fn(),
        warn: vi.fn(),
        error: vi.fn(),
        debug: vi.fn(),
        child: vi.fn().mockReturnThis(),
    };
}
/**
 * Creates a mock transport
 */
export function createMockTransport() {
    return {
        start: vi.fn(),
        close: vi.fn(),
        send: vi.fn(),
    };
}