"""Tests for the bounded post-discovery enrichment pipeline.""" import os import unittest from unittest.mock import patch from app.enrichment import enrich_contacts, enrich_domain, enrich_website def _page(status=200, html=b"
+27 12 345 6789
hello@acme.test' fetch = lambda url, **_: _page(html=html) with patch("app.enrichment.validate_url", side_effect=lambda url: url): result = enrich_website("https://acme.test/", fetch=fetch) self.assertEqual(result["visible_phone"], "+27 12 345 6789") self.assertEqual(result["visible_email"], "hello@acme.test") def test_enrich_website_no_evidence_is_no_claim(self): fetch = lambda url, **_: _page(status=404) with patch("app.enrichment.validate_url", side_effect=lambda url: url): result = enrich_website("https://acme.test/", fetch=fetch) self.assertIsNone(result["visible_phone"]) self.assertIsNone(result["visible_email"]) def test_enrich_website_handles_fetch_failure(self): def fetch(url, **_): raise ConnectionError("timed out") with patch("app.enrichment.validate_url", side_effect=lambda url: url): result = enrich_website("https://acme.test/", fetch=fetch) self.assertIn("error", result) self.assertIsNone(result["has_working_website"]) def test_enrich_https_flag(self): fetch = lambda url, **_: _page(tls=True) with patch("app.enrichment.validate_url", side_effect=lambda url: url): result = enrich_website("https://acme.test/", fetch=fetch) self.assertTrue(result["https"]) self.assertTrue(result["ssl_valid"]) def test_enrich_contacts_delegates_to_extractor(self): html = 'Email+27 12 345 6789' contacts = enrich_contacts(html, "https://acme.test/", max_results=10) self.assertTrue(any(c["value"] == "hello@acme.test" for c in contacts)) self.assertTrue(any(c["kind"] == "phone" for c in contacts)) self.assertTrue(all(c["source_url"] == "https://acme.test/" for c in contacts)) def test_enrich_domain_unknown_for_unsupported_suffix(self): result = enrich_domain("localhost") self.assertEqual(result["status"], "unknown") def test_enrich_domain_uses_resolution_evidence(self): with patch("app.enrichment.normalize_registrable_domain", return_value="acme.co.za"), \ patch("app.enrichment.resolve_domain", return_value={"status": "ok", "addresses": ["1.2.3.4"]}): result = enrich_domain("acme.co.za") self.assertTrue(result["resolves"]) self.assertEqual(result["status"], "registered") def test_enrich_domain_fails_closed(self): with patch("app.enrichment.normalize_registrable_domain", return_value="acme.co.za"), \ patch("app.enrichment.resolve_domain", return_value={"status": "nxdomain"}): result = enrich_domain("acme.co.za") self.assertFalse(result["resolves"]) if __name__ == "__main__": unittest.main()