From 47db359c3ffa2335c1ec74a611b0419e3e1b1bf3 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Wed, 10 Sep 2025 12:56:05 -0700 Subject: [PATCH] fuzz --- tests/app/job/test_rest.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tests/app/job/test_rest.py b/tests/app/job/test_rest.py index fed50c617..0acb20135 100644 --- a/tests/app/job/test_rest.py +++ b/tests/app/job/test_rest.py @@ -6,6 +6,8 @@ from zoneinfo import ZoneInfo import pytest from freezegun import freeze_time +from hypothesis import given +from hypothesis import strategies as st import app.celery.tasks from app.dao.templates_dao import dao_update_template @@ -70,6 +72,30 @@ def test_cancel_job(client, sample_scheduled_job): assert resp_json["data"]["job_status"] == JobStatus.CANCELLED +uuid_str_strategy = st.one_of( + st.just(str(uuid.uuid4())), st.text(min_size=1, max_size=36) +) + + +@given(service_id=uuid_str_strategy, job_id=uuid_str_strategy) +def test_fuzz_cancel_job(client, service_id, job_id): + path = f"/service/{service_id}/job/{job_id}/cancel" + auth_header = create_admin_authorization_header() + response = client.post(path, headers=[auth_header]) + status = response.status_code + assert status in ( + 200, + 400, + 401, + 403, + 404, + ), f"Unexpected status: {status} for path: {path}" + if status == 200: + resp_json = json.loads(response.get_data(as_text=True)) + assert resp_json["data"]["id"] == job_id + assert resp_json["data"]["job_status"] == JobStatus.CANCELLED + + def test_cant_cancel_normal_job(client, sample_job, mocker): job_id = str(sample_job.id) service_id = sample_job.service.id