Files
2026-06-21 17:44:13 +00:00

44 lines
1.6 KiB
Python

import tempfile
import unittest
from redflare.core.models import Finding
from redflare.core.models import Target
from redflare.core.storage import RunStore, deduplicate_findings, target_run_id
class StorageTests(unittest.TestCase):
def test_target_run_name_is_human_readable(self):
value = target_run_id([Target("https://example.test", "example.test", "https", 443)])
self.assertRegex(value, r"^scan_example\.test_\d{8}_\d{6}$")
def test_run_folders_do_not_collide(self):
with tempfile.TemporaryDirectory() as directory:
first = RunStore(directory, "run_test")
second = RunStore(directory, "run_test")
self.assertNotEqual(first.root, second.root)
self.assertTrue(first.root.is_dir())
self.assertTrue(second.root.is_dir())
def test_corroborated_header_findings_are_deduplicated(self):
common = {
"run_id": "run_test",
"target": "https://example.test",
"severity": "low",
"confidence": 0.95,
"description": "missing headers",
}
findings = [
Finding(module="http_headers", category="security-headers", title="Missing headers", **common),
Finding(module="gatekeeper", category="browser-security-headers", title="Browser missing headers", **common),
]
deduplicated = deduplicate_findings(findings)
self.assertEqual(len(deduplicated), 1)
self.assertEqual(
deduplicated[0].evidence["corroborated_by"],
["gatekeeper", "http_headers"],
)
if __name__ == "__main__":
unittest.main()