From 89e0db7baa1e12814643bde1a811481cd6fcb707 Mon Sep 17 00:00:00 2001 From: febux Date: Wed, 26 Aug 2026 21:12:16 +0300 Subject: [PATCH] Update delete route response. --- src/contract_check/api/routes/README.md | 2 +- src/contract_check/api/routes/auth/passkeys.py | 7 ++----- tests/integration/test_passkeys_magic_link.py | 4 ++-- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/contract_check/api/routes/README.md b/src/contract_check/api/routes/README.md index 486a2c1..7110e15 100644 --- a/src/contract_check/api/routes/README.md +++ b/src/contract_check/api/routes/README.md @@ -329,7 +329,7 @@ navigator.credentials.get()...} }`; ответ — access JWT (см. ниже). Список — массив `{ id, credentialID, credentialPublicKey, counter, userId, deviceName, createdAt }`, новые первыми. Удаление чужого/несуществующего — -`404`, успех — `{ "ok": true }`. +`404`, успех — `204 No Content` (пустое тело). #### `POST /api/v1/auth/magic-link/request` / `verify` diff --git a/src/contract_check/api/routes/auth/passkeys.py b/src/contract_check/api/routes/auth/passkeys.py index 4eceaed..0f664ed 100644 --- a/src/contract_check/api/routes/auth/passkeys.py +++ b/src/contract_check/api/routes/auth/passkeys.py @@ -18,7 +18,6 @@ from src.contract_check.api.deps import ( ) from src.contract_check.api.routes.auth.support import _issue_single_token, _require_passkey_enabled from src.contract_check.api.schemas import ( - OkResponse, PasskeyAuthenticateFinishRequest, PasskeyAuthenticationOptions, PasskeyCredentialPublic, @@ -244,14 +243,13 @@ async def passkeys_list( @router.delete( "/passkeys/{passkey_id}", - response_model=OkResponse, - status_code=status.HTTP_200_OK, + status_code=status.HTTP_204_NO_CONTENT, ) async def passkeys_delete( user: CurrentUserDep, session: AsyncSessionDep, passkey_id: uuid.UUID, -) -> OkResponse: +) -> None: """Remove one of the user's passkeys. Scoped to the owning user.""" _require_passkey_enabled() @@ -260,4 +258,3 @@ async def passkeys_delete( raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="passkey not found") await session.commit() log.info("passkey_deleted", user_id=str(user.user_id), passkey_id=str(passkey_id)) - return OkResponse(ok=True, detail="passkey deleted") diff --git a/tests/integration/test_passkeys_magic_link.py b/tests/integration/test_passkeys_magic_link.py index 3602691..fbf63d3 100644 --- a/tests/integration/test_passkeys_magic_link.py +++ b/tests/integration/test_passkeys_magic_link.py @@ -207,8 +207,8 @@ async def test_passkey_list_and_delete( assert items[0]["userId"] == user_id deleted = await client.delete(f"/api/v1/auth/passkeys/{passkey_row_id}", headers=headers) - assert deleted.status_code == 200 - assert deleted.json()["ok"] is True + assert deleted.status_code == 204 + assert deleted.content == b"" gone = await client.delete(f"/api/v1/auth/passkeys/{passkey_row_id}", headers=headers) assert gone.status_code == 404