from __future__ import annotations import tempfile import unittest from pathlib import Path from unittest.mock import patch from redflare.core.models import Target from redflare.core.standards import enrich_finding from redflare.modules.base import ModuleContext from redflare.modules.http import HTTPResponse from redflare.modules.vulnerabilities import CVEIntelligenceModule, fingerprint_response class CVEIntelligenceTests(unittest.TestCase): def test_fingerprints_only_explicit_versions(self): body = b'' values = fingerprint_response({"server": "nginx/1.24.0", "x-powered-by": "Express"}, body) products = {(item.product, item.version) for item in values} self.assertEqual(products, {("nginx", "1.24.0"), ("WordPress", "6.4.2"), ("jQuery", "3.6.0")}) self.assertNotIn("Express", {item.product for item in values}) @patch("redflare.modules.vulnerabilities.query_nvd") @patch("redflare.modules.vulnerabilities.request") def test_emits_cve_findings_with_clickable_reference(self, get, nvd): get.return_value = HTTPResponse("https://example.test", 200, {"server": "nginx/1.24.0"}, b"") nvd.return_value = [{ "id": "CVE-2026-12345", "published": "2026-01-02T00:00:00Z", "lastModified": "2026-01-03T00:00:00Z", "vulnStatus": "Analyzed", "descriptions": [{"lang": "en", "value": "Fixture vulnerability."}], "metrics": {"cvssMetricV31": [{"cvssData": {"baseScore": 9.8, "baseSeverity": "CRITICAL", "vectorString": "CVSS:3.1/AV:N"}}]}, "references": [{"url": "https://vendor.example/advisory"}], }] with tempfile.TemporaryDirectory() as directory: context = ModuleContext("run_test", Path(directory), timeout=1) result = CVEIntelligenceModule().run(Target("https://example.test", "example.test", "https", 443), context) self.assertEqual(len(result.findings), 1) finding = enrich_finding(result.findings[0]) self.assertEqual(finding.test_id, "RFV2-COMP-001") self.assertEqual(finding.severity, "critical") self.assertEqual(finding.standards["CVE"][0]["id"], "CVE-2026-12345") self.assertTrue(finding.standards["CVE"][0]["url"].startswith("https://nvd.nist.gov/")) if __name__ == "__main__": unittest.main()