X Tutup
Skip to content

Commit 7734c1d

Browse files
committed
fix unitests to work with new token validator
1 parent aeca3ca commit 7734c1d

File tree

3 files changed

+67
-47
lines changed

3 files changed

+67
-47
lines changed

telegram/updater.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,15 +64,26 @@ class Updater:
6464
Attributes:
6565
6666
Args:
67-
token (str): The bots token given by the @BotFather
67+
token (Optional[str]): The bot's token given by the @BotFather
6868
base_url (Optional[str]):
6969
workers (Optional[int]): Amount of threads in the thread pool for
7070
functions decorated with @run_async
71+
bot (Optional[Bot]):
72+
73+
Raises:
74+
ValueError: If both `token` and `bot` are passed or none of them.
7175
"""
7276

73-
def __init__(self, token, base_url=None, workers=4):
77+
def __init__(self, token=None, base_url=None, workers=4, bot=None):
78+
if (token is None) and (bot is None):
79+
raise ValueError('`token` or `bot` must be passed')
80+
if (token is not None) and (bot is not None):
81+
raise ValueError('`token` and `bot` are mutually exclusive')
7482

75-
self.bot = Bot(token, base_url)
83+
if bot is not None:
84+
self.bot = bot
85+
else:
86+
self.bot = Bot(token, base_url)
7687
self.update_queue = Queue()
7788
self.dispatcher = Dispatcher(self.bot, self.update_queue,
7889
workers=workers)

tests/test_bot.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,5 +137,19 @@ def testGetUserProfilePhotos(self):
137137
self.assertTrue(self.is_json(upf.to_json()))
138138
self.assertEqual(upf.photos[0][0].file_size, 12421)
139139

140+
def _test_invalid_token(self, token):
141+
print('Testing invalid token: {0}'.format(token))
142+
self.assertRaisesRegexp(telegram.TelegramError, 'Invalid token', telegram.Bot, token)
143+
144+
def testInvalidToken1(self):
145+
self._test_invalid_token('123')
146+
147+
def testInvalidToken2(self):
148+
self._test_invalid_token('12a:')
149+
150+
def testInvalidToken3(self):
151+
self._test_invalid_token('12:')
152+
153+
140154
if __name__ == '__main__':
141155
unittest.main()

tests/test_updater.py

Lines changed: 39 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939
sys.path.append('.')
4040

41-
from telegram import Update, Message, TelegramError, User, Chat, Updater
41+
from telegram import Update, Message, TelegramError, User, Chat, Updater, Bot
4242
from telegram.dispatcher import run_async
4343
from tests.base import BaseTest
4444
from threading import Lock, Thread
@@ -61,14 +61,18 @@ class UpdaterTest(BaseTest, unittest.TestCase):
6161
"""
6262

6363
def setUp(self):
64-
self.updater = Updater('', workers=2)
65-
64+
self.updater = None
6665
self.received_message = None
6766
self.message_count = 0
6867
self.lock = Lock()
6968

69+
def _setup_updater(self, *args, **kwargs):
70+
bot = MockBot(*args, **kwargs)
71+
self.updater = Updater(workers=2, bot=bot)
72+
7073
def tearDown(self):
71-
self.updater.stop()
74+
if self.updater is not None:
75+
self.updater.stop()
7276

7377
def reset(self):
7478
self.message_count = 0
@@ -119,8 +123,7 @@ def errorHandlerTest(self, bot, update, error):
119123

120124
def test_addRemoveTelegramMessageHandler(self):
121125
print('Testing add/removeTelegramMessageHandler')
122-
bot = MockBot('Test')
123-
self.updater.bot = bot
126+
self._setup_updater('Test')
124127
d = self.updater.dispatcher
125128
d.addTelegramMessageHandler(
126129
self.telegramHandlerTest)
@@ -132,13 +135,13 @@ def test_addRemoveTelegramMessageHandler(self):
132135
d.removeTelegramMessageHandler(self.telegramHandlerTest)
133136
self.reset()
134137

135-
bot.send_messages = 1
138+
self.updater.bot.send_messages = 1
136139
sleep(.1)
137140
self.assertTrue(None is self.received_message)
138141

139142
def test_addTelegramMessageHandlerMultipleMessages(self):
140143
print('Testing addTelegramMessageHandler and send 100 messages...')
141-
self.updater.bot = MockBot('Multiple', 100)
144+
self._setup_updater('Multiple', 100)
142145
self.updater.dispatcher.addTelegramMessageHandler(
143146
self.telegramHandlerTest)
144147
self.updater.start_polling(0.0)
@@ -148,8 +151,7 @@ def test_addTelegramMessageHandlerMultipleMessages(self):
148151

149152
def test_addRemoveTelegramRegexHandler(self):
150153
print('Testing add/removeStringRegexHandler')
151-
bot = MockBot('Test2')
152-
self.updater.bot = bot
154+
self._setup_updater('Test2')
153155
d = self.updater.dispatcher
154156
regobj = re.compile('Te.*')
155157
self.updater.dispatcher.addTelegramRegexHandler(regobj,
@@ -162,14 +164,13 @@ def test_addRemoveTelegramRegexHandler(self):
162164
d.removeTelegramRegexHandler(regobj, self.telegramHandlerTest)
163165
self.reset()
164166

165-
bot.send_messages = 1
167+
self.updater.bot.send_messages = 1
166168
sleep(.1)
167169
self.assertTrue(None is self.received_message)
168170

169171
def test_addRemoveTelegramCommandHandler(self):
170172
print('Testing add/removeTelegramCommandHandler')
171-
bot = MockBot('/test')
172-
self.updater.bot = bot
173+
self._setup_updater('/test')
173174
d = self.updater.dispatcher
174175
self.updater.dispatcher.addTelegramCommandHandler(
175176
'test', self.telegramHandlerTest)
@@ -181,14 +182,13 @@ def test_addRemoveTelegramCommandHandler(self):
181182
d.removeTelegramCommandHandler('test', self.telegramHandlerTest)
182183
self.reset()
183184

184-
bot.send_messages = 1
185+
self.updater.bot.send_messages = 1
185186
sleep(.1)
186187
self.assertTrue(None is self.received_message)
187188

188189
def test_addRemoveUnknownTelegramCommandHandler(self):
189190
print('Testing add/removeUnknownTelegramCommandHandler')
190-
bot = MockBot('/test2')
191-
self.updater.bot = bot
191+
self._setup_updater('/test2')
192192
d = self.updater.dispatcher
193193
self.updater.dispatcher.addUnknownTelegramCommandHandler(
194194
self.telegramHandlerTest)
@@ -200,14 +200,13 @@ def test_addRemoveUnknownTelegramCommandHandler(self):
200200
d.removeUnknownTelegramCommandHandler(self.telegramHandlerTest)
201201
self.reset()
202202

203-
bot.send_messages = 1
203+
self.updater.bot.send_messages = 1
204204
sleep(.1)
205205
self.assertTrue(None is self.received_message)
206206

207207
def test_addRemoveStringRegexHandler(self):
208208
print('Testing add/removeStringRegexHandler')
209-
bot = MockBot('', messages=0)
210-
self.updater.bot = bot
209+
self._setup_updater('', messages=0)
211210
d = self.updater.dispatcher
212211
d.addStringRegexHandler('Te.*', self.stringHandlerTest)
213212
queue = self.updater.start_polling(0.01)
@@ -225,8 +224,7 @@ def test_addRemoveStringRegexHandler(self):
225224

226225
def test_addRemoveStringCommandHandler(self):
227226
print('Testing add/removeStringCommandHandler')
228-
bot = MockBot('', messages=0)
229-
self.updater.bot = bot
227+
self._setup_updater('', messages=0)
230228
d = self.updater.dispatcher
231229
d.addStringCommandHandler(
232230
'test3', self.stringHandlerTest)
@@ -246,8 +244,7 @@ def test_addRemoveStringCommandHandler(self):
246244

247245
def test_addRemoveUnknownStringCommandHandler(self):
248246
print('Testing add/removeUnknownStringCommandHandler')
249-
bot = MockBot('/test')
250-
self.updater.bot = bot
247+
self._setup_updater('/test')
251248
d = self.updater.dispatcher
252249
d.addUnknownStringCommandHandler(
253250
self.stringHandlerTest)
@@ -260,14 +257,13 @@ def test_addRemoveUnknownStringCommandHandler(self):
260257
d.removeUnknownStringCommandHandler(self.stringHandlerTest)
261258
self.reset()
262259

263-
bot.send_messages = 1
260+
self.updater.bot.send_messages = 1
264261
sleep(.1)
265262
self.assertTrue(None is self.received_message)
266263

267264
def test_addRemoveErrorHandler(self):
268265
print('Testing add/removeErrorHandler')
269-
bot = MockBot('', messages=0)
270-
self.updater.bot = bot
266+
self._setup_updater('', messages=0)
271267
d = self.updater.dispatcher
272268
d.addErrorHandler(self.errorHandlerTest)
273269
queue = self.updater.start_polling(0.01)
@@ -286,8 +282,7 @@ def test_addRemoveErrorHandler(self):
286282

287283
def test_errorInHandler(self):
288284
print('Testing error in Handler')
289-
bot = MockBot('', messages=0)
290-
self.updater.bot = bot
285+
self._setup_updater('', messages=0)
291286
d = self.updater.dispatcher
292287
d.addStringRegexHandler('.*',
293288
self.errorRaisingHandlerTest)
@@ -300,8 +295,7 @@ def test_errorInHandler(self):
300295

301296
def test_errorOnGetUpdates(self):
302297
print('Testing error on getUpdates')
303-
bot = MockBot('', raise_error=True)
304-
self.updater.bot = bot
298+
self._setup_updater('', raise_error=True)
305299
d = self.updater.dispatcher
306300
d.addErrorHandler(self.errorHandlerTest)
307301
self.updater.start_polling(0.01)
@@ -310,8 +304,7 @@ def test_errorOnGetUpdates(self):
310304

311305
def test_addRemoveTypeHandler(self):
312306
print('Testing add/removeTypeHandler')
313-
bot = MockBot('', messages=0)
314-
self.updater.bot = bot
307+
self._setup_updater('', messages=0)
315308
d = self.updater.dispatcher
316309
d.addTypeHandler(dict, self.stringHandlerTest)
317310
queue = self.updater.start_polling(0.01)
@@ -330,8 +323,7 @@ def test_addRemoveTypeHandler(self):
330323

331324
def test_runAsync(self):
332325
print('Testing @run_async')
333-
bot = MockBot('Test5', messages=2)
334-
self.updater.bot = bot
326+
self._setup_updater('Test5', messages=2)
335327
d = self.updater.dispatcher
336328
d.addTelegramMessageHandler(
337329
self.asyncHandlerTest)
@@ -342,7 +334,7 @@ def test_runAsync(self):
342334

343335
def test_additionalArgs(self):
344336
print('Testing additional arguments for handlers')
345-
self.updater.bot = MockBot('', messages=0)
337+
self._setup_updater('', messages=0)
346338
self.updater.dispatcher.addStringCommandHandler(
347339
'test5', self.additionalArgsTest)
348340

@@ -354,8 +346,7 @@ def test_additionalArgs(self):
354346

355347
def test_regexGroupHandler(self):
356348
print('Testing optional groups and groupdict parameters')
357-
bot = MockBot('', messages=0)
358-
self.updater.bot = bot
349+
self._setup_updater('', messages=0)
359350
d = self.updater.dispatcher
360351
d.addStringRegexHandler('^(This).*?(?P<testgroup>regex group).*',
361352
self.regexGroupHandlerTest)
@@ -368,8 +359,7 @@ def test_regexGroupHandler(self):
368359

369360
def test_runAsyncWithAdditionalArgs(self):
370361
print('Testing @run_async with additional parameters')
371-
bot = MockBot('Test6', messages=2)
372-
self.updater.bot = bot
362+
self._setup_updater('Test6', messages=2)
373363
d = self.updater.dispatcher
374364
d.addTelegramMessageHandler(
375365
self.asyncAdditionalHandlerTest)
@@ -380,8 +370,7 @@ def test_runAsyncWithAdditionalArgs(self):
380370

381371
def test_webhook(self):
382372
print('Testing Webhook')
383-
bot = MockBot('', messages=0)
384-
self.updater.bot = bot
373+
self._setup_updater('', messages=0)
385374
d = self.updater.dispatcher
386375
d.addTelegramMessageHandler(
387376
self.telegramHandlerTest)
@@ -442,8 +431,7 @@ def test_webhook(self):
442431

443432
def test_webhook_no_ssl(self):
444433
print('Testing Webhook without SSL')
445-
bot = MockBot('', messages=0)
446-
self.updater.bot = bot
434+
self._setup_updater('', messages=0)
447435
d = self.updater.dispatcher
448436
d.addTelegramMessageHandler(
449437
self.telegramHandlerTest)
@@ -485,7 +473,7 @@ def signalsender(self):
485473

486474
def test_idle(self):
487475
print('Testing idle')
488-
self.updater.bot = MockBot('Test6', messages=0)
476+
self._setup_updater('Test6', messages=0)
489477
self.updater.start_polling(poll_interval=0.01)
490478
Thread(target=self.signalsender).start()
491479
self.updater.idle()
@@ -494,6 +482,13 @@ def test_idle(self):
494482
self.updater.running = False
495483

496484

485+
def test_mutualExclusiveTokenBot(self):
486+
bot = Bot('123:zyxw')
487+
self.assertRaises(ValueError, Updater, token='123:abcd', bot=bot)
488+
489+
def test_noTokenOrBot(self):
490+
self.assertRaises(ValueError, Updater)
491+
497492
class MockBot:
498493

499494
def __init__(self, text, messages=1, raise_error=False):

0 commit comments

Comments
 (0)
X Tutup