Files
Aegis/backend/tests/test_stale_detection_service.py

79 lines
2.0 KiB
Python

"""Tests for stale coverage detection."""
from datetime import datetime, timedelta, timezone
from app.models.enums import TechniqueStatus, TestState
from app.models.technique import Technique
from app.models.test import Test
from app.services.stale_detection_service import STALE_THRESHOLD_DAYS, detect_stale_coverage
def _technique(db, *, mitre_id="T1059", status=TechniqueStatus.validated):
tech = Technique(
mitre_id=mitre_id,
name="Command and Scripting Interpreter",
tactic="execution",
status_global=status,
review_required=False,
)
db.add(tech)
db.commit()
db.refresh(tech)
return tech
def _validated_test(db, technique, *, days_ago: int):
validated_at = datetime.now(timezone.utc) - timedelta(days=days_ago)
test = Test(
technique_id=technique.id,
name="Coverage test",
state=TestState.validated,
red_validated_at=validated_at,
blue_validated_at=validated_at,
created_at=validated_at,
)
db.add(test)
db.commit()
return test
def test_stale_technique_flagged_after_threshold(db):
tech = _technique(db)
_validated_test(db, tech, days_ago=STALE_THRESHOLD_DAYS + 30)
count = detect_stale_coverage(db)
db.refresh(tech)
assert count == 1
assert tech.review_required is True
def test_recent_validated_technique_not_flagged(db):
tech = _technique(db)
_validated_test(db, tech, days_ago=30)
count = detect_stale_coverage(db)
db.refresh(tech)
assert count == 0
assert tech.review_required is False
def test_not_evaluated_never_tested_not_flagged(db):
tech = _technique(db, status=TechniqueStatus.not_evaluated)
count = detect_stale_coverage(db)
db.refresh(tech)
assert count == 0
assert tech.review_required is False
def test_stale_detection_idempotent(db):
tech = _technique(db, mitre_id="T1204")
_validated_test(db, tech, days_ago=STALE_THRESHOLD_DAYS + 60)
tech.review_required = True
db.commit()
assert detect_stale_coverage(db) == 0