"""Shared fixtures for all tests.""" from typing import Iterator from unittest.mock import MagicMock, patch import pytest from owsrequest import test_utils from python_pdp_sdk.backends.authorization_backend import AuthorizationBackend @pytest.fixture def mock_raise_for_status() -> Iterator[MagicMock]: """Mock raise_for_status on MockOwsResponse.""" with patch.object( test_utils.MockOwsResponse, "raise_for_status", create=True ) as mock_raise_for_status: yield mock_raise_for_status @pytest.fixture def mock_authorization_backend() -> AuthorizationBackend: """Return a MagicMock spec'd as AuthorizationBackend. This fixture intentionally does NOT patch any module attribute. The caller is responsible for patching at the usage/import site of the code under test, e.g.:: with patch( "assets.models..authorization_backend", mock_authorization_backend, ): ... Patching ``assets.api.authorization_backend`` from this fixture would not affect modules that did ``from assets.api import authorization_backend``, since those imports hold their own reference to the original object — so patching is left to the test author who knows the actual import path of the code being exercised. """ return MagicMock(spec=AuthorizationBackend)