Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 34 additions & 3 deletions services/api-server/tests/unit/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
from pytest_simcore.helpers.host import get_localhost_ip
from pytest_simcore.helpers.monkeypatch_envs import EnvVarsDict, setenvs_from_dict
from pytest_simcore.helpers.storage_rpc_server import StorageSideEffects
from pytest_simcore.helpers.typing_mock import HandlerMockFactory
from pytest_simcore.helpers.webserver_rpc_server import WebserverRpcSideEffects
from pytest_simcore.simcore_webserver_projects_rest_api import GET_PROJECT
from requests.auth import HTTPBasicAuth
Expand Down Expand Up @@ -306,10 +307,10 @@ def mocked_app_rpc_dependencies(
"""
Mocks rabbit clients overrides for the FastAPI app.
"""
from simcore_service_api_server.api.dependencies.rabbitmq import (
from simcore_service_api_server.api.dependencies.rabbitmq import ( # noqa: PLC0415
get_rabbitmq_rpc_client,
)
from simcore_service_api_server.api.dependencies.webserver_rpc import (
from simcore_service_api_server.api.dependencies.webserver_rpc import ( # noqa: PLC0415
get_wb_api_rpc_client,
)

Expand All @@ -318,7 +319,9 @@ def mocked_app_rpc_dependencies(

# Overrides Depends[get_wb_api_rpc_client]
async def _get_wb_api_rpc_client_override():
from simcore_service_api_server.services_rpc import wb_api_server
from simcore_service_api_server.services_rpc import ( # noqa: PLC0415
wb_api_server,
)

try:
return WbApiRpcClient.get_from_app_state(app)
Expand Down Expand Up @@ -636,6 +639,34 @@ def mocked_webserver_rpc_api(
}


@pytest.fixture()
def mock_handler_in_licenses_rpc_interface(
mocker: MockerFixture,
) -> HandlerMockFactory:
"""Factory to mock a handler in the LicensesRpcApi interface"""

def _create(
handler_name: str,
return_value: Any = None,
exception: Exception | None = None,
side_effect: Callable | None = None,
) -> MockType:
from servicelib.rabbitmq.rpc_interfaces.webserver.v1.licenses import ( # noqa: PLC0415
LicensesRpcApi,
)

assert exception is None or side_effect is None

return mocker.patch.object(
LicensesRpcApi,
handler_name,
return_value=return_value,
side_effect=exception or side_effect,
)

return _create


@pytest.fixture
def catalog_rpc_side_effects(request) -> Any:
if "param" in dir(request) and request.param is not None:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
)
from pact.v3 import Verifier
from pytest_mock import MockerFixture
from pytest_simcore.helpers.typing_mock import HandlerMockFactory
from simcore_service_api_server._meta import API_VERSION
from simcore_service_api_server.api.dependencies.resource_usage_tracker_rpc import (
get_resource_usage_tracker_client,
Expand Down Expand Up @@ -61,21 +62,23 @@


@pytest.fixture
async def mock_wb_api_server_rpc(app: FastAPI, mocker: MockerFixture) -> None:
async def mock_wb_api_server_rpc(
app: FastAPI,
mocker: MockerFixture,
mock_handler_in_licenses_rpc_interface: HandlerMockFactory,
) -> None:
from servicelib.rabbitmq.rpc_interfaces.webserver.v1 import WebServerRpcClient

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

mocker.patch(
"simcore_service_api_server.services_rpc.wb_api_server._checkout_licensed_item_for_wallet",
return_value=EXPECTED_CHECKOUT,
mock_handler_in_licenses_rpc_interface(
"checkout_licensed_item_for_wallet", return_value=EXPECTED_CHECKOUT
)

mocker.patch(
"simcore_service_api_server.services_rpc.wb_api_server._release_licensed_item_for_wallet",
return_value=EXPECTED_RELEASE,
mock_handler_in_licenses_rpc_interface(
"release_licensed_item_for_wallet", return_value=EXPECTED_RELEASE
)


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
)
from pact.v3 import Verifier
from pytest_mock import MockerFixture
from pytest_simcore.helpers.typing_mock import HandlerMockFactory
from simcore_service_api_server._meta import API_VERSION
from simcore_service_api_server.api.dependencies.webserver_rpc import (
get_wb_api_rpc_client,
Expand Down Expand Up @@ -137,16 +138,21 @@ class DummyRpcClient:


@pytest.fixture
async def mock_wb_api_server_rpc(app: FastAPI, mocker: MockerFixture) -> None:
from servicelib.rabbitmq.rpc_interfaces.webserver.v1 import WebServerRpcClient
async def mock_wb_api_server_rpc(
app: FastAPI,
mocker: MockerFixture,
mock_handler_in_licenses_rpc_interface: HandlerMockFactory,
) -> None:
from servicelib.rabbitmq.rpc_interfaces.webserver.v1 import ( # noqa: PLC0415
WebServerRpcClient,
)

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

mocker.patch(
"simcore_service_api_server.services_rpc.wb_api_server._get_licensed_items",
return_value=EXPECTED_LICENSED_ITEMS_PAGE,
mock_handler_in_licenses_rpc_interface(
"get_licensed_items", return_value=EXPECTED_LICENSED_ITEMS_PAGE
)


Expand Down
Loading