Skip to content

Commit e292549

Browse files
authored
Disallow deleting workflow processes through the API (#985)
1 parent 8d71842 commit e292549

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

orchestrator/api/api_v1/endpoints/processes.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,9 @@ def delete(process_id: UUID) -> None:
158158
if not process:
159159
raise_status(HTTPStatus.NOT_FOUND)
160160

161+
if not process.is_task:
162+
raise_status(HTTPStatus.BAD_REQUEST)
163+
161164
db.session.delete(db.session.get(ProcessTable, process_id))
162165
db.session.commit()
163166

@@ -270,7 +273,7 @@ def update_progress_on_awaiting_process_endpoint(
270273
@router.put(
271274
"/resume-all", response_model=ProcessResumeAllSchema, dependencies=[Depends(check_global_lock, use_cache=False)]
272275
)
273-
async def resume_all_processess_endpoint(request: Request, user: str = Depends(user_name)) -> dict[str, int]:
276+
async def resume_all_processes_endpoint(request: Request, user: str = Depends(user_name)) -> dict[str, int]:
274277
"""Retry all task processes in status Failed, Waiting, API Unavailable or Inconsistent Data.
275278
276279
The retry is started in the background, returning status 200 and number of processes in message.

test/unit_tests/api/test_processes.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,20 @@ def test_show_not_found(test_client, started_process):
100100
assert HTTPStatus.NOT_FOUND == response.status_code
101101

102102

103-
def test_delete_process(responses, test_client, started_process):
103+
def test_delete_process_workflow(responses, test_client, started_process):
104+
processes = test_client.get("/api/processes").json()
105+
before_delete_count = len(processes)
106+
107+
response = test_client.delete(f"/api/processes/{started_process}")
108+
assert HTTPStatus.BAD_REQUEST == response.status_code
109+
assert before_delete_count == len(test_client.get("/api/processes").json())
110+
111+
112+
def test_delete_process_task(responses, test_client, started_process):
113+
process = db.session.get(ProcessTable, started_process)
114+
process.is_task = True
115+
db.session.commit()
116+
104117
processes = test_client.get("/api/processes").json()
105118
before_delete_count = len(processes)
106119

0 commit comments

Comments
 (0)