from __future__ import annotations from ariadne.services import keycloak_profile def test_profile_sync_removes_required_actions(monkeypatch) -> None: calls = [] def fake_update(user_id: str, payload: dict[str, str]) -> None: calls.append((user_id, payload)) user = { "id": "user-1", "username": "alice", "enabled": True, "email": "alice@example.com", "emailVerified": True, "firstName": "", "lastName": "Atlas", "requiredActions": ["UPDATE_PROFILE", "VERIFY_EMAIL"], } monkeypatch.setattr(keycloak_profile.keycloak_admin, "ready", lambda: True) monkeypatch.setattr(keycloak_profile.keycloak_admin, "iter_users", lambda page_size=200, brief=False: [user]) monkeypatch.setattr(keycloak_profile.keycloak_admin, "update_user_safe", fake_update) summary = keycloak_profile.run_profile_sync() assert summary.updated == 1 assert calls assert calls[0][0] == "user-1" assert calls[0][1]["requiredActions"] == [] def test_profile_sync_skips_incomplete(monkeypatch) -> None: calls = [] def fake_update(user_id: str, payload: dict[str, str]) -> None: calls.append((user_id, payload)) user = { "id": "user-2", "username": "bob", "enabled": True, "email": "bob@example.com", "emailVerified": True, "firstName": "Bob", "lastName": "", "requiredActions": ["UPDATE_PROFILE"], } monkeypatch.setattr(keycloak_profile.keycloak_admin, "ready", lambda: True) monkeypatch.setattr(keycloak_profile.keycloak_admin, "iter_users", lambda page_size=200, brief=False: [user]) monkeypatch.setattr(keycloak_profile.keycloak_admin, "update_user_safe", fake_update) summary = keycloak_profile.run_profile_sync() assert summary.updated == 0 assert not calls