Skip to content

Commit 9401f48

Browse files
committed
fix get function job outputs and test
1 parent eab5e08 commit 9401f48

File tree

2 files changed

+37
-8
lines changed

2 files changed

+37
-8
lines changed

services/api-server/src/simcore_service_api_server/api/routes/function_jobs_routes.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,11 @@ async def function_job_outputs(
317317
function.function_class == FunctionClass.PROJECT
318318
and function_job.function_class == FunctionClass.PROJECT
319319
):
320-
assert function_job.project_job_id is not None # nosec
320+
if function_job.project_job_id is None:
321+
raise HTTPException(
322+
status_code=status.HTTP_404_NOT_FOUND,
323+
detail="Function job outputs not found",
324+
)
321325
new_outputs = dict(
322326
(
323327
await studies_jobs.get_study_job_outputs(
@@ -333,7 +337,11 @@ async def function_job_outputs(
333337
function.function_class == FunctionClass.SOLVER
334338
and function_job.function_class == FunctionClass.SOLVER
335339
):
336-
assert function_job.solver_job_id is not None # nosec
340+
if function_job.solver_job_id is None:
341+
raise HTTPException(
342+
status_code=status.HTTP_404_NOT_FOUND,
343+
detail="Function job outputs not found",
344+
)
337345
new_outputs = dict(
338346
(
339347
await solvers_jobs_read.get_job_outputs(

services/api-server/tests/unit/api_functions/test_api_routers_function_jobs.py

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -310,19 +310,39 @@ async def _get_task_status(
310310
)
311311

312312

313-
@pytest.mark.parametrize("job_outputs", [{"X+Y": 42, "X-Y": 10}])
313+
@pytest.mark.parametrize(
314+
"job_outputs, project_job_id",
315+
[
316+
(None, None),
317+
({"X+Y": 42, "X-Y": 10}, ProjectID(_faker.uuid4())),
318+
],
319+
)
314320
async def test_get_function_job_outputs(
315321
client: AsyncClient,
316322
mock_handler_in_functions_rpc_interface: Callable[[str, Any], None],
317323
mock_registered_project_function_job: RegisteredProjectFunctionJob,
318324
mock_registered_project_function: RegisteredProjectFunction,
319325
mocked_webserver_rpc_api: dict[str, MockType],
320326
auth: httpx.BasicAuth,
321-
job_outputs: dict[str, Any],
327+
job_outputs: dict[str, Any] | None,
328+
project_job_id: ProjectID | None,
322329
) -> None:
323330

331+
_expected_return_status = (
332+
status.HTTP_404_NOT_FOUND
333+
if project_job_id is None and job_outputs is None
334+
else status.HTTP_200_OK
335+
)
336+
324337
mock_handler_in_functions_rpc_interface(
325-
"get_function_job", mock_registered_project_function_job
338+
"get_function_job",
339+
mock_registered_project_function_job.model_copy(
340+
update={
341+
"user_id": ANY,
342+
"project_job_id": project_job_id,
343+
"job_creation_task_id": None,
344+
}
345+
),
326346
)
327347
mock_handler_in_functions_rpc_interface(
328348
"get_function", mock_registered_project_function
@@ -333,6 +353,7 @@ async def test_get_function_job_outputs(
333353
f"{API_VTAG}/function_jobs/{mock_registered_project_function_job.uid}/outputs",
334354
auth=auth,
335355
)
336-
assert response.status_code == status.HTTP_200_OK
337-
data = response.json()
338-
assert data == job_outputs
356+
assert response.status_code == _expected_return_status
357+
if response.status_code == status.HTTP_200_OK:
358+
data = response.json()
359+
assert data == job_outputs

0 commit comments

Comments
 (0)