lamplighter-mcp
Version:
An intelligent context engine for AI-assisted software development
85 lines (74 loc) • 2.6 kB
text/typescript
import express from 'express';
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
import { HistoryLogger } from '../src/modules/historyLogger';
import { CodebaseAnalyzer } from '../src/modules/codebaseAnalyzer';
// Mock Express
jest.mock('express', () => {
const app = {
use: jest.fn(),
get: jest.fn(),
post: jest.fn(),
listen: jest.fn((port, callback) => {
callback();
return { close: jest.fn() };
}),
};
return jest.fn(() => app);
});
// Mock MCP SDK
jest.mock('@modelcontextprotocol/sdk/server/mcp.js', () => ({
McpServer: jest.fn().mockImplementation(() => ({
connect: jest.fn().mockResolvedValue(undefined),
tool: jest.fn(),
})),
}));
jest.mock('@modelcontextprotocol/sdk/server/sse.js', () => ({
SSEServerTransport: jest.fn().mockImplementation(() => ({
sessionId: 'test-session-id',
close: jest.fn(),
handlePostMessage: jest.fn().mockResolvedValue(undefined),
})),
}));
// Mock the module imports in server.ts
jest.mock('../src/modules/historyLogger.js', () => ({
HistoryLogger: jest.fn().mockImplementation(() => ({
log: jest.fn().mockResolvedValue(undefined),
})),
}), { virtual: true });
jest.mock('../src/modules/codebaseAnalyzer.js', () => ({
CodebaseAnalyzer: jest.fn().mockImplementation(() => ({
analyze: jest.fn().mockResolvedValue(undefined),
})),
}), { virtual: true });
// Mock dotenv
jest.mock('dotenv', () => ({
config: jest.fn(),
}));
// Create spies for console.log/error
const consoleLogSpy = jest.spyOn(console, 'log').mockImplementation(() => {});
const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
describe('Server Components', () => {
beforeEach(() => {
// Reset mocks
jest.clearAllMocks();
});
it('should have Express app configured correctly', () => {
const app = express();
expect(app.use).toBeDefined();
expect(app.get).toBeDefined();
expect(app.post).toBeDefined();
expect(app.listen).toBeDefined();
});
it('should have MCP Server with correct methods', () => {
const server = new McpServer({ name: 'Test', version: '1.0.0' });
expect(server.connect).toBeDefined();
expect(server.tool).toBeDefined();
});
it('should have SSE transport with correct methods', () => {
const transport = new SSEServerTransport('/endpoint', {} as any);
expect(transport.sessionId).toBeDefined();
expect(transport.close).toBeDefined();
expect(transport.handlePostMessage).toBeDefined();
});
});