feat: 31 new tests, metrics LLM counters, Dockerfile caching, Makefile targets, compose limits, code fixes
This commit is contained in:
78
tests/test_schemas.py
Normal file
78
tests/test_schemas.py
Normal file
@@ -0,0 +1,78 @@
|
||||
"""Tests for schemas and serialize_finding."""
|
||||
|
||||
import datetime
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
|
||||
class TestSerializeFinding:
|
||||
def test_normal_finding(self):
|
||||
from guarddog_nexus.schemas import serialize_finding
|
||||
|
||||
finding = MagicMock()
|
||||
finding.id = 42
|
||||
finding.scan_id = 7
|
||||
finding.report = {"verdict": "safe"}
|
||||
finding.created_at = datetime.datetime(2026, 1, 1, tzinfo=datetime.timezone.utc)
|
||||
finding.data = {
|
||||
"rule": "shady-links",
|
||||
"severity": "WARNING",
|
||||
"message": "Suspicious URL",
|
||||
"location": "setup.py:15",
|
||||
"code": "url = 'http://evil.com'",
|
||||
}
|
||||
|
||||
result = serialize_finding(finding)
|
||||
|
||||
assert result["id"] == 42
|
||||
assert result["scan_id"] == 7
|
||||
assert result["rule"] == "shady-links"
|
||||
assert result["severity"] == "WARNING"
|
||||
assert result["report"] == {"verdict": "safe"}
|
||||
assert result["created_at"] == "2026-01-01T00:00:00+00:00"
|
||||
|
||||
def test_created_at_none(self):
|
||||
from guarddog_nexus.schemas import serialize_finding
|
||||
|
||||
finding = MagicMock()
|
||||
finding.id = 1
|
||||
finding.scan_id = 1
|
||||
finding.report = None
|
||||
finding.created_at = None
|
||||
finding.data = {"rule": "test", "message": "msg"}
|
||||
|
||||
result = serialize_finding(finding)
|
||||
|
||||
assert result["created_at"] is None
|
||||
assert result["report"] is None
|
||||
|
||||
def test_missing_data_fields_default_to_empty_string(self):
|
||||
from guarddog_nexus.schemas import serialize_finding
|
||||
|
||||
finding = MagicMock()
|
||||
finding.id = 1
|
||||
finding.scan_id = 1
|
||||
finding.report = None
|
||||
finding.created_at = None
|
||||
finding.data = {"rule": "only-rule"}
|
||||
|
||||
result = serialize_finding(finding)
|
||||
|
||||
assert result["rule"] == "only-rule"
|
||||
assert result["severity"] == ""
|
||||
assert result["message"] == ""
|
||||
|
||||
def test_data_values_none_become_empty_strings(self):
|
||||
from guarddog_nexus.schemas import serialize_finding
|
||||
|
||||
finding = MagicMock()
|
||||
finding.id = 1
|
||||
finding.scan_id = 1
|
||||
finding.report = None
|
||||
finding.created_at = None
|
||||
finding.data = {"rule": None, "severity": None, "message": None}
|
||||
|
||||
result = serialize_finding(finding)
|
||||
|
||||
assert result["rule"] == ""
|
||||
assert result["severity"] == ""
|
||||
assert result["message"] == ""
|
||||
Reference in New Issue
Block a user