From a7e244fab6f5a037b110c210daf310a94bf43dcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pascal=20Pfl=C3=BCgner?= Date: Wed, 20 May 2026 12:22:35 +0200 Subject: [PATCH] fix: workflow job name API validation Accept tower_workflow_job_name as a string in the jobs API and add an E2E test to verify that workflow job IDs and names are persisted and returned via /data/jobs. --- lufa/api_v1.py | 2 +- tests/e2e/test_api.py | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lufa/api_v1.py b/lufa/api_v1.py index bd12b95..7457113 100644 --- a/lufa/api_v1.py +++ b/lufa/api_v1.py @@ -49,7 +49,7 @@ def decorator(*args: P.args, **kwargs: P.kwargs): "tower_schedule_id": int, "tower_schedule_name": str, "tower_workflow_job_id": int, - "tower_workflow_job_name": int, + "tower_workflow_job_name": str, "compliance_interval": int, "template_infos": str, "playbook_path": str, diff --git a/tests/e2e/test_api.py b/tests/e2e/test_api.py index 336a7b9..34fb3b2 100644 --- a/tests/e2e/test_api.py +++ b/tests/e2e/test_api.py @@ -108,6 +108,23 @@ def test_post_job(self, client): r = client.post(endpoint_uri + "/jobs", json=generic_job_data) assert r.status_code == 409 + def test_post_job_with_workflow_name(self, client): + job_data = generic_job_data | { + "tower_job_id": 2, + "tower_workflow_job_id": 42, + "tower_workflow_job_name": "Import Workflow", + } + + r = client.post(endpoint_uri + "/jobs", json=job_data) + assert r.status_code == 201, r.text + + job_res = client.get("/data/jobs") + assert job_res.status_code != 403 + job = [j for j in job_res.json["jobs_table"]["data"] if j["tower_job_id"] == job_data["tower_job_id"]][0] + + assert job["tower_workflow_job_id"] == job_data["tower_workflow_job_id"] + assert job["tower_workflow_job_name"] == job_data["tower_workflow_job_name"] + def test_patch_job(self, client): """Create a Job and set end_time"""