Spaces:
Runtime error
Runtime error
| import { test, expect } from '@playwright/test' | |
| /** | |
| * E2E tests for Issue #18 — DELETE handlers use request body | |
| * Verifies that DELETE endpoints require JSON body instead of query params. | |
| */ | |
| const API_KEY_HEADER = { 'x-api-key': 'test-api-key-e2e-12345' } | |
| test.describe('DELETE Body Standardization (Issue #18)', () => { | |
| test('DELETE /api/pipelines rejects without body', async ({ request }) => { | |
| const res = await request.delete('/api/pipelines', { | |
| headers: API_KEY_HEADER | |
| }) | |
| const body = await res.json() | |
| expect(body.error).toContain('body required') | |
| expect(res.status()).toBe(400) | |
| }) | |
| test('DELETE /api/pipelines accepts body with id', async ({ request }) => { | |
| const res = await request.delete('/api/pipelines', { | |
| headers: API_KEY_HEADER, | |
| data: { id: '99999' } | |
| }) | |
| // Should not be 400 "body required" — the body was provided | |
| expect(res.status()).not.toBe(400) | |
| }) | |
| test('DELETE /api/webhooks rejects without body', async ({ request }) => { | |
| const res = await request.delete('/api/webhooks', { | |
| headers: API_KEY_HEADER | |
| }) | |
| const body = await res.json() | |
| expect(body.error).toContain('body required') | |
| expect(res.status()).toBe(400) | |
| }) | |
| test('DELETE /api/settings rejects without body', async ({ request }) => { | |
| const res = await request.delete('/api/settings', { | |
| headers: API_KEY_HEADER | |
| }) | |
| const body = await res.json() | |
| expect(body.error).toContain('body required') | |
| expect(res.status()).toBe(400) | |
| }) | |
| test('DELETE /api/workflows rejects without body', async ({ request }) => { | |
| const res = await request.delete('/api/workflows', { | |
| headers: API_KEY_HEADER | |
| }) | |
| const body = await res.json() | |
| expect(body.error).toContain('body required') | |
| expect(res.status()).toBe(400) | |
| }) | |
| test('DELETE /api/backup rejects without body', async ({ request }) => { | |
| const res = await request.delete('/api/backup', { | |
| headers: API_KEY_HEADER | |
| }) | |
| const body = await res.json() | |
| expect(body.error).toContain('body required') | |
| expect(res.status()).toBe(400) | |
| }) | |
| test('DELETE /api/auth/users rejects without body', async ({ request }) => { | |
| const res = await request.delete('/api/auth/users', { | |
| headers: API_KEY_HEADER | |
| }) | |
| const body = await res.json() | |
| expect(body.error).toContain('body required') | |
| }) | |
| test('old query param style no longer works for DELETE', async ({ request }) => { | |
| // The old pattern: DELETE /api/pipelines?id=1 | |
| const res = await request.delete('/api/pipelines?id=1', { | |
| headers: API_KEY_HEADER | |
| }) | |
| // Without a JSON body, this should fail with "body required" | |
| const body = await res.json() | |
| expect(body.error).toContain('body required') | |
| }) | |
| }) | |