55 lines
2.2 KiB
Python
55 lines
2.2 KiB
Python
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"
|