api-contract.api.spec.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. /*
  2. 接口测试脚本说明:
  3. 该文件对应 project/backend/tests/health.spec.ts 和 api-contract.spec.ts。
  4. 运行脚本 run_api_tests.ps1 会调用后端 Jest + Supertest 环境执行正式测试文件。
  5. */
  6. import request from 'supertest';
  7. import { app } from '../../project/backend/src/app';
  8. describe('api: service health and config contract', () => {
  9. it('returns service status', async () => {
  10. const response = await request(app).get('/api/health');
  11. expect(response.status).toBe(200);
  12. expect(response.body.status).toBe('ok');
  13. });
  14. it('returns public parse config shape', async () => {
  15. const response = await request(app).get('/api/config/parse');
  16. expect(response.status).toBe(200);
  17. expect(response.body).toEqual({
  18. appId: expect.any(String),
  19. jsKey: expect.any(String),
  20. serverUrl: expect.any(String)
  21. });
  22. });
  23. it('does not expose sensitive parse keys', async () => {
  24. const response = await request(app).get('/api/config/parse');
  25. expect(response.body.masterKey).toBeUndefined();
  26. expect(response.body.restApiKey).toBeUndefined();
  27. });
  28. it('returns 404 for unknown api route', async () => {
  29. const response = await request(app).get('/api/unknown-resource');
  30. expect(response.status).toBe(404);
  31. expect(response.body.code).toBe('NOT_FOUND');
  32. });
  33. });