import { expect, tap } from '@git.zone/tstest/tapbundle'; import { DcRouter } from '../ts/index.js'; import { TypedRequest } from '@api.global/typedrequest'; import * as interfaces from '../ts_interfaces/index.js'; let testDcRouter: DcRouter; tap.test('should start DCRouter with OpsServer', async () => { testDcRouter = new DcRouter({ // Minimal config for testing }); await testDcRouter.start(); expect(testDcRouter.opsServer).toBeInstanceOf(Object); }); tap.test('should respond to health status request', async () => { const healthRequest = new TypedRequest( 'http://localhost:3000/typedrequest', 'getHealthStatus' ); const response = await healthRequest.fire({ detailed: false }); expect(response).toHaveProperty('health'); expect(response.health.healthy).toBeTrue(); expect(response.health.services).toHaveProperty('OpsServer'); }); tap.test('should respond to server statistics request', async () => { const statsRequest = new TypedRequest( 'http://localhost:3000/typedrequest', 'getServerStatistics' ); const response = await statsRequest.fire({ includeHistory: false }); expect(response).toHaveProperty('stats'); expect(response.stats).toHaveProperty('uptime'); expect(response.stats).toHaveProperty('cpuUsage'); expect(response.stats).toHaveProperty('memoryUsage'); }); tap.test('should respond to configuration request', async () => { const configRequest = new TypedRequest( 'http://localhost:3000/typedrequest', 'getConfiguration' ); const response = await configRequest.fire({}); expect(response).toHaveProperty('config'); expect(response.config).toHaveProperty('email'); expect(response.config).toHaveProperty('dns'); expect(response.config).toHaveProperty('proxy'); expect(response.config).toHaveProperty('security'); }); tap.test('should handle log retrieval request', async () => { const logsRequest = new TypedRequest( 'http://localhost:3000/typedrequest', 'getRecentLogs' ); const response = await logsRequest.fire({ limit: 10 }); expect(response).toHaveProperty('logs'); expect(response).toHaveProperty('total'); expect(response).toHaveProperty('hasMore'); expect(response.logs).toBeArray(); }); tap.test('should stop DCRouter', async () => { await testDcRouter.stop(); }); export default tap.start();