From 0f4deee8df447110443010d79d9cb2379d67a61e Mon Sep 17 00:00:00 2001 From: polaris Date: Tue, 22 Sep 2026 14:17:46 -0700 Subject: [PATCH] Fix admin deletion call --- src/App.test.tsx | 9 +++++---- src/api.test.ts | 11 +++++++---- src/api.ts | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/App.test.tsx b/src/App.test.tsx index cfe0d2e..b642dc6 100644 --- a/src/App.test.tsx +++ b/src/App.test.tsx @@ -44,7 +44,7 @@ const server = setupServer( http.post(`${API_HOST}/api/admins`, () => HttpResponse.json({ status: 'success', message: 'ok', password: 'generated-pass' }) ), - http.delete(`${API_HOST}/api/admins/:username`, () => HttpResponse.json({ success: true })), + http.delete(`${API_HOST}/api/admins`, () => HttpResponse.json({ success: true })), http.post(`${API_HOST}/api/auth/otp/verify`, () => HttpResponse.json({ token: 'otp-token' })), http.post(`${API_HOST}/api/auth/otp/validate`, () => HttpResponse.json({ token: 'otp-token' })) ); @@ -299,8 +299,9 @@ describe('admins page', () => { admins: [{ username: 'carol', createdAt: '2026-01-25T08:02:05.614Z' }], }) ), - http.delete(`${API_HOST}/api/admins/:username`, ({ params }) => { - deleted = params.username as string; + http.delete(`${API_HOST}/api/admins`, async ({ request }) => { + const body = (await request.json()) as { username: string }; + deleted = body.username; return HttpResponse.json({ success: true }); }) ); @@ -323,7 +324,7 @@ describe('admins page', () => { admins: [{ username: 'carol', createdAt: '2026-01-25T08:02:05.614Z' }], }) ), - http.delete(`${API_HOST}/api/admins/:username`, () => { + http.delete(`${API_HOST}/api/admins`, () => { deleteCalled = true; return HttpResponse.json({ success: true }); }) diff --git a/src/api.test.ts b/src/api.test.ts index abb327b..b4e44cc 100644 --- a/src/api.test.ts +++ b/src/api.test.ts @@ -74,7 +74,7 @@ const handlers = [ }); }), - http.delete('https://frontend.myapp.local/api/admins/:username', () => { + http.delete('https://frontend.myapp.local/api/admins', () => { return HttpResponse.json({ success: true }); }), ]; @@ -142,17 +142,20 @@ describe('apiService', () => { expect(response.data.password).toBe('pw-for-newadmin'); }); - it('removeAdmin should target the username in the URL', async () => { + it('removeAdmin should send the username in the request body', async () => { let requestedUrl = ''; + let requestedBody: { username?: string } = {}; server.use( - http.delete('https://frontend.myapp.local/api/admins/:username', ({ request }) => { + http.delete('https://frontend.myapp.local/api/admins', async ({ request }) => { requestedUrl = request.url; + requestedBody = (await request.json()) as { username?: string }; return HttpResponse.json({ success: true }); }) ); const response = await apiService.removeAdmin('gone'); expect(response.data).toEqual({ success: true }); - expect(requestedUrl).toContain('/api/admins/gone'); + expect(requestedUrl).toBe('https://frontend.myapp.local/api/admins'); + expect(requestedBody).toEqual({ username: 'gone' }); }); }); diff --git a/src/api.ts b/src/api.ts index 5596939..21618cf 100644 --- a/src/api.ts +++ b/src/api.ts @@ -105,7 +105,7 @@ export const apiService = { api.post('/api/admins', { username }), removeAdmin: (username: string): Promise> => - api.delete(`/api/admins/${username}`), + api.delete('/api/admins', { data: { username } }), }; export const mockApiService = {