fix(qa11): use relative version checks for idempotent runs
Some checks failed
Aegis CI / lint-and-test (push) Has been cancelled

This commit is contained in:
kitos
2026-05-20 15:26:38 +02:00
parent 852adb6e4d
commit 0febbc67f1

View File

@@ -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", ""))