83 lines
2.5 KiB
TypeScript
83 lines
2.5 KiB
TypeScript
![]() |
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<interfaces.requests.IReq_GetHealthStatus>(
|
||
|
'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<interfaces.requests.IReq_GetServerStatistics>(
|
||
|
'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<interfaces.requests.IReq_GetConfiguration>(
|
||
|
'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<interfaces.requests.IReq_GetRecentLogs>(
|
||
|
'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();
|