1818# along with this program. If not, see [http://www.gnu.org/licenses/].
1919
2020""" This module contains a object that represents Tests for BotEventHandler """
21-
21+ import logging
2222import unittest
2323import sys
2424from time import sleep
3232from tests .base import BaseTest
3333from threading import Lock
3434
35+ # Enable logging
36+ root = logging .getLogger ()
37+ root .setLevel (logging .INFO )
38+
39+ ch = logging .StreamHandler (sys .stdout )
40+ ch .setLevel (logging .WARN )
41+ formatter = logging .Formatter ('%(asctime)s - %(name)s - %(levelname)s - %(message)s' )
42+ ch .setFormatter (formatter )
43+ root .addHandler (ch )
44+
3545
3646class BotEventHandlerTest (BaseTest , unittest .TestCase ):
3747 """This object represents Tests for Telegram Bot."""
@@ -153,6 +163,14 @@ def test_addErrorHandler(self):
153163 sleep (.1 )
154164 self .assertEqual (self .received_message , error )
155165
166+ def test_errorOnGetUpdates (self ):
167+ print ('Testing errorOnGetUpdates' )
168+ self .beh .bot = MockBot ('' , raise_error = True )
169+ self .beh .broadcaster .addErrorHandler (self .errorHandlerTest )
170+ self .beh .start_polling (0.05 )
171+ sleep (.1 )
172+ self .assertEqual (self .received_message .message , "Test Error" )
173+
156174 def test_addTypeHandler (self ):
157175 print ('Testing addTypeHandler' )
158176 self .beh .bot = MockBot ('' )
@@ -173,12 +191,31 @@ def test_runAsync(self):
173191 self .assertEqual (self .received_message , 'Test4' )
174192 self .assertEqual (self .message_count , 2 )
175193
194+ def test_webhook (self ):
195+ """ Work in progress """
196+ print ('Testing @run_async' )
197+ self .beh .bot = MockBot ('Test4' , messages = 2 )
198+ self .beh .broadcaster .addTelegramMessageHandler (
199+ self .telegramHandlerTest )
200+ self .beh .start_webhook ('127.0.0.1' , 8000 ,
201+ './tests/test_boteventhandler.py' ,
202+ './tests/test_boteventhandler.py' ,
203+ listen = '127.0.0.1' )
204+ sleep (1 )
205+ # Error is logged - run self.beh.httpd.serve_forever() in a separate
206+ # Thread here, then send a json-encrypted update via request.post()?
207+
208+ # self.assertEqual(self.received_message, 'Test4')
209+ self .assertEqual (self .message_count , 0 )
210+
176211
177212class MockBot :
178213
179- def __init__ (self , text , messages = 1 ):
214+ def __init__ (self , text , messages = 1 , raise_error = False ):
180215 self .text = text
181216 self .send_messages = messages
217+ self .raise_error = raise_error
218+ self .token = "TOKEN"
182219 pass
183220
184221 def mockUpdate (self , text ):
@@ -197,7 +234,9 @@ def getUpdates(self,
197234 timeout = 0 ,
198235 network_delay = 2. ):
199236
200- if self .send_messages >= 2 :
237+ if self .raise_error :
238+ raise TelegramError ('Test Error' )
239+ elif self .send_messages >= 2 :
201240 self .send_messages -= 2
202241 return self .mockUpdate (self .text ), self .mockUpdate (self .text )
203242 elif self .send_messages == 1 :
0 commit comments