diff --git a/tradein-mvp/backend/tests/tasks/test_avito_detail_backfill.py b/tradein-mvp/backend/tests/tasks/test_avito_detail_backfill.py index 29cc9f48..cabec75c 100644 --- a/tradein-mvp/backend/tests/tasks/test_avito_detail_backfill.py +++ b/tradein-mvp/backend/tests/tasks/test_avito_detail_backfill.py @@ -777,10 +777,23 @@ async def test_backfill_use_curl_false_creates_browser_fetcher() -> None: ) # BrowserFetcher должен быть создан (source="avito", endpoint из settings — #2310 - # kit BrowserFetcher требует endpoint= обязательным keyword-only параметром) - mock_bf_cls.assert_called_once_with( - source="avito", endpoint=fake_settings.browser_http_endpoint - ) + # kit BrowserFetcher требует endpoint= обязательным keyword-only параметром). + # + # Проверяем ВХОЖДЕНИЕ аргументов, а не полное равенство вызова. Прежняя + # форма `assert_called_once_with(source=..., endpoint=...)` требовала, чтобы + # других аргументов НЕ БЫЛО, и тем самым закрепляла дефект: именно + # отсутствие проводки пула (#3045) уводило браузерный прогон мимо прокси — + # 5 блоков из 5 попыток при полностью здоровом пуле. Проводка проверяется + # отдельно ниже. + mock_bf_cls.assert_called_once() + _bf_kwargs = mock_bf_cls.call_args.kwargs + assert _bf_kwargs["source"] == "avito" + assert _bf_kwargs["endpoint"] == fake_settings.browser_http_endpoint + # #3045: без этих трёх фетчер не кладёт "proxy" в тело POST /fetch, и + # сайдкар уходит на свой env-прокси мимо пула (proxy_lease_id=None). + assert _bf_kwargs.get("proxy_provider") is not None, "пул не подключён" + assert "use_pool" in _bf_kwargs, "флаг пула не доезжает до фетчера" + assert "environment" in _bf_kwargs, "без него отказ «пул пуст» мёртв (#2616)" # fetch_detail вызван с browser_fetcher установленным (не None) assert mock_fetch.call_count == 1 _, kwargs = mock_fetch.call_args