test(ariadne): cover keycloak profile sync edges

This commit is contained in:
codex 2026-04-21 02:53:23 -03:00
parent 9a28ea0086
commit a17654819c

View File

@ -0,0 +1,81 @@
from __future__ import annotations
from ariadne.services import keycloak_profile
class _Admin:
def __init__(self, users=None, *, ready: bool = True, fail_update: bool = False) -> None:
self.users = users or []
self._ready = ready
self.fail_update = fail_update
self.calls = []
def ready(self) -> bool:
return self._ready
def iter_users(self, page_size=200, brief=False):
return self.users
def update_user_safe(self, user_id, payload) -> None:
if self.fail_update:
raise RuntimeError("update failed")
self.calls.append((user_id, payload))
def test_profile_sync_ready_and_skip_edges(monkeypatch) -> None:
assert not keycloak_profile._profile_complete({"email": "", "lastName": "User", "emailVerified": True})
assert not keycloak_profile._profile_complete({"email": "a@b.test", "lastName": "", "emailVerified": True})
assert not keycloak_profile._profile_complete({"email": "a@b.test", "lastName": "User", "emailVerified": False})
monkeypatch.setattr(keycloak_profile, "keycloak_admin", _Admin(ready=False))
summary = keycloak_profile.run_profile_sync()
assert summary.failures == 1
assert summary.detail == "keycloak admin not configured"
users = [
{},
{"username": "disabled", "enabled": False},
{"username": "service-account-demo", "requiredActions": ["UPDATE_PROFILE"]},
{"username": "svc", "serviceAccountClientId": "client", "requiredActions": ["UPDATE_PROFILE"]},
{"username": "no-actions", "email": "no-actions@bstein.dev", "lastName": "User", "emailVerified": True},
{"username": "incomplete", "requiredActions": ["UPDATE_PROFILE"]},
{
"username": "other-action",
"id": "2",
"email": "other@bstein.dev",
"lastName": "User",
"emailVerified": True,
"requiredActions": ["CONFIGURE_TOTP"],
},
{
"username": "missing-id",
"email": "missing@bstein.dev",
"lastName": "User",
"emailVerified": True,
"requiredActions": ["UPDATE_PROFILE"],
},
]
monkeypatch.setattr(keycloak_profile, "keycloak_admin", _Admin(users))
summary = keycloak_profile.run_profile_sync()
assert summary.skipped == 7
assert summary.failures == 1
def test_profile_sync_update_failure(monkeypatch) -> None:
users = [
{
"id": "1",
"username": "alice",
"email": "alice@bstein.dev",
"lastName": "User",
"emailVerified": True,
"requiredActions": ["UPDATE_PROFILE", "CONFIGURE_TOTP"],
}
]
monkeypatch.setattr(keycloak_profile, "keycloak_admin", _Admin(users, fail_update=True))
summary = keycloak_profile.run_profile_sync()
assert summary.processed == 1
assert summary.updated == 0
assert summary.failures == 1