import pytest from unittest.mock import patch, MagicMock from tests.testutils.api_client import APIClient def test_api_client_raises_when_neither_session_nor_headers_provided(): with pytest.raises(ValueError, match='Either session or headers must be provided.'): APIClient(base_url='http://example.com') def test_api_client_uses_custom_headers_when_provided(): client = APIClient( base_url='http://example.com', session=None, headers={ 'Orchard-Profile-Type': 'ContentProfile', 'Orchard-Roles': 'review_digital_audio', 'Correlation-Id': 'test-123', }, ) with patch('tests.testutils.api_client.requests.get') as mock_get: mock_get.return_value = MagicMock(status_code=200) client.get_track(99) called_headers = mock_get.call_args.kwargs['headers'] assert called_headers.get('Orchard-Profile-Type') == 'ContentProfile' assert 'session' not in called_headers def test_api_client_uses_session_header_when_no_custom_headers(): client = APIClient(base_url='http://example.com', session='my-token') with patch('tests.testutils.api_client.requests.get') as mock_get: mock_get.return_value = MagicMock(status_code=200) client.get_track(99) called_headers = mock_get.call_args.kwargs['headers'] assert called_headers == {'session': 'my-token'} def test_api_client_with_headers_does_not_include_session_key(): client = APIClient( base_url='http://example.com', headers={'Authorization': 'Bearer token123'}, ) with patch('tests.testutils.api_client.requests.get') as mock_get: mock_get.return_value = MagicMock(status_code=200) client.get_track(1) called_headers = mock_get.call_args.kwargs['headers'] assert called_headers == {'Authorization': 'Bearer token123'}