Skip to main content
Glama

DB Timetable MCP Server

by jorekai
config.test.ts2.92 kB
import { describe, test, expect, vi, beforeEach, afterEach } from 'vitest'; // Mock von process und dotenv vi.mock('node:path', () => ({ default: { dirname: vi.fn(() => '/mock/dir'), resolve: vi.fn(() => '/mock/path/.env') } })); vi.mock('dotenv', () => ({ default: { config: vi.fn() } })); describe('Konfiguration', () => { // Speichere originale Umgebungsvariablen const originalEnv = { ...process.env }; const originalExit = process.exit; beforeEach(() => { // Mock der process.exit process.exit = vi.fn() as unknown as (code?: number) => never; // Zuvor geladene Module löschen vi.resetModules(); // Umgebungsvariablen zurücksetzen process.env = { ...originalEnv }; // Grundlegende API-Credentials setzen, die für das Laden der Konfiguration benötigt werden process.env.DB_TIMETABLE_CLIENT_ID = 'test-client-id'; process.env.DB_TIMETABLE_CLIENT_SECRET = 'test-client-secret'; }); afterEach(() => { // Originale Umgebungsvariablen und Exit-Funktion wiederherstellen process.env = originalEnv; process.exit = originalExit; vi.clearAllMocks(); }); test('lädt die Standardkonfiguration, wenn keine Umgebungsvariablen gesetzt sind', async () => { const { config } = await import('../config.js'); expect(config.server.transportType).toBe('stdio'); expect(config.server.port).toBe(8080); expect(config.server.endpoint).toBe('/sse'); expect(config.logging.level).toBe('info'); expect(config.api.baseUrl).toBe('https://apis.deutschebahn.com/db-api-marketplace/apis/timetables/v1'); }); test('nutzt Umgebungsvariablen, wenn gesetzt', async () => { process.env.TRANSPORT_TYPE = 'sse'; process.env.PORT = '9000'; process.env.SSE_ENDPOINT = '/custom-endpoint'; process.env.LOG_LEVEL = 'debug'; const { config } = await import('../config.js'); expect(config.server.transportType).toBe('sse'); expect(config.server.port).toBe(9000); expect(config.server.endpoint).toBe('/custom-endpoint'); expect(config.logging.level).toBe('debug'); }); test('beendet den Prozess, wenn API-Credentials fehlen', async () => { // Entferne API-Credentials process.env.DB_TIMETABLE_CLIENT_ID = ''; process.env.DB_TIMETABLE_CLIENT_SECRET = ''; // Ausgabe umlenken, um Fehlermeldungen zu unterdrücken const consoleSpy = vi.spyOn(console, 'error').mockImplementation(() => { }); try { await import('../config.js'); } catch (e) { // Ignorieren, da der Prozess beendet werden würde } expect(process.exit).toHaveBeenCalledWith(1); expect(consoleSpy).toHaveBeenCalled(); consoleSpy.mockRestore(); }); });

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/jorekai/db-timetable-mcp'

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