python-telegram-bot/tests/test_bot.py

236 lines
11 KiB
Python
Raw Normal View History

2015-07-07 22:04:42 +02:00
#!/usr/bin/env python
# encoding: utf-8
2015-08-11 21:58:17 +02:00
#
# A library that provides a Python interface to the Telegram Bot API
# Copyright (C) 2015 Leandro Toledo de Souza <leandrotoeldodesouza@gmail.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see [http://www.gnu.org/licenses/].
2015-08-10 18:57:31 +02:00
2015-07-07 22:04:42 +02:00
import os
2015-08-28 18:02:02 +02:00
import sys
sys.path.append('.')
import json
2015-07-07 22:04:42 +02:00
import telegram
import unittest
from datetime import datetime
2015-07-07 22:04:42 +02:00
class BotTest(unittest.TestCase):
@staticmethod
def is_json(string):
try:
json.loads(string)
2015-08-17 15:01:17 +02:00
except ValueError:
return False
return True
2015-07-07 22:04:42 +02:00
def setUp(self):
2015-08-09 14:59:41 +02:00
bot = telegram.Bot(token=os.environ.get('TOKEN'))
2015-07-07 22:04:42 +02:00
self._bot = bot
print('Testing the Bot API class')
2015-07-07 22:04:42 +02:00
def testGetMe(self):
'''Test the telegram.Bot getMe method'''
print('Testing getMe')
bot = self._bot.getMe()
self.assertTrue(self.is_json(bot.to_json()))
self.assertEqual(120405045, bot.id)
self.assertEqual('Toledo\'s Palace Bot', bot.first_name)
self.assertEqual(None, bot.last_name)
self.assertEqual('ToledosPalaceBot', bot.username)
2015-07-07 22:04:42 +02:00
def testSendMessage(self):
'''Test the telegram.Bot sendMessage method'''
print('Testing sendMessage')
2015-07-07 22:04:42 +02:00
message = self._bot.sendMessage(chat_id=12173560,
text='Моё судно на воздушной подушке полно угрей')
self.assertTrue(self.is_json(message.to_json()))
self.assertEqual(u'Моё судно на воздушной подушке полно угрей', message.text)
self.assertIsInstance(message.date, datetime)
2015-07-07 22:04:42 +02:00
def testGetUpdates(self):
'''Test the telegram.Bot getUpdates method'''
print('Testing getUpdates')
2015-07-07 22:04:42 +02:00
updates = self._bot.getUpdates()
if updates:
self.assertTrue(self.is_json(updates[0].to_json()))
self.assertIsInstance(updates[0], telegram.Update)
2015-07-07 22:04:42 +02:00
def testForwardMessage(self):
'''Test the telegram.Bot forwardMessage method'''
print('Testing forwardMessage')
2015-07-07 22:04:42 +02:00
message = self._bot.forwardMessage(chat_id=12173560,
from_chat_id=12173560,
message_id=138)
self.assertTrue(self.is_json(message.to_json()))
self.assertEqual('Oi', message.text)
self.assertEqual('leandrotoledo', message.forward_from.username)
self.assertIsInstance(message.forward_date, datetime)
2015-07-07 22:04:42 +02:00
2015-07-07 23:46:32 +02:00
def testSendPhoto(self):
'''Test the telegram.Bot sendPhoto method'''
print('Testing sendPhoto - File')
2015-08-28 18:02:02 +02:00
message = self._bot.sendPhoto(photo=open('tests/data/telegram.png', 'rb'),
2015-08-11 22:32:06 +02:00
caption='testSendPhoto',
2015-07-07 23:46:32 +02:00
chat_id=12173560)
self.assertTrue(self.is_json(message.to_json()))
self.assertEqual(1451, message.photo[0].file_size)
2015-08-11 22:32:06 +02:00
self.assertEqual('testSendPhoto', message.caption)
2015-07-08 00:06:17 +02:00
2015-07-08 01:10:43 +02:00
def testResendPhoto(self):
2015-07-08 00:06:17 +02:00
'''Test the telegram.Bot sendPhoto method'''
print('Testing sendPhoto - Resend')
message = self._bot.sendPhoto(photo='AgADAQADr6cxGzU8LQe6q0dMJD2rHYkP2ykABFymiQqJgjxRGGMAAgI',
2015-07-08 00:06:17 +02:00
chat_id=12173560)
self.assertTrue(self.is_json(message.to_json()))
self.assertEqual('AgADAQADr6cxGzU8LQe6q0dMJD2rHYkP2ykABFymiQqJgjxRGGMAAgI', message.photo[0].file_id)
2015-07-08 01:10:43 +02:00
def testSendJPGURLPhoto(self):
'''Test the telegram.Bot sendPhoto method'''
print('Testing testSendJPGURLPhoto - URL')
message = self._bot.sendPhoto(photo='http://dummyimage.com/600x400/000/fff.jpg&text=telegram',
chat_id=12173560)
self.assertTrue(self.is_json(message.to_json()))
self.assertEqual(822, message.photo[0].file_size)
def testSendPNGURLPhoto(self):
'''Test the telegram.Bot sendPhoto method'''
print('Testing testSendPNGURLPhoto - URL')
message = self._bot.sendPhoto(photo='http://dummyimage.com/600x400/000/fff.png&text=telegram',
chat_id=12173560)
self.assertTrue(self.is_json(message.to_json()))
self.assertEqual(684, message.photo[0].file_size)
def testSendGIFURLPhoto(self):
'''Test the telegram.Bot sendPhoto method'''
print('Testing testSendGIFURLPhoto - URL')
message = self._bot.sendPhoto(photo='http://dummyimage.com/600x400/000/fff.gif&text=telegram',
chat_id=12173560)
self.assertTrue(self.is_json(message.to_json()))
self.assertEqual(684, message.photo[0].file_size)
2015-07-08 01:10:43 +02:00
def testSendAudio(self):
'''Test the telegram.Bot sendAudio method'''
print('Testing sendAudio - File')
2015-08-28 18:02:02 +02:00
message = self._bot.sendAudio(audio=open('tests/data/telegram.mp3', 'rb'),
chat_id=12173560,
performer='Leandro Toledo',
title='Teste')
self.assertTrue(self.is_json(message.to_json()))
self.assertEqual(28232, message.audio.file_size)
self.assertEqual('Leandro Toledo', message.audio.performer)
self.assertEqual('Teste', message.audio.title)
2015-07-08 01:10:43 +02:00
def testResendAudio(self):
'''Test the telegram.Bot sendAudio method'''
print('Testing sendAudio - Resend')
message = self._bot.sendAudio(audio='BQADAQADwwcAAjU8LQdBRsl3_qD2TAI',
chat_id=12173560,
performer='Leandro Toledo', # Bug #39
title='Teste') # Bug #39
self.assertTrue(self.is_json(message.to_json()))
self.assertEqual('BQADAQADwwcAAjU8LQdBRsl3_qD2TAI', message.audio.file_id)
def testSendVoice(self):
'''Test the telegram.Bot sendVoice method'''
print('Testing sendVoice - File')
2015-08-28 18:02:02 +02:00
message = self._bot.sendVoice(voice=open('tests/data/telegram.ogg', 'rb'),
chat_id=12173560)
self.assertTrue(self.is_json(message.to_json()))
self.assertEqual(9199, message.voice.file_size)
def testResendVoice(self):
'''Test the telegram.Bot sendVoice method'''
print('Testing sendVoice - Resend')
message = self._bot.sendVoice(voice='AwADAQADIQEAAvjAuQABSAXg_GhkhZcC',
2015-07-08 01:10:43 +02:00
chat_id=12173560)
self.assertTrue(self.is_json(message.to_json()))
self.assertEqual('AwADAQADIQEAAvjAuQABSAXg_GhkhZcC', message.voice.file_id)
2015-07-08 02:12:51 +02:00
def testSendDocument(self):
'''Test the telegram.Bot sendDocument method'''
print('Testing sendDocument - File')
2015-08-28 18:02:02 +02:00
message = self._bot.sendDocument(document=open('tests/data/telegram.png', 'rb'),
2015-07-08 02:12:51 +02:00
chat_id=12173560)
self.assertTrue(self.is_json(message.to_json()))
2015-07-08 02:12:51 +02:00
self.assertEqual(12948, message.document.file_size)
def testSendGIFURLDocument(self):
'''Test the telegram.Bot sendDocument method'''
print('Testing sendDocument - File')
message = self._bot.sendPhoto(photo='http://dummyimage.com/600x400/000/fff.gif&text=telegram',
chat_id=12173560)
self.assertTrue(self.is_json(message.to_json()))
self.assertEqual(684, message.photo[0].file_size)
2015-07-08 02:12:51 +02:00
def testResendDocument(self):
'''Test the telegram.Bot sendDocument method'''
print('Testing sendDocument - Resend')
message = self._bot.sendDocument(document='BQADAQADHAADNTwtBxZxUGKyxYbYAg',
2015-07-08 02:12:51 +02:00
chat_id=12173560)
self.assertTrue(self.is_json(message.to_json()))
self.assertEqual('BQADAQADHAADNTwtBxZxUGKyxYbYAg', message.document.file_id)
2015-07-08 04:52:12 +02:00
def testSendVideo(self):
'''Test the telegram.Bot sendVideo method'''
print('Testing sendVideo - File')
2015-08-28 18:02:02 +02:00
message = self._bot.sendVideo(video=open('tests/data/telegram.mp4', 'rb'),
2015-08-11 22:32:06 +02:00
caption='testSendVideo',
chat_id=12173560)
self.assertTrue(self.is_json(message.to_json()))
self.assertEqual(326534, message.video.file_size)
2015-08-11 22:32:06 +02:00
self.assertEqual('testSendVideo', message.caption)
2015-07-08 14:17:18 +02:00
def testResendVideo(self):
'''Test the telegram.Bot sendVideo method'''
print('Testing sendVideo - Resend')
message = self._bot.sendVideo(video='BAADAQADIgEAAvjAuQABOuTB937fPTgC',
chat_id=12173560)
self.assertTrue(self.is_json(message.to_json()))
2015-07-08 14:17:18 +02:00
self.assertEqual(4, message.video.duration)
def testResendSticker(self):
'''Test the telegram.Bot sendSticker method'''
print('Testing sendSticker - Resend')
message = self._bot.sendSticker(sticker='BQADAQADHAADyIsGAAFZfq1bphjqlgI',
chat_id=12173560)
self.assertTrue(self.is_json(message.to_json()))
self.assertEqual(39518, message.sticker.file_size)
def testSendLocation(self):
'''Test the telegram.Bot sendLocation method'''
print('Testing sendLocation')
message = self._bot.sendLocation(latitude=-23.558873,
longitude=-46.659732,
chat_id=12173560)
self.assertTrue(self.is_json(message.to_json()))
self.assertEqual(-23.558873, message.location.latitude)
self.assertEqual(-46.659732, message.location.longitude)
def testSendChatAction(self):
'''Test the telegram.Bot sendChatAction method'''
print('Testing sendChatAction - ChatAction.TYPING')
2015-07-08 22:58:50 +02:00
self._bot.sendChatAction(action=telegram.ChatAction.TYPING,
chat_id=12173560)
2015-07-08 15:10:08 +02:00
def testGetUserProfilePhotos(self):
'''Test the telegram.Bot getUserProfilePhotos method'''
print('Testing getUserProfilePhotos')
2015-07-08 15:10:08 +02:00
upf = self._bot.getUserProfilePhotos(user_id=12173560)
self.assertTrue(self.is_json(upf.to_json()))
2015-08-11 22:32:06 +02:00
self.assertEqual(6547, upf.photos[0][0].file_size)
2015-08-28 18:02:02 +02:00
unittest.main()