mirror of
https://github.com/zulip/zulip.git
synced 2025-11-05 06:23:38 +00:00
Because the third party might not be expecting a 400 from our webhooks, we now instead use 200 status code for unknown events, while sending back the error to Sentry. Because it is no longer an error response, the response type should now be "success". Fixes #24721.
58 lines
2.1 KiB
Python
58 lines
2.1 KiB
Python
from zerver.lib.test_classes import WebhookTestCase
|
|
|
|
|
|
class UpdownHookTests(WebhookTestCase):
|
|
STREAM_NAME = "updown"
|
|
URL_TEMPLATE = "/api/v1/external/updown?stream={stream}&api_key={api_key}"
|
|
WEBHOOK_DIR_NAME = "updown"
|
|
|
|
def test_updown_check_down_event(self) -> None:
|
|
expected_topic = "https://updown.io"
|
|
expected_message = "Service is `down`. It returned a 500 error at 2016-02-07 13:11:43 UTC."
|
|
self.check_webhook("check_down_one_event", expected_topic, expected_message)
|
|
|
|
def test_updown_check_up_again_event(self) -> None:
|
|
expected_topic = "https://updown.io"
|
|
expected_message = "Service is `up` again after 4 minutes 25 seconds."
|
|
self.check_webhook("check_up_again_one_event", expected_topic, expected_message)
|
|
|
|
def test_updown_check_up_event(self) -> None:
|
|
expected_topic = "https://updown.io"
|
|
expected_message = "Service is `up`."
|
|
self.check_webhook("check_up_first_time", expected_topic, expected_message)
|
|
|
|
def test_updown_check_up_multiple_events(self) -> None:
|
|
topic_name = "https://updown.io"
|
|
|
|
down_content = "Service is `down`. It returned a 500 error at 2016-02-07 13:11:43 UTC."
|
|
up_content = "Service is `up` again after 1 second."
|
|
|
|
self.subscribe(self.test_user, self.STREAM_NAME)
|
|
payload = self.get_body("check_multiple_events")
|
|
|
|
msg = self.send_webhook_payload(
|
|
self.test_user,
|
|
self.url,
|
|
payload,
|
|
content_type="application/json",
|
|
)
|
|
|
|
msg = self.get_second_to_last_message()
|
|
self.assert_stream_message(
|
|
message=msg,
|
|
stream_name=self.STREAM_NAME,
|
|
topic_name=topic_name,
|
|
content=down_content,
|
|
)
|
|
|
|
msg = self.get_last_message()
|
|
self.assert_stream_message(
|
|
message=msg,
|
|
stream_name=self.STREAM_NAME,
|
|
topic_name=topic_name,
|
|
content=up_content,
|
|
)
|
|
|
|
def test_unknown_event(self) -> None:
|
|
self.check_webhook("unknown_event", expect_noop=True)
|