Skip to main content
Glama
liratanak

Tonle OpenProject MCP Server

by liratanak
logger.test.ts3.76 kB
/** * Tests for the logging functionality */ import { describe, it, expect, beforeAll, afterAll } from 'bun:test'; import * as fs from 'fs'; import * as path from 'path'; import { Logger } from '../src/logger.ts'; describe('Logger', () => { const testLogsDir = 'logs-test'; let logger: Logger; beforeAll(() => { // Create test logger logger = new Logger(testLogsDir, false); }); afterAll(() => { // Clean up test logs if (fs.existsSync(testLogsDir)) { fs.rmSync(testLogsDir, { recursive: true, force: true }); } }); it('should create logs directory', () => { expect(fs.existsSync(testLogsDir)).toBe(true); }); it('should log info message', () => { const caller = 'test-caller'; const category = 'TEST'; const message = 'Test info message'; logger.info(caller, category, message); const date = new Date().toISOString().split('T')[0]; const logFile = path.join(testLogsDir, `${date}-test-caller.log`); expect(fs.existsSync(logFile)).toBe(true); const content = fs.readFileSync(logFile, 'utf-8'); expect(content).toContain('INFO'); expect(content).toContain('test-caller'); expect(content).toContain('TEST'); expect(content).toContain('Test info message'); }); it('should log error with data', () => { const caller = 'error-caller'; const category = 'ERROR_TEST'; const message = 'Test error message'; const data = { errorCode: 500, details: 'Something went wrong' }; logger.error(caller, category, message, data); const date = new Date().toISOString().split('T')[0]; const logFile = path.join(testLogsDir, `${date}-error-caller.log`); expect(fs.existsSync(logFile)).toBe(true); const content = fs.readFileSync(logFile, 'utf-8'); expect(content).toContain('ERROR'); expect(content).toContain('error-caller'); expect(content).toContain('ERROR_TEST'); expect(content).toContain('Test error message'); expect(content).toContain('errorCode'); expect(content).toContain('500'); }); it('should log API request', () => { const caller = 'api-test'; const method = 'GET'; const endpoint = '/test'; logger.logApiRequest(caller, method, endpoint); const date = new Date().toISOString().split('T')[0]; const logFile = path.join(testLogsDir, `${date}-api-test.log`); expect(fs.existsSync(logFile)).toBe(true); const content = fs.readFileSync(logFile, 'utf-8'); expect(content).toContain('API_REQUEST'); expect(content).toContain('GET /test'); }); it('should log tool invocation', () => { const caller = 'tool:test_tool'; const toolName = 'test_tool'; const params = { param1: 'value1', param2: 42 }; logger.logToolInvocation(caller, toolName, params); const date = new Date().toISOString().split('T')[0]; const logFile = path.join(testLogsDir, `${date}-tool_test_tool.log`); expect(fs.existsSync(logFile)).toBe(true); const content = fs.readFileSync(logFile, 'utf-8'); expect(content).toContain('TOOL_INVOCATION'); expect(content).toContain('test_tool'); expect(content).toContain('param1'); }); it('should log session event', () => { const caller = 'session-test'; const sessionId = 'test-session-123'; const event = 'initialized'; logger.logSessionEvent(caller, sessionId, event); const date = new Date().toISOString().split('T')[0]; const logFile = path.join(testLogsDir, `${date}-session-test.log`); expect(fs.existsSync(logFile)).toBe(true); const content = fs.readFileSync(logFile, 'utf-8'); expect(content).toContain('SESSION_EVENT'); expect(content).toContain('test-session-123'); expect(content).toContain('initialized'); }); });

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/liratanak/openproject-mcp'

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