ebaa7f3c50
ci/woodpecker/manual/woodpecker Pipeline was successful
- 移除未使用的YAML锚点定义 - 替换commands字段中的锚点引用为实际值 - 移除有问题的通知步骤 - 修复测试文件中的问题 - 添加新的测试用例和配置文件
84 lines
2.4 KiB
TypeScript
84 lines
2.4 KiB
TypeScript
import { GET } from './route';
|
|
|
|
describe('/api/health', () => {
|
|
beforeEach(() => {
|
|
jest.clearAllMocks();
|
|
});
|
|
|
|
it('should return health status with all required fields', async () => {
|
|
const response = await GET();
|
|
const data = await response.json();
|
|
|
|
expect([200, 503]).toContain(response.status);
|
|
expect(['healthy', 'unhealthy']).toContain(data.status);
|
|
expect(data.timestamp).toBeDefined();
|
|
expect(data.uptime).toBeDefined();
|
|
expect(data.version).toBeDefined();
|
|
expect(data.environment).toBeDefined();
|
|
});
|
|
|
|
it('should include database check', async () => {
|
|
const response = await GET();
|
|
const data = await response.json();
|
|
|
|
expect(data.checks).toBeDefined();
|
|
expect(data.checks.database).toBeDefined();
|
|
expect(data.checks.database.status).toBeDefined();
|
|
});
|
|
|
|
it('should include memory check', async () => {
|
|
const response = await GET();
|
|
const data = await response.json();
|
|
|
|
expect(data.checks.memory).toBeDefined();
|
|
expect(data.checks.memory.status).toBeDefined();
|
|
expect(data.checks.memory.used).toBeDefined();
|
|
expect(data.checks.memory.total).toBeDefined();
|
|
expect(data.checks.memory.percentage).toBeDefined();
|
|
});
|
|
|
|
it('should include CPU check', async () => {
|
|
const response = await GET();
|
|
const data = await response.json();
|
|
|
|
expect(data.checks.cpu).toBeDefined();
|
|
expect(data.checks.cpu.status).toBeDefined();
|
|
expect(data.checks.cpu.load).toBeDefined();
|
|
});
|
|
|
|
it('should return 503 when a check is unhealthy', async () => {
|
|
const originalMemoryUsage = process.memoryUsage;
|
|
process.memoryUsage = jest.fn(() => ({
|
|
heapUsed: 1000000000,
|
|
heapTotal: 1000000000,
|
|
external: 0,
|
|
arrayBuffers: 0,
|
|
rss: 0,
|
|
}));
|
|
|
|
const response = await GET();
|
|
const data = await response.json();
|
|
|
|
expect(response.status).toBe(503);
|
|
expect(data.checks.memory.status).toBe('unhealthy');
|
|
|
|
process.memoryUsage = originalMemoryUsage;
|
|
});
|
|
|
|
it('should handle errors gracefully', async () => {
|
|
const originalUptime = process.uptime;
|
|
process.uptime = jest.fn(() => {
|
|
throw new Error('Process error');
|
|
});
|
|
|
|
const response = await GET();
|
|
const data = await response.json();
|
|
|
|
expect(response.status).toBe(503);
|
|
expect(data.status).toBe('unhealthy');
|
|
expect(data.error).toBeDefined();
|
|
|
|
process.uptime = originalUptime;
|
|
});
|
|
});
|