"""Heuristic tests for ban_tester.""" from __future__ import annotations import unittest from proxy_chain_manager import ban_tester class TestBannedBodyHints(unittest.TestCase): def test_normal_page_is_not_banned(self) -> None: self.assertFalse(ban_tester._looks_banned_body("Welcome to my homepage")) self.assertFalse(ban_tester._looks_banned_body("hello")) def test_naked_captcha_word_is_not_banned(self) -> None: # 'captcha' alone is too common (privacy policies, login pages) — # earlier audit removed it from hints. self.assertFalse(ban_tester._looks_banned_body( "We use a captcha on the signup page to prevent bots." )) def test_captcha_required_phrase_is_banned(self) -> None: self.assertTrue(ban_tester._looks_banned_body("Captcha required to continue.")) self.assertTrue(ban_tester._looks_banned_body("Complete the captcha below.")) def test_access_denied_is_banned(self) -> None: self.assertTrue(ban_tester._looks_banned_body("Access denied")) self.assertTrue(ban_tester._looks_banned_body("ACCESS DENIED — 403")) def test_cloudflare_ray_is_banned(self) -> None: self.assertTrue(ban_tester._looks_banned_body("Cloudflare Ray ID: abc123")) def test_empty_body_is_not_banned(self) -> None: self.assertFalse(ban_tester._looks_banned_body("")) self.assertFalse(ban_tester._looks_banned_body(None)) # type: ignore[arg-type] class TestSiteCategories(unittest.TestCase): def test_all_category_includes_known_sites(self) -> None: all_urls = {u for _, u in ban_tester.SITE_CATEGORIES["All"]} self.assertTrue(len(all_urls) > 5) def test_categories_present(self) -> None: for key in ("Social / General", "Shopping", "Crypto Exchanges", "DNS Providers", "All"): self.assertIn(key, ban_tester.SITE_CATEGORIES) if __name__ == "__main__": unittest.main()