Skip to content

Commit 34e7622

Browse files
committed
first attempt at adding unittest for entire api-server endpoint
1 parent af2a969 commit 34e7622

File tree

2 files changed

+59
-0
lines changed

2 files changed

+59
-0
lines changed

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

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,3 +227,56 @@ def create_project_side_effect(request: httpx.Request):
227227
)
228228
assert resp.status_code == status.HTTP_201_CREATED
229229
job = Job.model_validate(resp.json())
230+
231+
232+
@pytest.fixture
233+
def mocked_backend_services_apis_for_delete_job_assets(
234+
mocked_webserver_rest_api: MockRouter,
235+
mocked_webserver_rpc_api: dict[str, MockType],
236+
mocked_storage_rest_api_base: MockRouter,
237+
) -> dict[str, MockRouter | dict[str, MockType]]:
238+
239+
# Patch PATCH /projects/{project_id}
240+
def _patch_project(request: httpx.Request, **kwargs):
241+
# Accept any patch, return 204 No Content
242+
return httpx.Response(status_code=status.HTTP_204_NO_CONTENT)
243+
244+
mocked_webserver_rest_api.patch(
245+
path__regex=r"/projects/(?P<project_id>[\w-]+)$",
246+
name="patch_project",
247+
).mock(side_effect=_patch_project)
248+
249+
# Mock storage REST delete_project_s3_assets
250+
def _delete_project_s3_assets(request: httpx.Request, **kwargs):
251+
return httpx.Response(status_code=status.HTTP_204_NO_CONTENT)
252+
253+
mocked_storage_rest_api_base.delete(
254+
path__regex=r"/simcore-s3/folders/(?P<project_id>[\w-]+)$",
255+
name="delete_project_s3_assets",
256+
).mock(side_effect=_delete_project_s3_assets)
257+
258+
return {
259+
"webserver_rest": mocked_webserver_rest_api,
260+
"webserver_rpc": mocked_webserver_rpc_api,
261+
"storage_rest": mocked_storage_rest_api_base,
262+
}
263+
264+
265+
@pytest.mark.acceptance_test("Test delete_job_assets endpoint")
266+
async def test_delete_job_assets_endpoint(
267+
auth: httpx.BasicAuth,
268+
client: httpx.AsyncClient,
269+
solver_key: str,
270+
solver_version: str,
271+
mocked_backend_services_apis_for_delete_job_assets: dict[
272+
str, MockRouter | dict[str, MockType]
273+
],
274+
):
275+
job_id = "123e4567-e89b-12d3-a456-426614174000"
276+
url = f"/{API_VTAG}/solvers/{solver_key}/releases/{solver_version}/jobs/{job_id}/assets"
277+
278+
resp = await client.delete(url, auth=auth)
279+
assert resp.status_code == status.HTTP_204_NO_CONTENT
280+
281+
storage_rest = mocked_backend_services_apis_for_delete_job_assets["storage_rest"]
282+
assert storage_rest["delete_project_s3_assets"].called

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -563,6 +563,12 @@ def mocked_webserver_rpc_api(
563563
autospec=True,
564564
side_effect=side_effects.mark_project_as_job,
565565
),
566+
"get_project_marked_as_job": mocker.patch.object(
567+
projects_rpc,
568+
"get_project_marked_as_job",
569+
autospec=True,
570+
side_effect=side_effects.get_project_marked_as_job,
571+
),
566572
"list_projects_marked_as_jobs": mocker.patch.object(
567573
projects_rpc,
568574
"list_projects_marked_as_jobs",

0 commit comments

Comments
 (0)