61 lines
1.9 KiB
Python
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)
|