Skip to content

Commit 312d5ad

Browse files
committed
mocks
1 parent 7b43f75 commit 312d5ad

19 files changed

+127
-123
lines changed

services/api-server/tests/unit/_with_db/test_product.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
async def test_product_webserver(
2828
client: httpx.AsyncClient,
29-
mocked_webserver_service_api_base: respx.MockRouter,
29+
mocked_webserver_rest_api_base: respx.MockRouter,
3030
create_fake_api_keys: Callable[[PositiveInt], AsyncGenerator[ApiKeyInDB, None]],
3131
faker: Faker,
3232
) -> None:
@@ -64,7 +64,7 @@ def _check_key_product_compatibility(request: httpx.Request, **kwargs):
6464
),
6565
)
6666

67-
wallet_get_mock = mocked_webserver_service_api_base.get(
67+
wallet_get_mock = mocked_webserver_rest_api_base.get(
6868
path__regex=r"/wallets/(?P<wallet_id>[-+]?\d+)"
6969
).mock(side_effect=_check_key_product_compatibility)
7070

@@ -80,7 +80,7 @@ def _check_key_product_compatibility(request: httpx.Request, **kwargs):
8080

8181
async def test_product_catalog(
8282
client: httpx.AsyncClient,
83-
mocked_catalog_service_api_base: respx.MockRouter,
83+
mocked_catalog_rest_api_base: respx.MockRouter,
8484
create_fake_api_keys: Callable[[PositiveInt], AsyncGenerator[ApiKeyInDB, None]],
8585
) -> None:
8686
assert client
@@ -99,7 +99,7 @@ def _get_service_side_effect(request: httpx.Request, **kwargs):
9999
assert key.product_name == received_product
100100
return httpx.Response(status_code=status.HTTP_200_OK)
101101

102-
respx_mock = mocked_catalog_service_api_base.get(
102+
respx_mock = mocked_catalog_rest_api_base.get(
103103
r"/v0/services/simcore%2Fservices%2Fcomp%2Fisolve/2.0.24"
104104
).mock(side_effect=_get_service_side_effect)
105105

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

+8-8
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,15 @@ def solver_version() -> str:
3535
@pytest.fixture
3636
def mocked_webserver_rest_api(
3737
app: FastAPI,
38-
mocked_webserver_service_api_base: MockRouter,
38+
mocked_webserver_rest_api_base: MockRouter,
3939
patch_webserver_long_running_project_tasks: Callable[[MockRouter], MockRouter],
4040
) -> MockRouter:
4141
settings: ApplicationSettings = app.state.settings
4242
assert settings.API_SERVER_WEBSERVER
4343

44-
patch_webserver_long_running_project_tasks(mocked_webserver_service_api_base)
44+
patch_webserver_long_running_project_tasks(mocked_webserver_rest_api_base)
4545

46-
return mocked_webserver_service_api_base
46+
return mocked_webserver_rest_api_base
4747

4848

4949
@pytest.fixture
@@ -78,10 +78,10 @@ def mocked_webserver_rpc_api(
7878
@pytest.fixture
7979
def mocked_catalog_rest_api(
8080
app: FastAPI,
81-
mocked_catalog_service_api_base: MockRouter,
81+
mocked_catalog_rest_api_base: MockRouter,
8282
catalog_service_openapi_specs: dict[str, Any],
8383
) -> MockRouter:
84-
respx_mock = mocked_catalog_service_api_base
84+
respx_mock = mocked_catalog_rest_api_base
8585
openapi = deepcopy(catalog_service_openapi_specs)
8686
schemas = openapi["components"]["schemas"]
8787

@@ -123,7 +123,7 @@ def mocked_catalog_rest_api(
123123

124124
@pytest.fixture
125125
async def mocked_directorv2_rest_api(
126-
mocked_directorv2_service_api_base,
126+
mocked_directorv2_rest_api_base,
127127
) -> AsyncIterable[MockRouter]:
128128
stop_time: Final[datetime] = datetime.now() + timedelta(seconds=5)
129129

@@ -138,7 +138,7 @@ def _get_computation(request: httpx.Request, **kwargs) -> httpx.Response:
138138
status_code=status.HTTP_200_OK, json=jsonable_encoder(task)
139139
)
140140

141-
mocked_directorv2_service_api_base.get(
141+
mocked_directorv2_rest_api_base.get(
142142
path__regex=r"/v2/computations/(?P<project_id>[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})"
143143
).mock(side_effect=_get_computation)
144-
return mocked_directorv2_service_api_base
144+
return mocked_directorv2_rest_api_base

services/api-server/tests/unit/api_solvers/test_api_routers_solvers_jobs.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -86,15 +86,15 @@ def presigned_download_link(
8686
def mocked_directorv2_service_api(
8787
app: FastAPI,
8888
presigned_download_link: AnyUrl,
89-
mocked_directorv2_service_api_base: MockRouter,
89+
mocked_directorv2_rest_api_base: MockRouter,
9090
directorv2_service_openapi_specs: dict[str, Any],
9191
):
9292
settings: ApplicationSettings = app.state.settings
9393
assert settings.API_SERVER_DIRECTOR_V2
9494
oas = directorv2_service_openapi_specs
9595

9696
# pylint: disable=not-context-manager
97-
respx_mock = mocked_directorv2_service_api_base
97+
respx_mock = mocked_directorv2_rest_api_base
9898
# check that what we emulate, actually still exists
9999
path = "/v2/computations/{project_id}/tasks/-/logfile"
100100
assert path in oas["paths"]

services/api-server/tests/unit/api_solvers/test_api_routers_solvers_jobs_logs.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -127,15 +127,15 @@ async def test_log_streaming(
127127

128128
@pytest.fixture
129129
async def mock_job_not_found(
130-
mocked_directorv2_service_api_base: MockRouter,
130+
mocked_directorv2_rest_api_base: MockRouter,
131131
) -> MockRouter:
132132
def _get_computation(request: httpx.Request, **kwargs) -> httpx.Response:
133133
return httpx.Response(status_code=status.HTTP_404_NOT_FOUND)
134134

135-
mocked_directorv2_service_api_base.get(
135+
mocked_directorv2_rest_api_base.get(
136136
path__regex=r"/v2/computations/(?P<project_id>[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})"
137137
).mock(side_effect=_get_computation)
138-
return mocked_directorv2_service_api_base
138+
return mocked_directorv2_rest_api_base
139139

140140

141141
async def test_logstreaming_job_not_found_exception(

services/api-server/tests/unit/api_solvers/test_api_routers_solvers_jobs_read.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ class MockBackendRouters(NamedTuple):
2323

2424
@pytest.fixture
2525
def mocked_backend(
26-
mocked_webserver_service_api_base: MockRouter,
27-
mocked_catalog_service_api_base: MockRouter,
26+
mocked_webserver_rest_api_base: MockRouter,
27+
mocked_catalog_rest_api_base: MockRouter,
2828
project_tests_dir: Path,
2929
) -> MockBackendRouters:
3030
mock_name = "on_list_jobs.json"
@@ -35,7 +35,7 @@ def mocked_backend(
3535
capture = captures[0]
3636
assert capture.host == "catalog"
3737
assert capture.name == "get_service"
38-
mocked_catalog_service_api_base.request(
38+
mocked_catalog_rest_api_base.request(
3939
method=capture.method,
4040
path=capture.path,
4141
name=capture.name,
@@ -47,7 +47,7 @@ def mocked_backend(
4747
capture = captures[1]
4848
assert capture.host == "webserver"
4949
assert capture.name == "list_projects"
50-
mocked_webserver_service_api_base.request(
50+
mocked_webserver_rest_api_base.request(
5151
method=capture.method,
5252
name=capture.name,
5353
path=capture.path,
@@ -57,8 +57,8 @@ def mocked_backend(
5757
)
5858

5959
return MockBackendRouters(
60-
catalog=mocked_catalog_service_api_base,
61-
webserver=mocked_webserver_service_api_base,
60+
catalog=mocked_catalog_rest_api_base,
61+
webserver=mocked_webserver_rest_api_base,
6262
)
6363

6464

services/api-server/tests/unit/api_studies/test_api_routers_studies_jobs_metadata.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import pytest
1414
from fastapi.encoders import jsonable_encoder
1515
from pydantic import TypeAdapter
16+
from pytest_mock import MockType
1617
from pytest_simcore.helpers.httpx_calls_capture_models import HttpApiCallCaptureModel
1718
from pytest_simcore.helpers.httpx_calls_capture_parameters import PathDescription
1819
from respx import MockRouter
@@ -33,7 +34,8 @@ class MockedBackendApiDict(TypedDict):
3334
@pytest.fixture
3435
def mocked_backend(
3536
project_tests_dir: Path,
36-
mocked_webserver_service_api_base: MockRouter,
37+
mocked_webserver_rest_api_base: MockRouter,
38+
mocked_webserver_rpc_api: dict[str, MockType],
3739
) -> MockedBackendApiDict | None:
3840
# load
3941
captures = {
@@ -85,7 +87,7 @@ def mocked_backend(
8587
if group:
8688
# mock this entrypoint using https://lundberg.github.io/respx/guide/#iterable
8789
cc = [c] + [captures[_] for _ in group]
88-
mocked_webserver_service_api_base.request(
90+
mocked_webserver_rest_api_base.request(
8991
method=c.method.upper(),
9092
url=None,
9193
path__regex=f"^{c.path.to_path_regex()}$",
@@ -94,15 +96,15 @@ def mocked_backend(
9496
side_effect=[_.as_response() for _ in cc],
9597
)
9698
else:
97-
mocked_webserver_service_api_base.request(
99+
mocked_webserver_rest_api_base.request(
98100
method=c.method.upper(),
99101
url=None,
100102
path__regex=f"^{c.path.to_path_regex()}$",
101103
name=name,
102104
).mock(return_value=c.as_response())
103105

104106
return MockedBackendApiDict(
105-
webserver=mocked_webserver_service_api_base,
107+
webserver=mocked_webserver_rest_api_base,
106108
)
107109

108110

services/api-server/tests/unit/api_studies/test_api_routes_studies.py

+16-16
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from faker import Faker
1414
from fastapi import status
1515
from pydantic import TypeAdapter
16+
from pytest_mock import MockType
1617
from pytest_simcore.helpers.httpx_calls_capture_models import HttpApiCallCaptureModel
1718
from respx import MockRouter
1819
from servicelib.common_headers import (
@@ -33,7 +34,8 @@ class MockedBackendApiDict(TypedDict):
3334

3435
@pytest.fixture
3536
def mocked_backend(
36-
mocked_webserver_service_api_base: MockRouter,
37+
mocked_webserver_rest_api_base: MockRouter,
38+
mocked_webserver_rpc_api: dict[str, MockType],
3739
project_tests_dir: Path,
3840
) -> MockedBackendApiDict:
3941
mock_name = "for_test_api_routes_studies.json"
@@ -56,7 +58,7 @@ def mocked_backend(
5658
capture = captures[name]
5759
assert capture.host == "webserver"
5860

59-
route = mocked_webserver_service_api_base.request(
61+
route = mocked_webserver_rest_api_base.request(
6062
method=capture.method,
6163
path__regex=capture.path.removeprefix("/v0") + "$",
6264
name=capture.name,
@@ -65,9 +67,7 @@ def mocked_backend(
6567
json=capture.response_body,
6668
)
6769
print(route)
68-
return MockedBackendApiDict(
69-
webserver=mocked_webserver_service_api_base, catalog=None
70-
)
70+
return MockedBackendApiDict(webserver=mocked_webserver_rest_api_base, catalog=None)
7171

7272

7373
@pytest.mark.acceptance_test(
@@ -124,13 +124,13 @@ async def test_studies_read_workflow(
124124
async def test_list_study_ports(
125125
client: httpx.AsyncClient,
126126
auth: httpx.BasicAuth,
127-
mocked_webserver_service_api_base: MockRouter,
127+
mocked_webserver_rest_api_base: MockRouter,
128128
fake_study_ports: list[dict[str, Any]],
129129
study_id: StudyID,
130130
):
131131
# Mocks /projects/{*}/metadata/ports
132132

133-
mocked_webserver_service_api_base.get(
133+
mocked_webserver_rest_api_base.get(
134134
path__regex=r"/projects/(?P<project_id>[\w-]+)/metadata/ports$",
135135
name="list_project_metadata_ports",
136136
).respond(
@@ -155,15 +155,15 @@ async def test_clone_study(
155155
client: httpx.AsyncClient,
156156
auth: httpx.BasicAuth,
157157
study_id: StudyID,
158-
mocked_webserver_service_api_base: MockRouter,
158+
mocked_webserver_rest_api_base: MockRouter,
159159
patch_webserver_long_running_project_tasks: Callable[[MockRouter], MockRouter],
160160
parent_project_id: UUID | None,
161161
parent_node_id: UUID | None,
162162
):
163163
# Mocks /projects
164-
patch_webserver_long_running_project_tasks(mocked_webserver_service_api_base)
164+
patch_webserver_long_running_project_tasks(mocked_webserver_rest_api_base)
165165

166-
callback = mocked_webserver_service_api_base["create_projects"].side_effect
166+
callback = mocked_webserver_rest_api_base["create_projects"].side_effect
167167
assert callback is not None
168168

169169
def clone_project_side_effect(request: httpx.Request):
@@ -179,9 +179,9 @@ def clone_project_side_effect(request: httpx.Request):
179179
assert _parent_node_id == f"{parent_node_id}"
180180
return callback(request)
181181

182-
mocked_webserver_service_api_base[
183-
"create_projects"
184-
].side_effect = clone_project_side_effect
182+
mocked_webserver_rest_api_base["create_projects"].side_effect = (
183+
clone_project_side_effect
184+
)
185185

186186
_headers = {}
187187
if parent_project_id is not None:
@@ -192,7 +192,7 @@ def clone_project_side_effect(request: httpx.Request):
192192
f"/{API_VTAG}/studies/{study_id}:clone", headers=_headers, auth=auth
193193
)
194194

195-
assert mocked_webserver_service_api_base["create_projects"].called
195+
assert mocked_webserver_rest_api_base["create_projects"].called
196196

197197
assert resp.status_code == status.HTTP_201_CREATED
198198

@@ -201,11 +201,11 @@ async def test_clone_study_not_found(
201201
client: httpx.AsyncClient,
202202
auth: httpx.BasicAuth,
203203
faker: Faker,
204-
mocked_webserver_service_api_base: MockRouter,
204+
mocked_webserver_rest_api_base: MockRouter,
205205
patch_webserver_long_running_project_tasks: Callable[[MockRouter], MockRouter],
206206
):
207207
# Mocks /projects
208-
mocked_webserver_service_api_base.post(
208+
mocked_webserver_rest_api_base.post(
209209
path__regex=r"/projects",
210210
name="project_clone",
211211
).respond(

0 commit comments

Comments
 (0)