60 lines
1.8 KiB
Python
60 lines
1.8 KiB
Python
|
|
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": "Alice",
|
||
|
|
"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": "",
|
||
|
|
"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
|