| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- from __future__ import annotations
- from types import SimpleNamespace
- import pytest
- from ops.common import CpaClient, create_backend_client
- def test_cpa_client_delete_auth_file_uses_name_query(monkeypatch) -> None:
- calls: list[dict[str, object]] = []
- def fake_request(method: str, path: str, key: str, **kwargs): # type: ignore[no-untyped-def]
- calls.append({
- "method": method,
- "path": path,
- "key": key,
- "query": kwargs.get("query"),
- "body": kwargs.get("body"),
- "content_type": kwargs.get("content_type"),
- })
- return 200, {"status": "ok"}
- monkeypatch.setattr("ops.common.cpa_management_request", fake_request)
- client = CpaClient(
- "http://127.0.0.1:8317/v0/management",
- management_key="secret",
- )
- assert client.delete_auth_file("alpha@example.com.json") is True
- assert calls == [
- {
- "method": "DELETE",
- "path": "auth-files",
- "key": "secret",
- "query": {"name": "alpha@example.com.json"},
- "body": None,
- "content_type": None,
- }
- ]
- def test_cpa_client_delete_auth_files_deletes_each_name_separately(monkeypatch) -> None:
- calls: list[dict[str, object]] = []
- def fake_request(method: str, path: str, key: str, **kwargs): # type: ignore[no-untyped-def]
- calls.append({
- "method": method,
- "path": path,
- "key": key,
- "query": kwargs.get("query"),
- "body": kwargs.get("body"),
- "content_type": kwargs.get("content_type"),
- })
- return 200, {"status": "ok"}
- monkeypatch.setattr("ops.common.cpa_management_request", fake_request)
- client = CpaClient(
- "http://127.0.0.1:8317/v0/management",
- management_key="secret",
- )
- assert client.delete_auth_files(["alpha@example.com.json", "beta@example.com.json"]) is True
- assert calls == [
- {
- "method": "DELETE",
- "path": "auth-files",
- "key": "secret",
- "query": {"name": "alpha@example.com.json"},
- "body": None,
- "content_type": None,
- },
- {
- "method": "DELETE",
- "path": "auth-files",
- "key": "secret",
- "query": {"name": "beta@example.com.json"},
- "body": None,
- "content_type": None,
- },
- ]
- def test_cpa_client_upload_auth_file_posts_multipart(monkeypatch) -> None:
- captured: list[dict[str, object]] = []
- def fake_request(method: str, path: str, key: str, **kwargs): # type: ignore[no-untyped-def]
- captured.append(
- {
- "method": method,
- "path": path,
- "key": key,
- "content_type": kwargs.get("content_type"),
- "body": kwargs.get("body"),
- }
- )
- return 201, {"status": "ok"}
- monkeypatch.setattr("ops.common.cpa_management_request", fake_request)
- client = CpaClient("http://127.0.0.1:8317/v0/management", management_key="secret")
- ok = client.upload_auth_file("alpha@example.com.json", {"email": "alpha@example.com", "refresh_token": "rt"})
- assert ok is True
- assert captured[0]["method"] == "POST"
- assert captured[0]["path"] == "auth-files"
- assert "multipart/form-data" in str(captured[0]["content_type"])
- assert b"alpha@example.com.json" in captured[0]["body"] # type: ignore[operator]
- def test_cpa_client_health_check_uses_http_only(monkeypatch) -> None:
- monkeypatch.setattr("ops.common.cpa_management_request", lambda *args, **kwargs: (200, {"files": []}))
- client = CpaClient("http://127.0.0.1:8317/v0/management", management_key="secret")
- assert client.health_check() is True
- def test_cpa_client_rejects_removed_legacy_kwargs() -> None:
- with pytest.raises(TypeError):
- CpaClient("http://127.0.0.1:8317/v0/management", management_key="secret", management_mode="http")
- def test_create_backend_client_returns_cpa_client() -> None:
- settings = SimpleNamespace(
- backend="cpa",
- cpa_management_base_url="http://127.0.0.1:8317/v0/management",
- cpa_management_key="secret",
- )
- client = create_backend_client(settings)
- assert isinstance(client, CpaClient)
- assert client.base_url == "http://127.0.0.1:8317/v0/management"
- assert client.management_key == "secret"
|