mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 14:03:30 +00:00
This commit adds a generic function called check_send_webhook_message that does the following: * If a stream is specified in the webhook URL, it sends a stream message, otherwise sends a PM to the owner of the bot. * In the case of a stream message, if a custom topic is specified in the webhook URL, it uses that topic as the subject of the stream message. Also, note that we need not test this anywhere except for the helloworld webhook. Since helloworld is our default example for webhooks, it is here to stay and it made sense that tests for a generic function such as check_send_webhook_message be tested with an actual generic webhook! Fixes #8607.
49 lines
2.6 KiB
Python
49 lines
2.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
from typing import Text
|
|
|
|
from zerver.lib.test_classes import WebhookTestCase
|
|
|
|
class HelloWorldHookTests(WebhookTestCase):
|
|
STREAM_NAME = 'test'
|
|
URL_TEMPLATE = "/api/v1/external/helloworld?&api_key={api_key}&stream={stream}"
|
|
PM_URL_TEMPLATE = "/api/v1/external/helloworld?&api_key={api_key}"
|
|
FIXTURE_DIR_NAME = 'hello'
|
|
|
|
# Note: Include a test function per each distinct message condition your integration supports
|
|
def test_hello_message(self) -> None:
|
|
expected_subject = u"Hello World"
|
|
expected_message = u"Hello! I am happy to be here! :smile:\nThe Wikipedia featured article for today is **[Marilyn Monroe](https://en.wikipedia.org/wiki/Marilyn_Monroe)**"
|
|
|
|
# use fixture named helloworld_hello
|
|
self.send_and_test_stream_message('hello', expected_subject, expected_message,
|
|
content_type="application/x-www-form-urlencoded")
|
|
|
|
def test_goodbye_message(self) -> None:
|
|
expected_subject = u"Hello World"
|
|
expected_message = u"Hello! I am happy to be here! :smile:\nThe Wikipedia featured article for today is **[Goodbye](https://en.wikipedia.org/wiki/Goodbye)**"
|
|
|
|
# use fixture named helloworld_goodbye
|
|
self.send_and_test_stream_message('goodbye', expected_subject, expected_message,
|
|
content_type="application/x-www-form-urlencoded")
|
|
|
|
def test_pm_to_bot_owner(self) -> None:
|
|
# Note that this is really just a test for check_send_webhook_message
|
|
self.URL_TEMPLATE = self.PM_URL_TEMPLATE
|
|
self.url = self.build_webhook_url()
|
|
expected_message = u"Hello! I am happy to be here! :smile:\nThe Wikipedia featured article for today is **[Goodbye](https://en.wikipedia.org/wiki/Goodbye)**"
|
|
|
|
self.send_and_test_private_message('goodbye', expected_message=expected_message,
|
|
content_type="application/x-www-form-urlencoded")
|
|
|
|
def test_custom_topic(self) -> None:
|
|
# Note that this is really just a test for check_send_webhook_message
|
|
expected_subject = u"Custom Topic"
|
|
self.url = self.build_webhook_url(topic=expected_subject)
|
|
expected_message = u"Hello! I am happy to be here! :smile:\nThe Wikipedia featured article for today is **[Goodbye](https://en.wikipedia.org/wiki/Goodbye)**"
|
|
|
|
self.send_and_test_stream_message('goodbye', expected_subject, expected_message,
|
|
content_type="application/x-www-form-urlencoded")
|
|
|
|
def get_body(self, fixture_name: Text) -> Text:
|
|
return self.fixture_data("helloworld", fixture_name, file_type="json")
|