@@ -111,6 +111,63 @@ def _message(
111111 )
112112
113113
114+ class _FakeTelegramUpdater :
115+ def __init__ (self ) -> None :
116+ self .kwargs : dict [str , object ] | None = None
117+
118+ async def start_polling (self , ** kwargs ) -> None :
119+ self .kwargs = kwargs
120+
121+
122+ class _FakeTelegramApp :
123+ def __init__ (self ) -> None :
124+ self .updater = _FakeTelegramUpdater ()
125+ self .handlers : list [object ] = []
126+
127+ def add_handler (self , handler : object ) -> None :
128+ self .handlers .append (handler )
129+
130+ async def initialize (self ) -> None :
131+ return
132+
133+ async def start (self ) -> None :
134+ return
135+
136+
137+ class _FakeTelegramBuilder :
138+ def __init__ (self ) -> None :
139+ self .app = _FakeTelegramApp ()
140+ self .request : object | None = None
141+ self .proxy_value : str | None = None
142+ self .token_value : str | None = None
143+
144+ def token (self , token : str ) -> _FakeTelegramBuilder :
145+ self .token_value = token
146+ return self
147+
148+ def get_updates_request (self , request : object ) -> _FakeTelegramBuilder :
149+ self .request = request
150+ return self
151+
152+ def proxy (self , proxy : str ) -> _FakeTelegramBuilder :
153+ self .proxy_value = proxy
154+ return self
155+
156+ def get_updates_proxy (self , _proxy : str ) -> _FakeTelegramBuilder :
157+ raise AssertionError ("get_updates_proxy should not be called when get_updates_request is already set" )
158+
159+ def build (self ) -> _FakeTelegramApp :
160+ return self .app
161+
162+
163+ def _telegram_proxy_config () -> str :
164+ return """
165+ telegram:
166+ token: "test-token"
167+ proxy: "http://127.0.0.1:1087"
168+ """ .strip ()
169+
170+
114171@pytest .mark .asyncio
115172async def test_buffered_handler_passes_commands_through_immediately () -> None :
116173 handled : list [str ] = []
@@ -476,6 +533,22 @@ async def send_message(chat_id: str, text: str) -> None:
476533 assert sent == [("42" , "hello" )]
477534
478535
536+ @pytest .mark .asyncio
537+ async def test_telegram_channel_start_with_proxy_does_not_call_get_updates_proxy (
538+ monkeypatch : pytest .MonkeyPatch , load_config
539+ ) -> None :
540+ load_config (_telegram_proxy_config ())
541+ fake_builder = _FakeTelegramBuilder ()
542+ monkeypatch .setattr ("bub.channels.telegram.Application.builder" , lambda : fake_builder )
543+
544+ channel = TelegramChannel (lambda message : None )
545+ await channel .start (asyncio .Event ())
546+
547+ assert fake_builder .proxy_value == "http://127.0.0.1:1087"
548+ assert fake_builder .request is not None
549+ assert fake_builder .app .updater .kwargs == {"drop_pending_updates" : True , "allowed_updates" : ["message" ]}
550+
551+
479552@pytest .mark .asyncio
480553async def test_telegram_channel_build_message_returns_command_directly (load_config ) -> None :
481554 _load_channel_config (load_config , telegram_value = "test-token" )
0 commit comments