37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import 'reflect-metadata';
|
|
import assert from 'node:assert/strict';
|
|
import { test } from 'node:test';
|
|
import { createApplication } from '../src/app.factory';
|
|
import { AppLogger } from '../src/logging/app-logger';
|
|
import { testConfig } from './test-config';
|
|
|
|
test('服务可以启动并通过带版本前缀的 HTTP 健康检查', async (context) => {
|
|
const app = await createApplication(
|
|
testConfig,
|
|
new AppLogger('error', () => {}),
|
|
);
|
|
context.after(async () => {
|
|
await app.close();
|
|
});
|
|
await app.listen(0, '127.0.0.1');
|
|
const origin = await app.getUrl();
|
|
|
|
const response = await fetch(`${origin}/api/v1/health`, {
|
|
signal: AbortSignal.timeout(5000),
|
|
});
|
|
assert.equal(response.status, 200);
|
|
assert.deepEqual(await response.json(), {
|
|
code: 0,
|
|
message: 'ok',
|
|
data: {
|
|
status: 'ok',
|
|
service: 'doodle-store-server',
|
|
},
|
|
});
|
|
|
|
const unversioned = await fetch(`${origin}/health`, {
|
|
signal: AbortSignal.timeout(5000),
|
|
});
|
|
assert.equal(unversioned.status, 404);
|
|
});
|