Files
IPSExtractor/bots/bot_descarga/tests/test_browser_fatal.py
T

61 lines
1.9 KiB
Python

from __future__ import annotations
from bot_descarga.config.settings import Settings
from bot_descarga.core.download_service import DownloadService
from bot_descarga.models.resultado import RunSummary
def test_friendly_dns_error_message():
svc = DownloadService(ruta_excel="x.xlsx", carpeta_descarga=".", event_callback=lambda e: None)
msg = svc._friendly_browser_error(
Exception("unknown error: net::ERR_NAME_NOT_RESOLVED\n (Session info: chrome=1)")
)
assert "ERR_NAME_NOT_RESOLVED" in msg
assert "Imaging" in msg
assert svc.settings.url_sistema in msg
def test_browser_start_failure_sets_fatal_error(monkeypatch):
events = []
def fake_read(_self, _path):
from bot_descarga.models.radicado import RadicadoRecord
return [RadicadoRecord("1", "NIT1")]
class BoomBrowser:
def start(self, *a, **k):
raise Exception("unknown error: net::ERR_NAME_NOT_RESOLVED")
def close(self):
pass
monkeypatch.setattr(
"bot_descarga.core.download_service.ExcelReader.read",
fake_read,
)
monkeypatch.setattr(
"bot_descarga.core.download_service.BrowserManager",
lambda settings=None: BoomBrowser(),
)
monkeypatch.setattr(
"bot_descarga.core.download_service.JsonlLogger",
lambda *a, **k: type(
"L",
(),
{"path": "x", "write": lambda *x: None, "close": lambda *x: None},
)(),
)
svc = DownloadService(
ruta_excel="dummy.xlsx",
carpeta_descarga=".",
settings=Settings(url_sistema="https://serviciosimaging.saludtotal.loc/"),
event_callback=lambda e: events.append(e),
)
summary = svc.run()
assert isinstance(summary, RunSummary)
assert summary.fatal_error
assert "ERR_NAME_NOT_RESOLVED" in summary.fatal_error
assert any("FALLIDO" in e.message or "ERR_NAME_NOT_RESOLVED" in e.message for e in events)