mirror of
https://github.com/python-telegram-bot/python-telegram-bot.git
synced 2024-12-22 22:45:09 +01:00
Improve Error Handling in Built-In Webhook Handler (#3987)
This commit is contained in:
parent
592c6cc6d3
commit
67b0706116
2 changed files with 14 additions and 5 deletions
|
@ -146,6 +146,9 @@ class TelegramHandler(tornado.web.RequestHandler):
|
||||||
"Received data was *not* processed!",
|
"Received data was *not* processed!",
|
||||||
exc_info=exc,
|
exc_info=exc,
|
||||||
)
|
)
|
||||||
|
raise tornado.web.HTTPError(
|
||||||
|
HTTPStatus.BAD_REQUEST, reason="Update could not be processed"
|
||||||
|
) from exc
|
||||||
|
|
||||||
if update:
|
if update:
|
||||||
_LOGGER.debug(
|
_LOGGER.debug(
|
||||||
|
|
|
@ -63,6 +63,7 @@ class TestUpdater:
|
||||||
cb_handler_called = None
|
cb_handler_called = None
|
||||||
offset = 0
|
offset = 0
|
||||||
test_flag = False
|
test_flag = False
|
||||||
|
response_text = "<html><title>{1}: {0}</title><body>{1}: {0}</body></html>"
|
||||||
|
|
||||||
@pytest.fixture(autouse=True)
|
@pytest.fixture(autouse=True)
|
||||||
def _reset(self):
|
def _reset(self):
|
||||||
|
@ -732,11 +733,10 @@ class TestUpdater:
|
||||||
|
|
||||||
if secret_token:
|
if secret_token:
|
||||||
# Returns Forbidden if no secret token is set
|
# Returns Forbidden if no secret token is set
|
||||||
response_text = "<html><title>403: {0}</title><body>403: {0}</body></html>"
|
|
||||||
response = await send_webhook_message(ip, port, update.to_json(), "TOKEN")
|
response = await send_webhook_message(ip, port, update.to_json(), "TOKEN")
|
||||||
assert response.status_code == HTTPStatus.FORBIDDEN
|
assert response.status_code == HTTPStatus.FORBIDDEN
|
||||||
assert response.text == response_text.format(
|
assert response.text == self.response_text.format(
|
||||||
"Request did not include the secret token"
|
"Request did not include the secret token", HTTPStatus.FORBIDDEN
|
||||||
)
|
)
|
||||||
|
|
||||||
# Returns Forbidden if the secret token is wrong
|
# Returns Forbidden if the secret token is wrong
|
||||||
|
@ -744,7 +744,9 @@ class TestUpdater:
|
||||||
ip, port, update.to_json(), "TOKEN", secret_token="NotTheSecretToken"
|
ip, port, update.to_json(), "TOKEN", secret_token="NotTheSecretToken"
|
||||||
)
|
)
|
||||||
assert response.status_code == HTTPStatus.FORBIDDEN
|
assert response.status_code == HTTPStatus.FORBIDDEN
|
||||||
assert response.text == response_text.format("Request had the wrong secret token")
|
assert response.text == self.response_text.format(
|
||||||
|
"Request had the wrong secret token", HTTPStatus.FORBIDDEN
|
||||||
|
)
|
||||||
|
|
||||||
await updater.stop()
|
await updater.stop()
|
||||||
assert not updater.running
|
assert not updater.running
|
||||||
|
@ -1071,11 +1073,15 @@ class TestUpdater:
|
||||||
# Now, we send an update to the server
|
# Now, we send an update to the server
|
||||||
update = make_message_update("Webhook")
|
update = make_message_update("Webhook")
|
||||||
with caplog.at_level(logging.CRITICAL):
|
with caplog.at_level(logging.CRITICAL):
|
||||||
await send_webhook_message(ip, port, update.to_json(), "TOKEN")
|
response = await send_webhook_message(ip, port, update.to_json(), "TOKEN")
|
||||||
|
|
||||||
assert len(caplog.records) == 1
|
assert len(caplog.records) == 1
|
||||||
assert caplog.records[-1].getMessage().startswith("Something went wrong processing")
|
assert caplog.records[-1].getMessage().startswith("Something went wrong processing")
|
||||||
assert caplog.records[-1].name == "telegram.ext.Updater"
|
assert caplog.records[-1].name == "telegram.ext.Updater"
|
||||||
|
assert response.status_code == 400
|
||||||
|
assert response.text == self.response_text.format(
|
||||||
|
"Update could not be processed", HTTPStatus.BAD_REQUEST
|
||||||
|
)
|
||||||
|
|
||||||
# Make sure that everything works fine again when receiving proper updates
|
# Make sure that everything works fine again when receiving proper updates
|
||||||
caplog.clear()
|
caplog.clear()
|
||||||
|
|
Loading…
Reference in a new issue