api-contract.spec.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import request from 'supertest';
  2. import { app } from '../src/app';
  3. describe('API contract smoke tests', () => {
  4. it('returns JSON parse config shape', async () => {
  5. const response = await request(app).get('/api/config/parse');
  6. expect(response.status).toBe(200);
  7. expect(response.body).toEqual({
  8. appId: expect.any(String),
  9. jsKey: expect.any(String),
  10. serverUrl: expect.any(String)
  11. });
  12. });
  13. it('does not expose Parse master key in public config', async () => {
  14. const response = await request(app).get('/api/config/parse');
  15. expect(response.body.masterKey).toBeUndefined();
  16. expect(response.body.restApiKey).toBeUndefined();
  17. });
  18. it('returns 404 for unknown api route', async () => {
  19. const response = await request(app).get('/api/unknown-resource');
  20. expect(response.status).toBe(404);
  21. expect(response.body.code).toBe('NOT_FOUND');
  22. });
  23. it('includes method and path in not found message', async () => {
  24. const response = await request(app).post('/api/ghost');
  25. expect(response.status).toBe(404);
  26. expect(response.body.message).toContain('POST /api/ghost');
  27. });
  28. });