from unittest.mock import AsyncMock, Mock import httpx import pytest from qcs_api_client_common.configuration import ClientConfiguration from qcs_api_client_common.httpx import QCSAuthorization @pytest.fixture def mock_client_config(): config = AsyncMock(spec=ClientConfiguration) config.get_bearer_access_token = Mock(return_value='mock_client_token') config.get_bearer_access_token_async = AsyncMock(return_value='mock_client_token') return config def test_auth_sync(mock_client_config): request = httpx.Request("GET", "https://rigetti.com") auth = QCSAuthorization(mock_client_config).sync_auth_flow(request) try: next(auth) except StopIteration: pass assert request.headers["Authorization"] == "Bearer mock_client_token" mock_client_config.get_bearer_access_token.assert_called_once() @pytest.mark.asyncio async def test_auth_async(mock_client_config): request = httpx.Request("GET", "https://example.com") auth = QCSAuthorization(mock_client_config).async_auth_flow(request) try: await auth.asend(None) except StopAsyncIteration: pass assert request.headers["Authorization"] == "Bearer mock_client_token" mock_client_config.get_bearer_access_token_async.assert_called_once()