from tests.unit.services.keycloak_admin_helpers import * def test_get_token_fetches_once(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() dummy = DummyClient([DummyResponse({"access_token": "token", "expires_in": 120})]) monkeypatch.setattr("ariadne.services.keycloak_admin.httpx.Client", lambda *args, **kwargs: dummy) assert client._get_token() == "token" monkeypatch.setattr("ariadne.services.keycloak_admin.httpx.Client", lambda *args, **kwargs: (_ for _ in ()).throw(RuntimeError("should not call"))) assert client._get_token() == "token" def test_get_token_missing_access_token(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() dummy = DummyClient([DummyResponse({"expires_in": 120})]) monkeypatch.setattr("ariadne.services.keycloak_admin.httpx.Client", lambda *args, **kwargs: dummy) with pytest.raises(RuntimeError): client._get_token() def test_get_token_requires_config(monkeypatch) -> None: dummy_settings = types.SimpleNamespace( keycloak_admin_url="http://kc", keycloak_admin_realm="atlas", keycloak_admin_client_id="", keycloak_admin_client_secret="", keycloak_realm="atlas", ) monkeypatch.setattr("ariadne.services.keycloak_admin.settings", dummy_settings) client = KeycloakAdminClient() with pytest.raises(RuntimeError): client._get_token() def test_headers_includes_bearer(monkeypatch) -> None: client = KeycloakAdminClient() monkeypatch.setattr(client, "_get_token", lambda: "token") headers = client.headers() assert headers["Authorization"] == "Bearer token"