fix(tests): RLS-Bypass + Refresh-Fehler in Bearer-Auth-Tests
Security Audit / Python Dependency Audit (push) Canceled after 0s
Security Audit / Node.js Dependency Audit (push) Canceled after 0s
Security Audit / Frontend Build (tsc + vite) (push) Canceled after 0s

Direkte DB-Inserts über db_session brauchen SET LOCAL app.bypass_rls='on'
pro Transaktion (verfällt nach commit, siehe [[project_rls_bypass_commit_pitfall]]).
db_session.refresh() nach commit schlug aus demselben Grund fehl – entfernt,
nicht nötig. Bestehender test_heartbeat_missing_headers erwartete 422,
liefert jetzt korrekt 401 (Header sind seit Bearer-Auth-Modus optional).
229/229 Tests grün auf 137.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dzdm3EWeNdYFUuXFRJryA1
This commit is contained in:
patrickandClaude Sonnet 5 committed 2026-09-10 02:16:34 +02:00
1 parent f4ff11a80e
commit c15fe81498
1 file changed
+11 -3
+11 -3
View File
@@ -256,12 +256,15 @@ async def test_kiosk_device_lifecycle(client: AsyncClient, kiosk_admin_headers,
async def test_heartbeat_missing_headers(client: AsyncClient):
"""Heartbeat ohne Kiosk-Header → 422 (FastAPI Validierungsfehler)."""
"""Heartbeat ohne Kiosk-Header und ohne Bearer-Token → 401.
(Header sind seit Einführung des Bearer-Auth-Modus optional, damit beide
Auth-Wege über dieselbe Dependency laufen können; verify_kiosk_request
prüft das Fehlen beider Modi selbst und wirft 401 statt 422.)"""
resp = await client.post(
HEARTBEAT_URL,
json={"queued_offline_entries": 0},
)
assert resp.status_code == 422, resp.text
assert resp.status_code == 401, resp.text
async def test_kiosk_devices_list(
@@ -406,9 +409,10 @@ async def approved_bearer_device(db_session, registered_user):
key_algorithm="bearer_vpn",
device_token_hash=hash_token(token),
)
from sqlalchemy import text
await db_session.execute(text("SET LOCAL app.bypass_rls = 'on'"))
db_session.add(device)
await db_session.commit()
await db_session.refresh(device)
return device, token
@@ -448,6 +452,8 @@ async def test_bearer_heartbeat_ip_whitelist_violation(client: AsyncClient, db_s
device_token_hash=hash_token(token),
ip_whitelist="10.99.99.0/24",
)
from sqlalchemy import text
await db_session.execute(text("SET LOCAL app.bypass_rls = 'on'"))
db_session.add(device)
await db_session.commit()
@@ -472,6 +478,8 @@ async def test_bearer_heartbeat_revoked_device(client: AsyncClient, db_session,
key_algorithm="bearer_vpn",
device_token_hash=hash_token(token),
)
from sqlalchemy import text
await db_session.execute(text("SET LOCAL app.bypass_rls = 'on'"))
db_session.add(device)
await db_session.commit()