Files

65 lines
1.7 KiB
Python
Raw Permalink Normal View History

from pathlib import Path
ROOT = Path(__file__).resolve().parents[2]
PENTEST = ROOT / "skills/pentest"
REPORTING = PENTEST / "playbooks/reporting.md"
TEMPLATE = PENTEST / "templates/report-template.md"
DETECTION_TEMPLATE = PENTEST / "templates/detection-engineering.md"
def _text(path: Path) -> str:
return path.read_text(encoding="utf-8")
def test_detection_engineering_template_exists_with_required_fields():
text = _text(DETECTION_TEMPLATE)
required = [
"# Detection Engineering Deliverable",
"Finding ID",
"Detection Objective",
"Data Sources",
"Log Source / Product",
"Detection Logic",
"Sigma",
"Splunk SPL",
"Elastic KQL",
"Triage Steps",
"False Positive Notes",
"Validation Command or Replay",
"Evidence Path",
"Owner",
]
for marker in required:
assert marker in text
def test_reporting_requires_detection_deliverable_for_actionable_findings():
text = _text(REPORTING)
required = [
"Detection Engineering Deliverable",
"templates/detection-engineering.md",
"data sources",
"detection logic",
"triage steps",
"false positive notes",
"validation command or replay",
"Do not invent telemetry",
]
for marker in required:
assert marker in text
def test_report_template_has_detection_section_linking_to_findings():
text = _text(TEMPLATE)
required = [
"## Detection Engineering",
"Finding ID",
"Detection Deliverable",
"Data Sources",
"Detection Status",
"Validation Evidence",
"False Positive Notes",
]
for marker in required:
assert marker in text