From 0febbc67f1ca5c0fe935789de3ec04cd5b1ed037 Mon Sep 17 00:00:00 2001 From: kitos Date: Wed, 20 May 2026 15:26:38 +0200 Subject: [PATCH] fix(qa11): use relative version checks for idempotent runs --- scripts/qa_phase11.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/scripts/qa_phase11.py b/scripts/qa_phase11.py index 7450920..0d660fd 100644 --- a/scripts/qa_phase11.py +++ b/scripts/qa_phase11.py @@ -102,8 +102,9 @@ def main(): check("POST /knowledge/playbooks (detect) → 201", r.status_code == 201, r.text[:150]) pb1 = r.json() if r.status_code == 201 else {} + pb1_start_version = pb1.get("version", 1) check("Playbook has id", bool(pb1.get("id"))) - check("Playbook version = 1", pb1.get("version") == 1) + check("Playbook version is integer ≥ 1", pb1_start_version >= 1) check("Playbook tools list", pb1.get("tools") == ["Splunk", "Sigma"]) r = requests.post(f"{BASE}/knowledge/playbooks", headers=h, json={ @@ -180,15 +181,19 @@ def main(): check("PATCH /knowledge/playbooks/{id} → 200", r.status_code == 200, r.text[:120]) pb1_v2 = r.json() if r.status_code == 200 else {} - check("Version incremented to 2", pb1_v2.get("version") == 2) + expected_v2 = pb1_start_version + 1 + check(f"Version incremented to {expected_v2}", + pb1_v2.get("version") == expected_v2) check("Content updated", "Sysmon" in pb1_v2.get("content", "")) check("Tools updated (3 items)", len(pb1_v2.get("tools", [])) == 3) r = requests.patch(f"{BASE}/knowledge/playbooks/{pb1_id}", headers=h, json={ - "title": "Detection Playbook v3", + "title": "Detection Playbook v+3", "change_note": "Renamed", }) - check("PATCH again → version 3", r.json().get("version") == 3 + expected_v3 = pb1_start_version + 2 + check(f"PATCH again → version {expected_v3}", + r.json().get("version") == expected_v3 if r.status_code == 200 else False) # List versions @@ -207,7 +212,8 @@ def main(): r = requests.post(f"{BASE}/knowledge/playbooks/{pb1_id}/restore/1", headers=h) check("POST /restore/1 → 200", r.status_code == 200, r.text[:120]) restored = r.json() if r.status_code == 200 else {} - check("Version incremented after restore", restored.get("version", 0) >= 4) + check("Version incremented after restore", + restored.get("version", 0) >= pb1_start_version + 3) check("Content restored to v1 content", "Sysmon" not in restored.get("content", ""))