From f8c580d015c380c4266d2c58a19a7835e0b1e708 Mon Sep 17 00:00:00 2001 From: Xubin Ren Date: Fri, 27 Mar 2026 14:12:40 +0000 Subject: [PATCH] test(telegram): cover network error logging --- tests/channels/test_telegram_channel.py | 46 +++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/tests/channels/test_telegram_channel.py b/tests/channels/test_telegram_channel.py index d5dafdee7..972f8ab6e 100644 --- a/tests/channels/test_telegram_channel.py +++ b/tests/channels/test_telegram_channel.py @@ -280,6 +280,52 @@ async def test_send_text_gives_up_after_max_retries() -> None: assert channel._app.bot.sent_messages == [] +@pytest.mark.asyncio +async def test_on_error_logs_network_issues_as_warning(monkeypatch) -> None: + from telegram.error import NetworkError + + channel = TelegramChannel( + TelegramConfig(enabled=True, token="123:abc", allow_from=["*"]), + MessageBus(), + ) + recorded: list[tuple[str, str]] = [] + + monkeypatch.setattr( + "nanobot.channels.telegram.logger.warning", + lambda message, error: recorded.append(("warning", message.format(error))), + ) + monkeypatch.setattr( + "nanobot.channels.telegram.logger.error", + lambda message, error: recorded.append(("error", message.format(error))), + ) + + await channel._on_error(object(), SimpleNamespace(error=NetworkError("proxy disconnected"))) + + assert recorded == [("warning", "Telegram network issue: proxy disconnected")] + + +@pytest.mark.asyncio +async def test_on_error_keeps_non_network_exceptions_as_error(monkeypatch) -> None: + channel = TelegramChannel( + TelegramConfig(enabled=True, token="123:abc", allow_from=["*"]), + MessageBus(), + ) + recorded: list[tuple[str, str]] = [] + + monkeypatch.setattr( + "nanobot.channels.telegram.logger.warning", + lambda message, error: recorded.append(("warning", message.format(error))), + ) + monkeypatch.setattr( + "nanobot.channels.telegram.logger.error", + lambda message, error: recorded.append(("error", message.format(error))), + ) + + await channel._on_error(object(), SimpleNamespace(error=RuntimeError("boom"))) + + assert recorded == [("error", "Telegram error: boom")] + + @pytest.mark.asyncio async def test_send_delta_stream_end_raises_and_keeps_buffer_on_failure() -> None: channel = TelegramChannel(