test_debug_command.py
1 """Tests for the gateway /debug command.""" 2 3 from unittest.mock import patch 4 5 import pytest 6 7 from gateway.config import GatewayConfig, Platform 8 from gateway.platforms.base import MessageEvent 9 from gateway.session import SessionSource 10 11 12 def _make_event(text="/debug", platform=Platform.TELEGRAM, 13 user_id="12345", chat_id="67890"): 14 source = SessionSource( 15 platform=platform, 16 user_id=user_id, 17 chat_id=chat_id, 18 user_name="testuser", 19 ) 20 return MessageEvent(text=text, source=source) 21 22 23 def _make_runner(): 24 from gateway.run import GatewayRunner 25 26 runner = object.__new__(GatewayRunner) 27 runner.config = GatewayConfig() 28 runner.adapters = {} 29 return runner 30 31 32 class TestHandleDebugCommand: 33 @pytest.mark.asyncio 34 async def test_debug_sweeps_expired_pastes_before_upload(self): 35 runner = _make_runner() 36 event = _make_event() 37 38 with patch("hermes_cli.debug._sweep_expired_pastes", return_value=(0, 0)) as mock_sweep, \ 39 patch("hermes_cli.debug._capture_dump", return_value="dump"), \ 40 patch("hermes_cli.debug.collect_debug_report", return_value="report"), \ 41 patch("hermes_cli.debug.upload_to_pastebin", return_value="https://paste.rs/report"), \ 42 patch("hermes_cli.debug._schedule_auto_delete"): 43 result = await runner._handle_debug_command(event) 44 45 mock_sweep.assert_called_once() 46 assert "https://paste.rs/report" in result 47 48 @pytest.mark.asyncio 49 async def test_debug_survives_sweep_failure(self): 50 runner = _make_runner() 51 event = _make_event() 52 53 with patch("hermes_cli.debug._sweep_expired_pastes", side_effect=RuntimeError("offline")), \ 54 patch("hermes_cli.debug._capture_dump", return_value="dump"), \ 55 patch("hermes_cli.debug.collect_debug_report", return_value="report"), \ 56 patch("hermes_cli.debug.upload_to_pastebin", return_value="https://paste.rs/report"), \ 57 patch("hermes_cli.debug._schedule_auto_delete"): 58 result = await runner._handle_debug_command(event) 59 60 assert "https://paste.rs/report" in result