Skip to content

Commit f53e795

Browse files
committed
🎨 Add mock handler factory for LicensesRpcApi in tests
1 parent dde3639 commit f53e795

File tree

3 files changed

+55
-15
lines changed

3 files changed

+55
-15
lines changed

services/api-server/tests/unit/conftest.py

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
from pytest_simcore.helpers.host import get_localhost_ip
5757
from pytest_simcore.helpers.monkeypatch_envs import EnvVarsDict, setenvs_from_dict
5858
from pytest_simcore.helpers.storage_rpc_server import StorageSideEffects
59+
from pytest_simcore.helpers.typing_mock import HandlerMockFactory
5960
from pytest_simcore.helpers.webserver_rpc_server import WebserverRpcSideEffects
6061
from pytest_simcore.simcore_webserver_projects_rest_api import GET_PROJECT
6162
from requests.auth import HTTPBasicAuth
@@ -306,10 +307,10 @@ def mocked_app_rpc_dependencies(
306307
"""
307308
Mocks rabbit clients overrides for the FastAPI app.
308309
"""
309-
from simcore_service_api_server.api.dependencies.rabbitmq import (
310+
from simcore_service_api_server.api.dependencies.rabbitmq import ( # noqa: PLC0415
310311
get_rabbitmq_rpc_client,
311312
)
312-
from simcore_service_api_server.api.dependencies.webserver_rpc import (
313+
from simcore_service_api_server.api.dependencies.webserver_rpc import ( # noqa: PLC0415
313314
get_wb_api_rpc_client,
314315
)
315316

@@ -318,7 +319,9 @@ def mocked_app_rpc_dependencies(
318319

319320
# Overrides Depends[get_wb_api_rpc_client]
320321
async def _get_wb_api_rpc_client_override():
321-
from simcore_service_api_server.services_rpc import wb_api_server
322+
from simcore_service_api_server.services_rpc import ( # noqa: PLC0415
323+
wb_api_server,
324+
)
322325

323326
try:
324327
return WbApiRpcClient.get_from_app_state(app)
@@ -636,6 +639,34 @@ def mocked_webserver_rpc_api(
636639
}
637640

638641

642+
@pytest.fixture()
643+
def mock_handler_in_licenses_rpc_interface(
644+
mocker: MockerFixture,
645+
) -> HandlerMockFactory:
646+
"""Factory to mock a handler in the LicensesRpcApi interface"""
647+
648+
def _create(
649+
handler_name: str,
650+
return_value: Any = None,
651+
exception: Exception | None = None,
652+
side_effect: Callable | None = None,
653+
) -> MockType:
654+
from servicelib.rabbitmq.rpc_interfaces.webserver.v1.licenses import ( # noqa: PLC0415
655+
LicensesRpcApi,
656+
)
657+
658+
assert exception is None or side_effect is None
659+
660+
return mocker.patch.object(
661+
LicensesRpcApi,
662+
handler_name,
663+
return_value=return_value,
664+
side_effect=exception or side_effect,
665+
)
666+
667+
return _create
668+
669+
639670
@pytest.fixture
640671
def catalog_rpc_side_effects(request) -> Any:
641672
if "param" in dir(request) and request.param is not None:

services/api-server/tests/unit/pact_broker/test_pact_checkout_release.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
)
1414
from pact.v3 import Verifier
1515
from pytest_mock import MockerFixture
16+
from pytest_simcore.helpers.typing_mock import HandlerMockFactory
1617
from simcore_service_api_server._meta import API_VERSION
1718
from simcore_service_api_server.api.dependencies.resource_usage_tracker_rpc import (
1819
get_resource_usage_tracker_client,
@@ -61,21 +62,23 @@
6162

6263

6364
@pytest.fixture
64-
async def mock_wb_api_server_rpc(app: FastAPI, mocker: MockerFixture) -> None:
65+
async def mock_wb_api_server_rpc(
66+
app: FastAPI,
67+
mocker: MockerFixture,
68+
mock_handler_in_licenses_rpc_interface: HandlerMockFactory,
69+
) -> None:
6570
from servicelib.rabbitmq.rpc_interfaces.webserver.v1 import WebServerRpcClient
6671

6772
app.dependency_overrides[get_wb_api_rpc_client] = lambda: WbApiRpcClient(
6873
_rpc_client=mocker.MagicMock(spec=WebServerRpcClient),
6974
)
7075

71-
mocker.patch(
72-
"simcore_service_api_server.services_rpc.wb_api_server._checkout_licensed_item_for_wallet",
73-
return_value=EXPECTED_CHECKOUT,
76+
mock_handler_in_licenses_rpc_interface(
77+
"checkout_licensed_item_for_wallet", return_value=EXPECTED_CHECKOUT
7478
)
7579

76-
mocker.patch(
77-
"simcore_service_api_server.services_rpc.wb_api_server._release_licensed_item_for_wallet",
78-
return_value=EXPECTED_RELEASE,
80+
mock_handler_in_licenses_rpc_interface(
81+
"release_licensed_item_for_wallet", return_value=EXPECTED_RELEASE
7982
)
8083

8184

services/api-server/tests/unit/pact_broker/test_pact_licensed_items.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
)
1414
from pact.v3 import Verifier
1515
from pytest_mock import MockerFixture
16+
from pytest_simcore.helpers.typing_mock import HandlerMockFactory
1617
from simcore_service_api_server._meta import API_VERSION
1718
from simcore_service_api_server.api.dependencies.webserver_rpc import (
1819
get_wb_api_rpc_client,
@@ -137,16 +138,21 @@ class DummyRpcClient:
137138

138139

139140
@pytest.fixture
140-
async def mock_wb_api_server_rpc(app: FastAPI, mocker: MockerFixture) -> None:
141-
from servicelib.rabbitmq.rpc_interfaces.webserver.v1 import WebServerRpcClient
141+
async def mock_wb_api_server_rpc(
142+
app: FastAPI,
143+
mocker: MockerFixture,
144+
mock_handler_in_licenses_rpc_interface: HandlerMockFactory,
145+
) -> None:
146+
from servicelib.rabbitmq.rpc_interfaces.webserver.v1 import ( # noqa: PLC0415
147+
WebServerRpcClient,
148+
)
142149

143150
app.dependency_overrides[get_wb_api_rpc_client] = lambda: WbApiRpcClient(
144151
_rpc_client=mocker.MagicMock(spec=WebServerRpcClient),
145152
)
146153

147-
mocker.patch(
148-
"simcore_service_api_server.services_rpc.wb_api_server._get_licensed_items",
149-
return_value=EXPECTED_LICENSED_ITEMS_PAGE,
154+
mock_handler_in_licenses_rpc_interface(
155+
"get_licensed_items", return_value=EXPECTED_LICENSED_ITEMS_PAGE
150156
)
151157

152158

0 commit comments

Comments
 (0)