Skip to main content
Glama
meilisearch-config.test.ts3.58 kB
/** * Meilisearch 配置管理器测试 */ import { describe, it, expect, beforeEach, afterEach } from 'vitest'; import { MeilisearchConfigManager } from '../../../config/meilisearch.js'; describe('MeilisearchConfigManager', () => { let originalEnv: NodeJS.ProcessEnv; beforeEach(() => { // 保存原始环境变量 originalEnv = { ...process.env }; }); afterEach(() => { // 恢复原始环境变量 process.env = originalEnv; }); it('should return cloud config by default', () => { // 清除相关环境变量 delete process.env.MEILISEARCH_INSTANCE; delete process.env.MEILISEARCH_LOCAL_HOST; delete process.env.MEILISEARCH_MASTER_KEY; const manager = MeilisearchConfigManager.getInstance(); const config = manager.getActiveConfig(); expect(config.type).toBe('cloud'); expect(config.host).toBe('https://edge.meilisearch.com'); expect(config.indexName).toBe('mcp_server_info_from_getmcp_io'); expect(config.apiKey).toBeDefined(); }); it('should return local config when MEILISEARCH_INSTANCE=local', () => { process.env.MEILISEARCH_INSTANCE = 'local'; process.env.MEILISEARCH_LOCAL_HOST = 'http://localhost:7700'; process.env.MEILISEARCH_MASTER_KEY = 'testkey'; process.env.MEILISEARCH_INDEX_NAME = 'test_index'; const manager = MeilisearchConfigManager.getInstance(); const config = manager.getActiveConfig(); expect(config.type).toBe('local'); expect(config.host).toBe('http://localhost:7700'); expect(config.masterKey).toBe('testkey'); expect(config.indexName).toBe('test_index'); }); it('should use default values for local config when env vars are missing', () => { process.env.MEILISEARCH_INSTANCE = 'local'; // 不设置其他环境变量 delete process.env.MEILISEARCH_LOCAL_HOST; delete process.env.MEILISEARCH_MASTER_KEY; delete process.env.MEILISEARCH_INDEX_NAME; const manager = MeilisearchConfigManager.getInstance(); const config = manager.getActiveConfig(); expect(config.type).toBe('local'); expect(config.host).toBe('http://localhost:7700'); expect(config.masterKey).toBe('developmentKey'); expect(config.indexName).toBe('mcp_servers'); }); it('should return fallback config for local instance', () => { process.env.MEILISEARCH_INSTANCE = 'local'; const manager = MeilisearchConfigManager.getInstance(); const fallbackConfig = manager.getFallbackConfig(); expect(fallbackConfig).not.toBeNull(); expect(fallbackConfig?.type).toBe('cloud'); expect(fallbackConfig?.host).toBe('https://edge.meilisearch.com'); }); it('should return null fallback config for cloud instance', () => { process.env.MEILISEARCH_INSTANCE = 'cloud'; const manager = MeilisearchConfigManager.getInstance(); const fallbackConfig = manager.getFallbackConfig(); expect(fallbackConfig).toBeNull(); }); it('should be a singleton', () => { const manager1 = MeilisearchConfigManager.getInstance(); const manager2 = MeilisearchConfigManager.getInstance(); expect(manager1).toBe(manager2); }); it('should handle custom cloud API key from environment', () => { process.env.MEILISEARCH_INSTANCE = 'cloud'; process.env.MEILISEARCH_CLOUD_API_KEY = 'test-custom-key'; const manager = MeilisearchConfigManager.getInstance(); const config = manager.getActiveConfig(); expect(config.type).toBe('cloud'); expect(config.apiKey).toBe('test-custom-key'); }); });

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/istarwyh/mcpadvisor'

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