Skip to main content
Glama
tool-registry-enhanced.test.ts4.59 kB
/** * @fileoverview Tests for tool-registry-enhanced.ts deprecated function */ /* skipcq: JS-W1029 */ // This test file intentionally uses the deprecated createEnhancedToolRegistry function // to verify that deprecation warnings are working correctly import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; import { createEnhancedToolRegistry } from '../../server/tool-registry-enhanced.js'; // skipcq: JS-W1029 import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import type { BaseHandlerDeps } from '../../handlers/base/handler.interface.js'; // Mock the ToolRegistry vi.mock('../../server/tool-registry.js', () => ({ ToolRegistry: vi.fn().mockImplementation((server, deps) => ({ registerTool: vi.fn(), getToolNames: vi.fn(() => ['tool1', 'tool2']), discoverTools: vi.fn(() => Promise.resolve(['discovered1', 'discovered2'])), server, deps, })), })); describe('tool-registry-enhanced', () => { let mockServer: McpServer; let mockDeps: BaseHandlerDeps; let consoleWarnSpy: ReturnType<typeof vi.spyOn>; beforeEach(() => { mockServer = { registerTool: vi.fn(), connect: vi.fn(), } as unknown as McpServer; mockDeps = { getApiKey: vi.fn(() => 'test-api-key'), clientFactory: {} as BaseHandlerDeps['clientFactory'], projectRepository: {} as BaseHandlerDeps['projectRepository'], analysisRunRepository: {} as BaseHandlerDeps['analysisRunRepository'], metricsRepository: {} as BaseHandlerDeps['metricsRepository'], complianceReportRepository: {} as BaseHandlerDeps['complianceReportRepository'], logger: { info: vi.fn(), warn: vi.fn(), error: vi.fn(), debug: vi.fn(), }, }; // Spy on console.warn consoleWarnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { // Intentionally empty - suppressing console output during tests return undefined; }); }); afterEach(() => { vi.clearAllMocks(); consoleWarnSpy.mockRestore(); }); describe('createEnhancedToolRegistry', () => { it('should create a ToolRegistry instance', () => { const registry = createEnhancedToolRegistry(mockServer, mockDeps); // skipcq: JS-W1029 expect(registry).toBeDefined(); expect(registry.registerTool).toBeDefined(); expect(registry.getToolNames).toBeDefined(); expect(registry.discoverTools).toBeDefined(); }); it('should log deprecation warning', () => { createEnhancedToolRegistry(mockServer, mockDeps); // skipcq: JS-W1029 expect(consoleWarnSpy).toHaveBeenCalledWith( expect.stringContaining('WARNING: createEnhancedToolRegistry is deprecated') ); expect(consoleWarnSpy).toHaveBeenCalledWith( expect.stringContaining('Use new ToolRegistry() with FEATURE_TOOL_DISCOVERY=true instead') ); expect(consoleWarnSpy).toHaveBeenCalledWith( expect.stringContaining('This function will be removed in the next major version') ); }); it('should pass server and dependencies to ToolRegistry', async () => { const { ToolRegistry } = vi.mocked(await import('../../server/tool-registry.js')); createEnhancedToolRegistry(mockServer, mockDeps); // skipcq: JS-W1029 expect(ToolRegistry).toHaveBeenCalledWith(mockServer, mockDeps); }); it('should work without dependencies', async () => { const { ToolRegistry } = vi.mocked(await import('../../server/tool-registry.js')); const registry = createEnhancedToolRegistry(mockServer); // skipcq: JS-W1029 expect(registry).toBeDefined(); expect(ToolRegistry).toHaveBeenCalledWith(mockServer, undefined); expect(consoleWarnSpy).toHaveBeenCalled(); }); it('should return a functional registry', async () => { const registry = createEnhancedToolRegistry(mockServer, mockDeps); // skipcq: JS-W1029 // Verify the registry has expected methods and they work expect(registry.getToolNames()).toEqual(['tool1', 'tool2']); expect(await registry.discoverTools()).toEqual(['discovered1', 'discovered2']); }); it('should warn every time it is called', () => { createEnhancedToolRegistry(mockServer, mockDeps); // skipcq: JS-W1029 createEnhancedToolRegistry(mockServer, mockDeps); // skipcq: JS-W1029 createEnhancedToolRegistry(mockServer, mockDeps); // skipcq: JS-W1029 expect(consoleWarnSpy).toHaveBeenCalledTimes(3); expect(consoleWarnSpy).toHaveBeenCalledWith(expect.stringContaining('deprecated')); }); }); });

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/sapientpants/deepsource-mcp-server'

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