paper-burner/server/test/admin-stats.test.js

39 lines
1.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import request from 'supertest';
import { app } from '../src/index.js';
// 说明:此测试仅验证接口形状与鉴权门槛。在无真实数据库与鉴权上下文时,
// 断言未授权访问返回 401/403当提供格式正确的查询参数时服务器不会 500。
describe('Admin stats endpoints shape and query params', () => {
it('GET /api/admin/stats/detailed rejects without token', async () => {
const res = await request(app).get('/api/admin/stats/detailed');
expect([401, 403]).toContain(res.status);
});
it('GET /api/admin/stats/trends rejects without token', async () => {
const res = await request(app).get('/api/admin/stats/trends?days=7');
expect([401, 403]).toContain(res.status);
});
it('GET /api/admin/stats/trends validates days range', async () => {
const res = await request(app).get('/api/admin/stats/trends?days=9999');
// 未授权优先返回 401/403若路由先校验参数也可能 400三者之一均视为通过
expect([401, 403, 400]).toContain(res.status);
});
it('GET /api/admin/stats/trends accepts start/end date params (no 500)', async () => {
const res = await request(app).get('/api/admin/stats/trends?startDate=2025-01-01&endDate=2025-01-31');
expect([401, 403, 200]).toContain(res.status);
});
it('GET /api/admin/stats/detailed returns 400 when start > end', async () => {
const res = await request(app).get('/api/admin/stats/detailed?startDate=2025-02-01&endDate=2025-01-01');
expect([401, 403, 400]).toContain(res.status);
});
it('GET /api/admin/stats/trends returns 400 when start > end', async () => {
const res = await request(app).get('/api/admin/stats/trends?startDate=2025-02-01&endDate=2025-01-01');
expect([401, 403, 400]).toContain(res.status);
});
});