From 5f2c20e46b27f9b01ddcf050c1918116a59e4105 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C4=93teris=20Caune?= Date: Thu, 19 Mar 2020 22:05:13 +0200 Subject: [PATCH] Zulip integration returns more detailed error messages --- hc/api/tests/test_notify.py | 17 +++++++++++++++++ hc/api/transports.py | 11 ++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/hc/api/tests/test_notify.py b/hc/api/tests/test_notify.py index 8fc872c1..c6040eb6 100644 --- a/hc/api/tests/test_notify.py +++ b/hc/api/tests/test_notify.py @@ -826,3 +826,20 @@ class NotifyTestCase(BaseTestCase): args, kwargs = mock_post.call_args payload = kwargs["data"] self.assertIn("DOWN", payload["topic"]) + + @patch("hc.api.transports.requests.request") + def test_zulip_returns_error(self, mock_post): + definition = { + "bot_email": "bot@example.org", + "api_key": "fake-key", + "mtype": "stream", + "to": "general", + } + self._setup_data("zulip", json.dumps(definition)) + mock_post.return_value.status_code = 403 + mock_post.return_value.json.return_value = {"msg": "Nice try"} + + self.channel.notify(self.check) + + n = Notification.objects.first() + self.assertEqual(n.error, 'Received status code 403 with a message: "Nice try"') diff --git a/hc/api/transports.py b/hc/api/transports.py index b1729611..53c1a67b 100644 --- a/hc/api/transports.py +++ b/hc/api/transports.py @@ -558,15 +558,16 @@ class MsTeams(HttpTransport): class Zulip(HttpTransport): @classmethod - def get_error(cls, r): + def get_error(cls, response): try: - doc = r.json() - if "msg" in doc: - return doc["msg"] + m = response.json().get("msg") + if m: + code = response.status_code + return f'Received status code {code} with a message: "{m}"' except ValueError: pass - return super().get_error(r) + return super().get_error(response) def notify(self, check): _, domain = self.channel.zulip_bot_email.split("@")