fix: 修复Woodpecker CI配置文件中的linter错误
ci/woodpecker/manual/woodpecker Pipeline was successful

- 移除未使用的YAML锚点定义
- 替换commands字段中的锚点引用为实际值
- 移除有问题的通知步骤
- 修复测试文件中的问题
- 添加新的测试用例和配置文件
This commit is contained in:
张翔
2026-03-28 09:42:45 +08:00
parent a5ee6489a1
commit ebaa7f3c50
53 changed files with 4564 additions and 818 deletions
+36 -47
View File
@@ -1,20 +1,4 @@
import { GET } from './route';
import { NextRequest } from 'next/server';
jest.mock('@/lib/monitoring', () => ({
monitor: {
recordMetric: jest.fn(),
getStats: jest.fn(() => ({
count: 100,
min: 10,
max: 100,
average: 50,
p95: 90,
p99: 95,
})),
getCount: jest.fn(() => 1000),
},
}));
describe('/api/health', () => {
beforeEach(() => {
@@ -25,33 +9,14 @@ describe('/api/health', () => {
const response = await GET();
const data = await response.json();
expect(response.status).toBe(200);
expect(data.status).toBe('ok');
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 return memory usage information', async () => {
const response = await GET();
const data = await response.json();
expect(data.memory).toBeDefined();
expect(data.memory.heapUsed).toBeGreaterThan(0);
expect(data.memory.heapTotal).toBeGreaterThan(0);
expect(data.memory.rss).toBeGreaterThan(0);
});
it('should return performance metrics', async () => {
const response = await GET();
const data = await response.json();
expect(data.metrics).toBeDefined();
expect(data.metrics.responseTime).toBeDefined();
expect(data.metrics.requestCount).toBeDefined();
});
it('should include database check', async () => {
const response = await GET();
const data = await response.json();
@@ -67,28 +32,52 @@ describe('/api/health', () => {
expect(data.checks.memory).toBeDefined();
expect(data.checks.memory.status).toBeDefined();
expect(data.checks.memory.usage).toBeDefined();
expect(data.checks.memory.used).toBeDefined();
expect(data.checks.memory.total).toBeDefined();
expect(data.checks.memory.percentage).toBeDefined();
});
it('should record response time metric', async () => {
const { monitor } = require('@/lib/monitoring');
await GET();
it('should include CPU check', async () => {
const response = await GET();
const data = await response.json();
expect(monitor.recordMetric).toHaveBeenCalledWith('response_time', expect.any(Number));
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 { monitor } = require('@/lib/monitoring');
monitor.getStats.mockImplementation(() => {
throw new Error('Monitoring error');
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('error');
expect(data.status).toBe('unhealthy');
expect(data.error).toBeDefined();
process.uptime = originalUptime;
});
});