From db2fa5ec1725f6c7914afc63659d0f37187816f5 Mon Sep 17 00:00:00 2001 From: qananasikq Date: Fri, 10 Apr 2026 15:15:07 +0300 Subject: [PATCH] add antibot unit tests --- tests/test_parser.py | 6 ++++++ tests/test_scraper.py | 23 +++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/tests/test_parser.py b/tests/test_parser.py index 1b9f25b..7c5cd70 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -57,6 +57,12 @@ class TestVehicleParserUnit(unittest.TestCase): self.assertTrue(hints["has_captcha_text"]) self.assertTrue(hints["has_antibot_text"]) + def test_access_notes_reflect_antibot_signals(self) -> None: + summary = {"vin": "", "image_urls": [], "note": "Incapsula access denied. Verify you are human."} + notes = self.parser._build_access_notes(summary, []) + self.assertTrue(notes["possible_captcha"]) + self.assertTrue(notes["possible_antibot"]) + if __name__ == "__main__": unittest.main() diff --git a/tests/test_scraper.py b/tests/test_scraper.py index c9a1d7f..9fb600f 100644 --- a/tests/test_scraper.py +++ b/tests/test_scraper.py @@ -4,6 +4,7 @@ import unittest from unittest.mock import MagicMock from iaai_scraper.core.config import Settings +from iaai_scraper.core.exceptions import AntiBotDetectedError, SiteStructureChangedError from iaai_scraper.scraper import IAAIScraper from iaai_scraper.storage.schemas import CarRecord @@ -149,6 +150,28 @@ class TestScraperSync(unittest.TestCase): self.assertIsNone(scraper.browser) self.assertIsNone(scraper.playwright) + def test_guard_raises_on_antibot_signals(self) -> None: + with self.assertRaises(AntiBotDetectedError): + IAAIScraper._raise_if_blocked_or_incomplete( + { + "dom_hints": {"has_captcha_text": True, "has_antibot_text": False}, + "access_notes": {}, + "vehicle_summary": {}, + }, + "https://www.iaai.com/VehicleDetail/999~US", + ) + + def test_guard_raises_on_empty_vehicle_page(self) -> None: + with self.assertRaises(SiteStructureChangedError): + IAAIScraper._raise_if_blocked_or_incomplete( + { + "dom_hints": {"has_captcha_text": False, "has_antibot_text": False}, + "access_notes": {"possible_captcha": False, "possible_antibot": False}, + "vehicle_summary": {}, + }, + "https://www.iaai.com/VehicleDetail/999~US", + ) + if __name__ == "__main__": unittest.main()