"""Tests for API factory functions.""" from unittest.mock import MagicMock, patch from python_pdp_sdk import ( AuthorizationBackend, MigrationAuthorizationBackend ) from owsclient import OwsClient from owsrequest.ows_client import correlation_id_getter, request_context_getter from product import config from product.api import ( authorization_backend, migration_authorization_backend, ows_client, request_tags, setup_authorization_backend, setup_migration_authorization_backend, setup_ows_client, ) @patch('product.api.OwsClient') def test_setup_ows_client_calls_constructor_with_config(mock_ows_client_class): """Verify setup_ows_client calls OwsClient constructor with config values.""" setup_ows_client() mock_ows_client_class.assert_called_once_with( environment=config.ENVIRONMENT, service_name=config.SERVICE_NAME, correlation_id_getter=correlation_id_getter, request_context_getter=request_context_getter, ) def test_setup_ows_client_returns_ows_client_instance(): """Verify setup_ows_client returns an OwsClient instance.""" result = setup_ows_client() assert isinstance(result, OwsClient) @patch('product.api.PdpAuthorizationBackend') @patch('product.api.OwsPdpClient') def test_setup_authorization_backend_wraps_ows_client_in_pdp_client( mock_pdp_client, mock_pdp_backend): """Verify ows_client is wrapped in OwsPdpClient and PdpAuthorizationBackend.""" mock_ows_client = MagicMock() result = setup_authorization_backend(mock_ows_client) mock_pdp_client.assert_called_once_with(mock_ows_client) mock_pdp_backend.assert_called_once_with(mock_pdp_client.return_value) assert result is mock_pdp_backend.return_value @patch('product.api.MigrationAuthorizationBackend') def test_setup_migration_authorization_backend_wraps_inner_backend(mock_migration_backend): """Verify the inner backend is wrapped in a MigrationAuthorizationBackend.""" mock_inner_backend = MagicMock() result = setup_migration_authorization_backend(mock_inner_backend) mock_migration_backend.assert_called_once_with( inner_backend=mock_inner_backend, service_name=config.SERVICE_NAME, environment=config.ENVIRONMENT, extra_tags_getter=request_tags, metrics_enabled=config.PP_MIGRATION_METRICS_ENABLED, ) assert result is mock_migration_backend.return_value def test_module_level_globals_satisfy_expected_interfaces(): """Verify module-level globals satisfy the expected interfaces.""" assert isinstance(ows_client, OwsClient) assert isinstance(authorization_backend, AuthorizationBackend) assert isinstance(migration_authorization_backend, MigrationAuthorizationBackend)