from tests.unit.services.keycloak_admin_helpers import * def test_create_user_parses_location(monkeypatch) -> None: dummy_settings = types.SimpleNamespace( keycloak_admin_url="http://kc", keycloak_admin_realm="atlas", keycloak_admin_client_id="client", keycloak_admin_client_secret="secret", keycloak_realm="atlas", ) monkeypatch.setattr("ariadne.services.keycloak_admin.settings", dummy_settings) client = KeycloakAdminClient() client._token = "token" client._expires_at = 9999999999 dummy = DummyClient([DummyResponse({}, headers={"Location": "http://kc/admin/realms/atlas/users/abc"})]) monkeypatch.setattr("ariadne.services.keycloak_admin.httpx.Client", lambda *args, **kwargs: dummy) assert client.create_user({"username": "alice"}) == "abc" def test_create_user_missing_location(monkeypatch) -> None: dummy_settings = types.SimpleNamespace( keycloak_admin_url="http://kc", keycloak_admin_realm="atlas", keycloak_admin_client_id="client", keycloak_admin_client_secret="secret", keycloak_realm="atlas", ) monkeypatch.setattr("ariadne.services.keycloak_admin.settings", dummy_settings) client = KeycloakAdminClient() client._token = "token" client._expires_at = 9999999999 dummy = DummyClient([DummyResponse({}, headers={})]) monkeypatch.setattr("ariadne.services.keycloak_admin.httpx.Client", lambda *args, **kwargs: dummy) with pytest.raises(RuntimeError): client.create_user({"username": "alice"}) def test_reset_password_raises_on_error(monkeypatch) -> None: dummy_settings = types.SimpleNamespace( keycloak_admin_url="http://kc", keycloak_admin_realm="atlas", keycloak_admin_client_id="client", keycloak_admin_client_secret="secret", keycloak_realm="atlas", ) monkeypatch.setattr("ariadne.services.keycloak_admin.settings", dummy_settings) client = KeycloakAdminClient() client._token = "token" client._expires_at = 9999999999 dummy = DummyClient([DummyResponse({}, status_code=400)]) monkeypatch.setattr("ariadne.services.keycloak_admin.httpx.Client", lambda *args, **kwargs: dummy) with pytest.raises(httpx.HTTPStatusError): client.reset_password("user", "pw", temporary=True)