feat(tests): make Expected Detection editable when creating a test from template
Aegis CI / lint-and-test (push) Has been cancelled
Snyk Security Scan / Python vulnerabilities (backend) (push) Has been cancelled
Snyk Security Scan / npm vulnerabilities (frontend) (push) Has been cancelled
Snyk Security Scan / Docker image vulnerabilities (backend) (push) Has been cancelled
Aegis CI / lint-and-test (push) Has been cancelled
Snyk Security Scan / Python vulnerabilities (backend) (push) Has been cancelled
Snyk Security Scan / npm vulnerabilities (frontend) (push) Has been cancelled
Snyk Security Scan / Docker image vulnerabilities (backend) (push) Has been cancelled
Leads can now edit Expected Detection in the create-from-template form, same as Suggested Attack Procedure — the edit seeds the new test's detect_procedure via a detect_procedure_override, without touching the template itself. The template only updates later through the existing procedure-suggestion approval flow, once a round is actually submitted — same mechanism as the red side, no new bypass.
This commit is contained in:
@@ -272,3 +272,37 @@ def test_duplicate_submission_does_not_create_a_second_pending_suggestion(
|
||||
|
||||
listed = api("get", "/api/v1/procedure-suggestions", red_lead_headers).json()
|
||||
assert len(listed) == 1
|
||||
|
||||
|
||||
def test_lead_can_override_detect_procedure_when_creating_from_template(
|
||||
client, db, api, red_lead_headers, technique, template,
|
||||
):
|
||||
"""A lead editing Expected Detection in the create-from-template form
|
||||
seeds the new test's detect_procedure with their edit — same mechanism
|
||||
as procedure_text_override on the red side — without touching the
|
||||
template itself. The template only updates later, through the normal
|
||||
procedure-suggestion approval flow once a round is actually submitted."""
|
||||
resp = api(
|
||||
"post", "/api/v1/tests/from-template", red_lead_headers,
|
||||
json={
|
||||
"template_id": template["id"],
|
||||
"technique_id": technique,
|
||||
"detect_procedure": "Check Sysmon Event ID 1 for mimikatz.exe process creation.",
|
||||
},
|
||||
)
|
||||
assert resp.status_code == 201, resp.text
|
||||
assert resp.json()["detect_procedure"] == "Check Sysmon Event ID 1 for mimikatz.exe process creation."
|
||||
|
||||
reloaded_template = api("get", f"/api/v1/test-templates/{template['id']}", red_lead_headers)
|
||||
assert reloaded_template.json()["expected_detection"] == "Check process creation logs."
|
||||
|
||||
|
||||
def test_detect_procedure_defaults_to_template_expected_detection(
|
||||
client, db, api, red_lead_headers, technique, template,
|
||||
):
|
||||
resp = api(
|
||||
"post", "/api/v1/tests/from-template", red_lead_headers,
|
||||
json={"template_id": template["id"], "technique_id": technique},
|
||||
)
|
||||
assert resp.status_code == 201, resp.text
|
||||
assert resp.json()["detect_procedure"] == "Check process creation logs."
|
||||
|
||||
Reference in New Issue
Block a user