Skip to content

Commit 63d64c9

Browse files
committed
add fixture for mocking dirv2 rpc endpoint
1 parent 80253dc commit 63d64c9

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

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

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
from pydantic import EmailStr, HttpUrl, TypeAdapter
4949
from pytest_mock import MockerFixture, MockType
5050
from pytest_simcore.helpers.catalog_rpc_server import CatalogRpcSideEffects
51+
from pytest_simcore.helpers.director_v2_rpc_server import DirectorV2SideEffects
5152
from pytest_simcore.helpers.host import get_localhost_ip
5253
from pytest_simcore.helpers.monkeypatch_envs import EnvVarsDict, setenvs_from_dict
5354
from pytest_simcore.helpers.webserver_rpc_server import WebserverRpcSideEffects
@@ -611,6 +612,49 @@ def mocked_catalog_rpc_api(
611612
return mocks
612613

613614

615+
@pytest.fixture
616+
def directorv2_rpc_side_effects(request) -> Any:
617+
if "param" in dir(request) and request.param is not None:
618+
return request.param
619+
return DirectorV2SideEffects()
620+
621+
622+
@pytest.fixture
623+
def mocked_directorv2_rpc_api(
624+
mocked_app_dependencies: None,
625+
mocker: MockerFixture,
626+
directorv2_rpc_side_effects: Any,
627+
) -> dict[str, MockType]:
628+
"""
629+
Mocks the director-v2's simcore service RPC API for testing purposes.
630+
"""
631+
from servicelib.rabbitmq.rpc_interfaces.director_v2 import (
632+
computations_tasks as directorv2_rpc, # keep import here
633+
)
634+
635+
mocks = {}
636+
637+
# Get all callable methods from the side effects class that are not built-ins
638+
side_effect_methods = [
639+
method_name
640+
for method_name in dir(directorv2_rpc_side_effects)
641+
if not method_name.startswith("_")
642+
and callable(getattr(directorv2_rpc_side_effects, method_name))
643+
]
644+
645+
# Create mocks for each method in directorv2_rpc that has a corresponding side effect
646+
for method_name in side_effect_methods:
647+
if hasattr(directorv2_rpc, method_name):
648+
mocks[method_name] = mocker.patch.object(
649+
directorv2_rpc,
650+
method_name,
651+
autospec=True,
652+
side_effect=getattr(directorv2_rpc_side_effects, method_name),
653+
)
654+
655+
return mocks
656+
657+
614658
#
615659
# Other Mocks
616660
#

0 commit comments

Comments
 (0)