Files
guarddog-nexus/tests/test_schemas.py

79 lines
2.4 KiB
Python

"""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"] == ""