From 1e398821a013d89e9b1bd1afec41dae7c7dc9d96 Mon Sep 17 00:00:00 2001 From: Leandro Toledo Date: Wed, 25 May 2016 21:15:17 -0300 Subject: [PATCH] Introducing telegram.error.BadRequest and testLeaveChat testcase #302 --- telegram/error.py | 5 +++++ telegram/utils/request.py | 14 ++++++++------ tests/test_bot.py | 6 ++++++ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/telegram/error.py b/telegram/error.py index 0f9005b40..2bedbc681 100644 --- a/telegram/error.py +++ b/telegram/error.py @@ -51,6 +51,7 @@ class TelegramError(Exception): msg = _lstrip_str(message, 'Error: ') msg = _lstrip_str(msg, '[Error]: ') + msg = _lstrip_str(msg, 'Bad Request: ') if msg != message: # api_error - capitalize the msg... msg = msg.capitalize() @@ -72,6 +73,10 @@ class InvalidToken(TelegramError): super(InvalidToken, self).__init__('Invalid token') +class BadRequest(TelegramError): + pass + + class NetworkError(TelegramError): pass diff --git a/telegram/utils/request.py b/telegram/utils/request.py index b326d6ccf..52fe434d7 100644 --- a/telegram/utils/request.py +++ b/telegram/utils/request.py @@ -28,7 +28,7 @@ from future.moves.urllib.error import HTTPError, URLError from future.moves.urllib.request import urlopen, urlretrieve, Request from telegram import (InputFile, TelegramError) -from telegram.error import Unauthorized, NetworkError, TimedOut +from telegram.error import Unauthorized, NetworkError, TimedOut, BadRequest def _parse(json_data): @@ -67,13 +67,15 @@ def _try_except_req(func): # come first. errcode = error.getcode() - if errcode in (401, 403): - raise Unauthorized() - elif errcode == 502: - raise NetworkError('Bad Gateway') - try: message = _parse(error.read()) + + if errcode in (401, 403): + raise Unauthorized() + elif errcode == 400: + raise BadRequest(message) + elif errcode == 502: + raise NetworkError('Bad Gateway') except ValueError: message = 'Unknown HTTPError {0}'.format(error.getcode()) diff --git a/tests/test_bot.py b/tests/test_bot.py index 4702aba44..62dd9eb34 100644 --- a/tests/test_bot.py +++ b/tests/test_bot.py @@ -201,6 +201,12 @@ class BotTest(BaseTest, unittest.TestCase): bot.getMe() + @flaky(3, 1) + @timeout(10) + def testLeaveChat(self): + with self.assertRaisesRegexp(telegram.error.BadRequest, 'Chat not found'): + chat = self._bot.leaveChat(-123456) + @flaky(3, 1) @timeout(10) def testGetChat(self):