mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	webhooks: Rename STREAM_NAME to CHANNEL_NAME in tests.
This commit is contained in:
		
				
					committed by
					
						
						Tim Abbott
					
				
			
			
				
	
			
			
			
						parent
						
							d507706371
						
					
				
				
					commit
					dc31347ac4
				
			@@ -328,7 +328,7 @@ class `HelloWorldHookTests`:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
```python
 | 
					```python
 | 
				
			||||||
class HelloWorldHookTests(WebhookTestCase):
 | 
					class HelloWorldHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "test"
 | 
					    CHANNEL_NAME = "test"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/helloworld?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/helloworld?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    DIRECT_MESSAGE_URL_TEMPLATE = "/api/v1/external/helloworld?&api_key={api_key}"
 | 
					    DIRECT_MESSAGE_URL_TEMPLATE = "/api/v1/external/helloworld?&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "helloworld"
 | 
					    WEBHOOK_DIR_NAME = "helloworld"
 | 
				
			||||||
@@ -347,14 +347,14 @@ class HelloWorldHookTests(WebhookTestCase):
 | 
				
			|||||||
        )
 | 
					        )
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
In the above example, `STREAM_NAME`, `URL_TEMPLATE`, and `WEBHOOK_DIR_NAME` refer
 | 
					In the above example, `CHANNEL_NAME`, `URL_TEMPLATE`, and `WEBHOOK_DIR_NAME` refer
 | 
				
			||||||
to class attributes from the base class, `WebhookTestCase`. These are needed by
 | 
					to class attributes from the base class, `WebhookTestCase`. These are needed by
 | 
				
			||||||
the helper function `check_webhook` to determine how to execute
 | 
					the helper function `check_webhook` to determine how to execute
 | 
				
			||||||
your test. `STREAM_NAME` should be set to your default stream. If it doesn't exist,
 | 
					your test. `CHANNEL_NAME` should be set to your default stream. If it doesn't exist,
 | 
				
			||||||
`check_webhook` will create it while executing your test.
 | 
					`check_webhook` will create it while executing your test.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If your test expects a stream name from a test fixture, the value in the fixture
 | 
					If your test expects a stream name from a test fixture, the value in the fixture
 | 
				
			||||||
and the value you set for `STREAM_NAME` must match. The test helpers use `STREAM_NAME`
 | 
					and the value you set for `CHANNEL_NAME` must match. The test helpers use `CHANNEL_NAME`
 | 
				
			||||||
to create the destination stream, and then create the message to send using the
 | 
					to create the destination stream, and then create the message to send using the
 | 
				
			||||||
value from the fixture. If these don't match, the test will fail.
 | 
					value from the fixture. If these don't match, the test will fail.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -532,10 +532,10 @@ def test_unknown_action_no_data(self) -> None:
 | 
				
			|||||||
    # return if no params are sent. The fixture for this test is an empty file.
 | 
					    # return if no params are sent. The fixture for this test is an empty file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # subscribe to the target stream
 | 
					    # subscribe to the target stream
 | 
				
			||||||
    self.subscribe(self.test_user, self.STREAM_NAME)
 | 
					    self.subscribe(self.test_user, self.CHANNEL_NAME)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # post to the webhook url
 | 
					    # post to the webhook url
 | 
				
			||||||
    post_params = {'stream_name': self.STREAM_NAME,
 | 
					    post_params = {'stream_name': self.CHANNEL_NAME,
 | 
				
			||||||
                   'content_type': 'application/x-www-form-urlencoded'}
 | 
					                   'content_type': 'application/x-www-form-urlencoded'}
 | 
				
			||||||
    result = self.client_post(self.url, 'unknown_action', **post_params)
 | 
					    result = self.client_post(self.url, 'unknown_action', **post_params)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -549,7 +549,7 @@ the webhook returns an error, the test fails. Instead, explicitly do the
 | 
				
			|||||||
setup it would have done, and check the result yourself.
 | 
					setup it would have done, and check the result yourself.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Here, `subscribe_to_stream` is a test helper that uses `TEST_USER_EMAIL` and
 | 
					Here, `subscribe_to_stream` is a test helper that uses `TEST_USER_EMAIL` and
 | 
				
			||||||
`STREAM_NAME` (attributes from the base class) to register the user to receive
 | 
					`CHANNEL_NAME` (attributes from the base class) to register the user to receive
 | 
				
			||||||
messages in the given stream. If the stream doesn't exist, it creates it.
 | 
					messages in the given stream. If the stream doesn't exist, it creates it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
`client_post`, another helper, performs the HTTP POST that calls the incoming
 | 
					`client_post`, another helper, performs the HTTP POST that calls the incoming
 | 
				
			||||||
@@ -592,7 +592,7 @@ attribute `TOPIC` as a keyword argument to `build_webhook_url`, like so:
 | 
				
			|||||||
```python
 | 
					```python
 | 
				
			||||||
class QuerytestHookTests(WebhookTestCase):
 | 
					class QuerytestHookTests(WebhookTestCase):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    STREAM_NAME = 'querytest'
 | 
					    CHANNEL_NAME = 'querytest'
 | 
				
			||||||
    TOPIC = "Default topic"
 | 
					    TOPIC = "Default topic"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/querytest?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/querytest?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    FIXTURE_DIR_NAME = 'querytest'
 | 
					    FIXTURE_DIR_NAME = 'querytest'
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2080,7 +2080,7 @@ class WebhookTestCase(ZulipTestCase):
 | 
				
			|||||||
      important for ensuring we document all fully supported event types.
 | 
					      important for ensuring we document all fully supported event types.
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    STREAM_NAME: Optional[str] = None
 | 
					    CHANNEL_NAME: Optional[str] = None
 | 
				
			||||||
    TEST_USER_EMAIL = "webhook-bot@zulip.com"
 | 
					    TEST_USER_EMAIL = "webhook-bot@zulip.com"
 | 
				
			||||||
    URL_TEMPLATE: str
 | 
					    URL_TEMPLATE: str
 | 
				
			||||||
    WEBHOOK_DIR_NAME: Optional[str] = None
 | 
					    WEBHOOK_DIR_NAME: Optional[str] = None
 | 
				
			||||||
@@ -2185,7 +2185,7 @@ You can fix this by adding "{complete_event_type}" to ALL_EVENT_TYPES for this w
 | 
				
			|||||||
        We use `fixture_name` to find the payload data in of our test
 | 
					        We use `fixture_name` to find the payload data in of our test
 | 
				
			||||||
        fixtures.  Then we verify that a message gets sent to a stream:
 | 
					        fixtures.  Then we verify that a message gets sent to a stream:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            self.STREAM_NAME: stream name
 | 
					            self.CHANNEL_NAME: stream name
 | 
				
			||||||
            expected_topic_name: topic name
 | 
					            expected_topic_name: topic name
 | 
				
			||||||
            expected_message: content
 | 
					            expected_message: content
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2197,8 +2197,8 @@ You can fix this by adding "{complete_event_type}" to ALL_EVENT_TYPES for this w
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        When no message is expected to be sent, set `expect_noop` to True.
 | 
					        When no message is expected to be sent, set `expect_noop` to True.
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        assert self.STREAM_NAME is not None
 | 
					        assert self.CHANNEL_NAME is not None
 | 
				
			||||||
        self.subscribe(self.test_user, self.STREAM_NAME)
 | 
					        self.subscribe(self.test_user, self.CHANNEL_NAME)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        payload = self.get_payload(fixture_name)
 | 
					        payload = self.get_payload(fixture_name)
 | 
				
			||||||
        if content_type is not None:
 | 
					        if content_type is not None:
 | 
				
			||||||
@@ -2234,7 +2234,7 @@ one or more new messages.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        self.assert_stream_message(
 | 
					        self.assert_stream_message(
 | 
				
			||||||
            message=msg,
 | 
					            message=msg,
 | 
				
			||||||
            stream_name=self.STREAM_NAME,
 | 
					            stream_name=self.CHANNEL_NAME,
 | 
				
			||||||
            topic_name=expected_topic_name,
 | 
					            topic_name=expected_topic_name,
 | 
				
			||||||
            content=expected_message,
 | 
					            content=expected_message,
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
@@ -2291,9 +2291,9 @@ one or more new messages.
 | 
				
			|||||||
        url = self.URL_TEMPLATE
 | 
					        url = self.URL_TEMPLATE
 | 
				
			||||||
        if url.find("api_key") >= 0:
 | 
					        if url.find("api_key") >= 0:
 | 
				
			||||||
            api_key = get_api_key(self.test_user)
 | 
					            api_key = get_api_key(self.test_user)
 | 
				
			||||||
            url = self.URL_TEMPLATE.format(api_key=api_key, stream=self.STREAM_NAME)
 | 
					            url = self.URL_TEMPLATE.format(api_key=api_key, stream=self.CHANNEL_NAME)
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            url = self.URL_TEMPLATE.format(stream=self.STREAM_NAME)
 | 
					            url = self.URL_TEMPLATE.format(stream=self.CHANNEL_NAME)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        has_arguments = kwargs or args
 | 
					        has_arguments = kwargs or args
 | 
				
			||||||
        if has_arguments and url.find("?") == -1:
 | 
					        if has_arguments and url.find("?") == -1:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -144,25 +144,25 @@ class WebhooksCommonTestCase(ZulipTestCase):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WebhookURLConfigurationTestCase(WebhookTestCase):
 | 
					class WebhookURLConfigurationTestCase(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "helloworld"
 | 
					    CHANNEL_NAME = "helloworld"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "helloworld"
 | 
					    WEBHOOK_DIR_NAME = "helloworld"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/helloworld?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/helloworld?stream={stream}&api_key={api_key}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @override
 | 
					    @override
 | 
				
			||||||
    def setUp(self) -> None:
 | 
					    def setUp(self) -> None:
 | 
				
			||||||
        super().setUp()
 | 
					        super().setUp()
 | 
				
			||||||
        stream = self.subscribe(self.test_user, self.STREAM_NAME)
 | 
					        stream = self.subscribe(self.test_user, self.CHANNEL_NAME)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # In actual webhook tests, we will not need to use stream id.
 | 
					        # In actual webhook tests, we will not need to use stream id.
 | 
				
			||||||
        # We assign stream id to STREAM_NAME for testing URL configuration only.
 | 
					        # We assign stream id to CHANNEL_NAME for testing URL configuration only.
 | 
				
			||||||
        self.STREAM_NAME = str(stream.id)
 | 
					        self.CHANNEL_NAME = str(stream.id)
 | 
				
			||||||
        do_rename_stream(stream, "helloworld_renamed", self.test_user)
 | 
					        do_rename_stream(stream, "helloworld_renamed", self.test_user)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.url = self.build_webhook_url()
 | 
					        self.url = self.build_webhook_url()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_trigger_stream_message_by_id(self) -> None:
 | 
					    def test_trigger_stream_message_by_id(self) -> None:
 | 
				
			||||||
        # check_webhook cannot be used here as it
 | 
					        # check_webhook cannot be used here as it
 | 
				
			||||||
        # subscribes the test user to self.STREAM_NAME
 | 
					        # subscribes the test user to self.CHANNEL_NAME
 | 
				
			||||||
        payload = self.get_body("hello")
 | 
					        payload = self.get_body("hello")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.send_webhook_payload(
 | 
					        self.send_webhook_payload(
 | 
				
			||||||
@@ -182,13 +182,13 @@ class WebhookURLConfigurationTestCase(WebhookTestCase):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class MissingEventHeaderTestCase(WebhookTestCase):
 | 
					class MissingEventHeaderTestCase(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "groove"
 | 
					    CHANNEL_NAME = "groove"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/groove?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/groove?stream={stream}&api_key={api_key}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # This tests the validate_extract_webhook_http_header function with
 | 
					    # This tests the validate_extract_webhook_http_header function with
 | 
				
			||||||
    # an actual webhook, instead of just making a mock
 | 
					    # an actual webhook, instead of just making a mock
 | 
				
			||||||
    def test_missing_event_header(self) -> None:
 | 
					    def test_missing_event_header(self) -> None:
 | 
				
			||||||
        self.subscribe(self.test_user, self.STREAM_NAME)
 | 
					        self.subscribe(self.test_user, self.CHANNEL_NAME)
 | 
				
			||||||
        with self.assertLogs("zulip.zerver.webhooks.anomalous", level="INFO") as webhook_logs:
 | 
					        with self.assertLogs("zulip.zerver.webhooks.anomalous", level="INFO") as webhook_logs:
 | 
				
			||||||
            result = self.client_post(
 | 
					            result = self.client_post(
 | 
				
			||||||
                self.url,
 | 
					                self.url,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class AirbrakeHookTests(WebhookTestCase):
 | 
					class AirbrakeHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "airbrake"
 | 
					    CHANNEL_NAME = "airbrake"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/airbrake?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/airbrake?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "airbrake"
 | 
					    WEBHOOK_DIR_NAME = "airbrake"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class AlertmanagerHookTests(WebhookTestCase):
 | 
					class AlertmanagerHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "alertmanager"
 | 
					    CHANNEL_NAME = "alertmanager"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/alertmanager?&api_key={api_key}&stream={stream}&name=topic&desc=description"
 | 
					    URL_TEMPLATE = "/api/v1/external/alertmanager?&api_key={api_key}&stream={stream}&name=topic&desc=description"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "alertmanager"
 | 
					    WEBHOOK_DIR_NAME = "alertmanager"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class AnsibletowerHookTests(WebhookTestCase):
 | 
					class AnsibletowerHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "ansibletower"
 | 
					    CHANNEL_NAME = "ansibletower"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/ansibletower?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/ansibletower?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "ansibletower"
 | 
					    WEBHOOK_DIR_NAME = "ansibletower"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@ from zerver.webhooks.appfollow.view import convert_markdown
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class AppFollowHookTests(WebhookTestCase):
 | 
					class AppFollowHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "appfollow"
 | 
					    CHANNEL_NAME = "appfollow"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/appfollow?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/appfollow?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "appfollow"
 | 
					    WEBHOOK_DIR_NAME = "appfollow"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class AppveyorHookTests(WebhookTestCase):
 | 
					class AppveyorHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "appveyor"
 | 
					    CHANNEL_NAME = "appveyor"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/appveyor?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/appveyor?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "appveyor"
 | 
					    WEBHOOK_DIR_NAME = "appveyor"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@ from zerver.lib.webhooks.git import COMMITS_LIMIT
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class AzuredevopsHookTests(WebhookTestCase):
 | 
					class AzuredevopsHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "azure-devops"
 | 
					    CHANNEL_NAME = "azure-devops"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/azuredevops?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/azuredevops?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "azuredevops"
 | 
					    WEBHOOK_DIR_NAME = "azuredevops"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ TOPIC_NAME = "Zulip HQ"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class BasecampHookTests(WebhookTestCase):
 | 
					class BasecampHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "basecamp"
 | 
					    CHANNEL_NAME = "basecamp"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/basecamp?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/basecamp?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "basecamp"
 | 
					    WEBHOOK_DIR_NAME = "basecamp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@ from zerver.lib.webhooks.git import COMMITS_LIMIT
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class BeanstalkHookTests(WebhookTestCase):
 | 
					class BeanstalkHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "commits"
 | 
					    CHANNEL_NAME = "commits"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/beanstalk?stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/beanstalk?stream={stream}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_git_single(self) -> None:
 | 
					    def test_git_single(self) -> None:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class BeeminderHookTests(WebhookTestCase):
 | 
					class BeeminderHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "beeminder"
 | 
					    CHANNEL_NAME = "beeminder"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/beeminder?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/beeminder?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "beeminder"
 | 
					    WEBHOOK_DIR_NAME = "beeminder"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,7 @@ TOPIC_BRANCH_EVENTS = "Repository name / master"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class BitbucketHookTests(WebhookTestCase):
 | 
					class BitbucketHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "bitbucket"
 | 
					    CHANNEL_NAME = "bitbucket"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/bitbucket?stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/bitbucket?stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "bitbucket"
 | 
					    WEBHOOK_DIR_NAME = "bitbucket"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,7 @@ TOPIC_BRANCH_EVENTS = "Repository name / master"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Bitbucket2HookTests(WebhookTestCase):
 | 
					class Bitbucket2HookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "bitbucket2"
 | 
					    CHANNEL_NAME = "bitbucket2"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/bitbucket2?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/bitbucket2?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "bitbucket2"
 | 
					    WEBHOOK_DIR_NAME = "bitbucket2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -278,7 +278,7 @@ class Bitbucket2HookTests(WebhookTestCase):
 | 
				
			|||||||
    def test_bitbucket2_on_push_more_than_one_tag_event(self) -> None:
 | 
					    def test_bitbucket2_on_push_more_than_one_tag_event(self) -> None:
 | 
				
			||||||
        expected_message = "Tomasz pushed tag [{name}](https://bitbucket.org/kolaszek/repository-name/commits/tag/{name})."
 | 
					        expected_message = "Tomasz pushed tag [{name}](https://bitbucket.org/kolaszek/repository-name/commits/tag/{name})."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.subscribe(self.test_user, self.STREAM_NAME)
 | 
					        self.subscribe(self.test_user, self.CHANNEL_NAME)
 | 
				
			||||||
        payload = self.get_body("push_more_than_one_tag")
 | 
					        payload = self.get_body("push_more_than_one_tag")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        msg = self.send_webhook_payload(
 | 
					        msg = self.send_webhook_payload(
 | 
				
			||||||
@@ -292,7 +292,7 @@ class Bitbucket2HookTests(WebhookTestCase):
 | 
				
			|||||||
        msg = self.get_second_to_last_message()
 | 
					        msg = self.get_second_to_last_message()
 | 
				
			||||||
        self.assert_stream_message(
 | 
					        self.assert_stream_message(
 | 
				
			||||||
            message=msg,
 | 
					            message=msg,
 | 
				
			||||||
            stream_name=self.STREAM_NAME,
 | 
					            stream_name=self.CHANNEL_NAME,
 | 
				
			||||||
            topic_name=TOPIC,
 | 
					            topic_name=TOPIC,
 | 
				
			||||||
            content=expected_message.format(name="a"),
 | 
					            content=expected_message.format(name="a"),
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
@@ -300,13 +300,13 @@ class Bitbucket2HookTests(WebhookTestCase):
 | 
				
			|||||||
        msg = self.get_last_message()
 | 
					        msg = self.get_last_message()
 | 
				
			||||||
        self.assert_stream_message(
 | 
					        self.assert_stream_message(
 | 
				
			||||||
            message=msg,
 | 
					            message=msg,
 | 
				
			||||||
            stream_name=self.STREAM_NAME,
 | 
					            stream_name=self.CHANNEL_NAME,
 | 
				
			||||||
            topic_name=TOPIC,
 | 
					            topic_name=TOPIC,
 | 
				
			||||||
            content=expected_message.format(name="b"),
 | 
					            content=expected_message.format(name="b"),
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_bitbucket2_on_more_than_one_push_event(self) -> None:
 | 
					    def test_bitbucket2_on_more_than_one_push_event(self) -> None:
 | 
				
			||||||
        self.subscribe(self.test_user, self.STREAM_NAME)
 | 
					        self.subscribe(self.test_user, self.CHANNEL_NAME)
 | 
				
			||||||
        payload = self.get_body("more_than_one_push_event")
 | 
					        payload = self.get_body("more_than_one_push_event")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        msg = self.send_webhook_payload(
 | 
					        msg = self.send_webhook_payload(
 | 
				
			||||||
@@ -320,7 +320,7 @@ class Bitbucket2HookTests(WebhookTestCase):
 | 
				
			|||||||
        msg = self.get_second_to_last_message()
 | 
					        msg = self.get_second_to_last_message()
 | 
				
			||||||
        self.assert_stream_message(
 | 
					        self.assert_stream_message(
 | 
				
			||||||
            message=msg,
 | 
					            message=msg,
 | 
				
			||||||
            stream_name=self.STREAM_NAME,
 | 
					            stream_name=self.CHANNEL_NAME,
 | 
				
			||||||
            topic_name=TOPIC_BRANCH_EVENTS,
 | 
					            topic_name=TOPIC_BRANCH_EVENTS,
 | 
				
			||||||
            content="Tomasz [pushed](https://bitbucket.org/kolaszek/repository-name/branch/master) 1 commit to branch master.\n\n* first commit ([84b96adc644](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed))",
 | 
					            content="Tomasz [pushed](https://bitbucket.org/kolaszek/repository-name/branch/master) 1 commit to branch master.\n\n* first commit ([84b96adc644](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed))",
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
@@ -328,7 +328,7 @@ class Bitbucket2HookTests(WebhookTestCase):
 | 
				
			|||||||
        msg = self.get_last_message()
 | 
					        msg = self.get_last_message()
 | 
				
			||||||
        self.assert_stream_message(
 | 
					        self.assert_stream_message(
 | 
				
			||||||
            message=msg,
 | 
					            message=msg,
 | 
				
			||||||
            stream_name=self.STREAM_NAME,
 | 
					            stream_name=self.CHANNEL_NAME,
 | 
				
			||||||
            topic_name=TOPIC,
 | 
					            topic_name=TOPIC,
 | 
				
			||||||
            content="Tomasz pushed tag [a](https://bitbucket.org/kolaszek/repository-name/commits/tag/a).",
 | 
					            content="Tomasz pushed tag [a](https://bitbucket.org/kolaszek/repository-name/commits/tag/a).",
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
@@ -336,7 +336,7 @@ class Bitbucket2HookTests(WebhookTestCase):
 | 
				
			|||||||
    def test_bitbucket2_on_more_than_one_push_event_filtered_by_branches(self) -> None:
 | 
					    def test_bitbucket2_on_more_than_one_push_event_filtered_by_branches(self) -> None:
 | 
				
			||||||
        self.url = self.build_webhook_url(branches="master,development")
 | 
					        self.url = self.build_webhook_url(branches="master,development")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.subscribe(self.test_user, self.STREAM_NAME)
 | 
					        self.subscribe(self.test_user, self.CHANNEL_NAME)
 | 
				
			||||||
        payload = self.get_body("more_than_one_push_event")
 | 
					        payload = self.get_body("more_than_one_push_event")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        msg = self.send_webhook_payload(
 | 
					        msg = self.send_webhook_payload(
 | 
				
			||||||
@@ -350,7 +350,7 @@ class Bitbucket2HookTests(WebhookTestCase):
 | 
				
			|||||||
        msg = self.get_second_to_last_message()
 | 
					        msg = self.get_second_to_last_message()
 | 
				
			||||||
        self.assert_stream_message(
 | 
					        self.assert_stream_message(
 | 
				
			||||||
            message=msg,
 | 
					            message=msg,
 | 
				
			||||||
            stream_name=self.STREAM_NAME,
 | 
					            stream_name=self.CHANNEL_NAME,
 | 
				
			||||||
            topic_name=TOPIC_BRANCH_EVENTS,
 | 
					            topic_name=TOPIC_BRANCH_EVENTS,
 | 
				
			||||||
            content="Tomasz [pushed](https://bitbucket.org/kolaszek/repository-name/branch/master) 1 commit to branch master.\n\n* first commit ([84b96adc644](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed))",
 | 
					            content="Tomasz [pushed](https://bitbucket.org/kolaszek/repository-name/branch/master) 1 commit to branch master.\n\n* first commit ([84b96adc644](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed))",
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
@@ -358,7 +358,7 @@ class Bitbucket2HookTests(WebhookTestCase):
 | 
				
			|||||||
        msg = self.get_last_message()
 | 
					        msg = self.get_last_message()
 | 
				
			||||||
        self.assert_stream_message(
 | 
					        self.assert_stream_message(
 | 
				
			||||||
            message=msg,
 | 
					            message=msg,
 | 
				
			||||||
            stream_name=self.STREAM_NAME,
 | 
					            stream_name=self.CHANNEL_NAME,
 | 
				
			||||||
            topic_name=TOPIC,
 | 
					            topic_name=TOPIC,
 | 
				
			||||||
            content="Tomasz pushed tag [a](https://bitbucket.org/kolaszek/repository-name/commits/tag/a).",
 | 
					            content="Tomasz pushed tag [a](https://bitbucket.org/kolaszek/repository-name/commits/tag/a).",
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@ TOPIC_BRANCH_EVENTS = "sandbox / {branch}"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Bitbucket3HookTests(WebhookTestCase):
 | 
					class Bitbucket3HookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "bitbucket3"
 | 
					    CHANNEL_NAME = "bitbucket3"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/bitbucket3?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/bitbucket3?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "bitbucket3"
 | 
					    WEBHOOK_DIR_NAME = "bitbucket3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -81,7 +81,7 @@ class Bitbucket3HookTests(WebhookTestCase):
 | 
				
			|||||||
        branch1_content = """[hypro999](http://139.59.64.214:7990/users/hypro999) pushed to branch branch1. Head is now 3980c2be32a7e23c795741d5dc1a2eecb9b85d6d."""
 | 
					        branch1_content = """[hypro999](http://139.59.64.214:7990/users/hypro999) pushed to branch branch1. Head is now 3980c2be32a7e23c795741d5dc1a2eecb9b85d6d."""
 | 
				
			||||||
        master_content = """[hypro999](http://139.59.64.214:7990/users/hypro999) pushed to branch master. Head is now fc43d13cff1abb28631196944ba4fc4ad06a2cf2."""
 | 
					        master_content = """[hypro999](http://139.59.64.214:7990/users/hypro999) pushed to branch master. Head is now fc43d13cff1abb28631196944ba4fc4ad06a2cf2."""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.subscribe(self.test_user, self.STREAM_NAME)
 | 
					        self.subscribe(self.test_user, self.CHANNEL_NAME)
 | 
				
			||||||
        payload = self.get_body("repo_push_update_multiple_branches")
 | 
					        payload = self.get_body("repo_push_update_multiple_branches")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        msg = self.send_webhook_payload(
 | 
					        msg = self.send_webhook_payload(
 | 
				
			||||||
@@ -94,7 +94,7 @@ class Bitbucket3HookTests(WebhookTestCase):
 | 
				
			|||||||
        msg = self.get_second_to_last_message()
 | 
					        msg = self.get_second_to_last_message()
 | 
				
			||||||
        self.assert_stream_message(
 | 
					        self.assert_stream_message(
 | 
				
			||||||
            message=msg,
 | 
					            message=msg,
 | 
				
			||||||
            stream_name=self.STREAM_NAME,
 | 
					            stream_name=self.CHANNEL_NAME,
 | 
				
			||||||
            topic_name=TOPIC_BRANCH_EVENTS.format(branch="branch1"),
 | 
					            topic_name=TOPIC_BRANCH_EVENTS.format(branch="branch1"),
 | 
				
			||||||
            content=branch1_content,
 | 
					            content=branch1_content,
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
@@ -102,7 +102,7 @@ class Bitbucket3HookTests(WebhookTestCase):
 | 
				
			|||||||
        msg = self.get_last_message()
 | 
					        msg = self.get_last_message()
 | 
				
			||||||
        self.assert_stream_message(
 | 
					        self.assert_stream_message(
 | 
				
			||||||
            message=msg,
 | 
					            message=msg,
 | 
				
			||||||
            stream_name=self.STREAM_NAME,
 | 
					            stream_name=self.CHANNEL_NAME,
 | 
				
			||||||
            topic_name=TOPIC_BRANCH_EVENTS.format(branch="master"),
 | 
					            topic_name=TOPIC_BRANCH_EVENTS.format(branch="master"),
 | 
				
			||||||
            content=master_content,
 | 
					            content=master_content,
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class BuildbotHookTests(WebhookTestCase):
 | 
					class BuildbotHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "buildbot"
 | 
					    CHANNEL_NAME = "buildbot"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/buildbot?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/buildbot?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "buildbot"
 | 
					    WEBHOOK_DIR_NAME = "buildbot"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class CanarytokensHookTests(WebhookTestCase):
 | 
					class CanarytokensHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "canarytoken"
 | 
					    CHANNEL_NAME = "canarytoken"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/canarytoken?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/canarytoken?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "canarytoken"
 | 
					    WEBHOOK_DIR_NAME = "canarytoken"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class CircleCiHookTests(WebhookTestCase):
 | 
					class CircleCiHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "circleci"
 | 
					    CHANNEL_NAME = "circleci"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/circleci?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/circleci?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "circleci"
 | 
					    WEBHOOK_DIR_NAME = "circleci"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ClubhouseWebhookTest(WebhookTestCase):
 | 
					class ClubhouseWebhookTest(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "clubhouse"
 | 
					    CHANNEL_NAME = "clubhouse"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/clubhouse?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/clubhouse?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "clubhouse"
 | 
					    WEBHOOK_DIR_NAME = "clubhouse"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class CodeshipHookTests(WebhookTestCase):
 | 
					class CodeshipHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "codeship"
 | 
					    CHANNEL_NAME = "codeship"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/codeship?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/codeship?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    TOPIC_NAME = "codeship/docs"
 | 
					    TOPIC_NAME = "codeship/docs"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "codeship"
 | 
					    WEBHOOK_DIR_NAME = "codeship"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class CrashlyticsHookTests(WebhookTestCase):
 | 
					class CrashlyticsHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "crashlytics"
 | 
					    CHANNEL_NAME = "crashlytics"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/crashlytics?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/crashlytics?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "crashlytics"
 | 
					    WEBHOOK_DIR_NAME = "crashlytics"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class DelightedHookTests(WebhookTestCase):
 | 
					class DelightedHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "delighted"
 | 
					    CHANNEL_NAME = "delighted"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/delighted?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/delighted?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "delighted"
 | 
					    WEBHOOK_DIR_NAME = "delighted"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
# Tests for the Desk.com webhook integration.
 | 
					# Tests for the Desk.com webhook integration.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# The stream name must be provided in the URL-encoded test fixture data,
 | 
					# The stream name must be provided in the URL-encoded test fixture data,
 | 
				
			||||||
# and must match STREAM_NAME set here.
 | 
					# and must match CHANNEL_NAME set here.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# Example:
 | 
					# Example:
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
@@ -14,7 +14,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class DeskDotComHookTests(WebhookTestCase):
 | 
					class DeskDotComHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "deskdotcom"
 | 
					    CHANNEL_NAME = "deskdotcom"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/deskdotcom?stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/deskdotcom?stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "deskdotcom"
 | 
					    WEBHOOK_DIR_NAME = "deskdotcom"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@ from zerver.lib.users import get_api_key
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class DropboxHookTests(WebhookTestCase):
 | 
					class DropboxHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "test"
 | 
					    CHANNEL_NAME = "test"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/dropbox?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/dropbox?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "dropbox"
 | 
					    WEBHOOK_DIR_NAME = "dropbox"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -19,8 +19,8 @@ class DropboxHookTests(WebhookTestCase):
 | 
				
			|||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_verification_request(self) -> None:
 | 
					    def test_verification_request(self) -> None:
 | 
				
			||||||
        self.subscribe(self.test_user, self.STREAM_NAME)
 | 
					        self.subscribe(self.test_user, self.CHANNEL_NAME)
 | 
				
			||||||
        get_params = {"stream_name": self.STREAM_NAME, "api_key": get_api_key(self.test_user)}
 | 
					        get_params = {"stream_name": self.CHANNEL_NAME, "api_key": get_api_key(self.test_user)}
 | 
				
			||||||
        result = self.client_get(self.url, get_params)
 | 
					        result = self.client_get(self.url, get_params)
 | 
				
			||||||
        self.assert_json_error(result, "Missing 'challenge' argument", 400)
 | 
					        self.assert_json_error(result, "Missing 'challenge' argument", 400)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ErrBitHookTests(WebhookTestCase):
 | 
					class ErrBitHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "errbit"
 | 
					    CHANNEL_NAME = "errbit"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/errbit?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/errbit?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "errbit"
 | 
					    WEBHOOK_DIR_NAME = "errbit"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class FlockHookTests(WebhookTestCase):
 | 
					class FlockHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "test"
 | 
					    CHANNEL_NAME = "test"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/flock?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/flock?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "flock"
 | 
					    WEBHOOK_DIR_NAME = "flock"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class FreshdeskHookTests(WebhookTestCase):
 | 
					class FreshdeskHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "freshdesk"
 | 
					    CHANNEL_NAME = "freshdesk"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/freshdesk?stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/freshdesk?stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "freshdesk"
 | 
					    WEBHOOK_DIR_NAME = "freshdesk"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class FreshpingHookTests(WebhookTestCase):
 | 
					class FreshpingHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "freshping"
 | 
					    CHANNEL_NAME = "freshping"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/freshping?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/freshping?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "freshping"
 | 
					    WEBHOOK_DIR_NAME = "freshping"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@ from zerver.webhooks.freshstatus.view import MISCONFIGURED_PAYLOAD_ERROR_MESSAGE
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class FreshstatusHookTests(WebhookTestCase):
 | 
					class FreshstatusHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "freshstatus"
 | 
					    CHANNEL_NAME = "freshstatus"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/freshstatus?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/freshstatus?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "freshstatus"
 | 
					    WEBHOOK_DIR_NAME = "freshstatus"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class FrontHookTests(WebhookTestCase):
 | 
					class FrontHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "front"
 | 
					    CHANNEL_NAME = "front"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/front?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/front?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "front"
 | 
					    WEBHOOK_DIR_NAME = "front"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class GoogleCodeInTests(WebhookTestCase):
 | 
					class GoogleCodeInTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "gci"
 | 
					    CHANNEL_NAME = "gci"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/gci?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/gci?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "gci"
 | 
					    WEBHOOK_DIR_NAME = "gci"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class GiteaHookTests(WebhookTestCase):
 | 
					class GiteaHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "commits"
 | 
					    CHANNEL_NAME = "commits"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/gitea?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/gitea?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "gitea"
 | 
					    WEBHOOK_DIR_NAME = "gitea"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@ TOPIC_SPONSORS = "sponsors"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class GitHubWebhookTest(WebhookTestCase):
 | 
					class GitHubWebhookTest(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "github"
 | 
					    CHANNEL_NAME = "github"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/github?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/github?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "github"
 | 
					    WEBHOOK_DIR_NAME = "github"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -535,7 +535,7 @@ A temporary team so that I can get some webhook fixtures!
 | 
				
			|||||||
            self.verify_post_is_ignored(payload, event)
 | 
					            self.verify_post_is_ignored(payload, event)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_team_edited_with_unsupported_keys(self) -> None:
 | 
					    def test_team_edited_with_unsupported_keys(self) -> None:
 | 
				
			||||||
        self.subscribe(self.test_user, self.STREAM_NAME)
 | 
					        self.subscribe(self.test_user, self.CHANNEL_NAME)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        event = "team"
 | 
					        event = "team"
 | 
				
			||||||
        payload = dict(
 | 
					        payload = dict(
 | 
				
			||||||
@@ -560,7 +560,7 @@ A temporary team so that I can get some webhook fixtures!
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        self.assert_stream_message(
 | 
					        self.assert_stream_message(
 | 
				
			||||||
            message=stream_message,
 | 
					            message=stream_message,
 | 
				
			||||||
            stream_name=self.STREAM_NAME,
 | 
					            stream_name=self.CHANNEL_NAME,
 | 
				
			||||||
            topic_name="team My Team",
 | 
					            topic_name="team My Team",
 | 
				
			||||||
            content="Team has changes to `bogus_key1/bogus_key2` data.",
 | 
					            content="Team has changes to `bogus_key1/bogus_key2` data.",
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
@@ -595,7 +595,7 @@ A temporary team so that I can get some webhook fixtures!
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class GitHubSponsorsHookTests(WebhookTestCase):
 | 
					class GitHubSponsorsHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "github"
 | 
					    CHANNEL_NAME = "github"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/githubsponsors?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/githubsponsors?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "github"
 | 
					    WEBHOOK_DIR_NAME = "github"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@ from zerver.lib.webhooks.git import COMMITS_LIMIT
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class GitlabHookTests(WebhookTestCase):
 | 
					class GitlabHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "gitlab"
 | 
					    CHANNEL_NAME = "gitlab"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/gitlab?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/gitlab?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "gitlab"
 | 
					    WEBHOOK_DIR_NAME = "gitlab"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class GocdHookTests(WebhookTestCase):
 | 
					class GocdHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "gocd"
 | 
					    CHANNEL_NAME = "gocd"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/gocd?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/gocd?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "gocd"
 | 
					    WEBHOOK_DIR_NAME = "gocd"
 | 
				
			||||||
    TOPIC_NAME = "https://github.com/gocd/gocd"
 | 
					    TOPIC_NAME = "https://github.com/gocd/gocd"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@ from zerver.lib.webhooks.git import COMMITS_LIMIT
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class GogsHookTests(WebhookTestCase):
 | 
					class GogsHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "commits"
 | 
					    CHANNEL_NAME = "commits"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/gogs?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/gogs?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "gogs"
 | 
					    WEBHOOK_DIR_NAME = "gogs"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@ from zerver.webhooks.gosquared.view import CHAT_MESSAGE_TEMPLATE
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class GoSquaredHookTests(WebhookTestCase):
 | 
					class GoSquaredHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "gosquared"
 | 
					    CHANNEL_NAME = "gosquared"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/gosquared?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/gosquared?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "gosquared"
 | 
					    WEBHOOK_DIR_NAME = "gosquared"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class GrafanaHookTests(WebhookTestCase):
 | 
					class GrafanaHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "grafana"
 | 
					    CHANNEL_NAME = "grafana"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/grafana?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/grafana?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "grafana"
 | 
					    WEBHOOK_DIR_NAME = "grafana"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class GreenhouseHookTests(WebhookTestCase):
 | 
					class GreenhouseHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "greenhouse"
 | 
					    CHANNEL_NAME = "greenhouse"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/greenhouse?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/greenhouse?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "greenhouse"
 | 
					    WEBHOOK_DIR_NAME = "greenhouse"
 | 
				
			||||||
    CONTENT_TYPE = "application/x-www-form-urlencoded"
 | 
					    CONTENT_TYPE = "application/x-www-form-urlencoded"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class GrooveHookTests(WebhookTestCase):
 | 
					class GrooveHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "groove"
 | 
					    CHANNEL_NAME = "groove"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/groove?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/groove?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "groove"
 | 
					    WEBHOOK_DIR_NAME = "groove"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -64,7 +64,7 @@ The content of the body goes here.
 | 
				
			|||||||
    # This simulates the condition when a ticket
 | 
					    # This simulates the condition when a ticket
 | 
				
			||||||
    # is assigned to no one.
 | 
					    # is assigned to no one.
 | 
				
			||||||
    def test_groove_ticket_assigned_no_one(self) -> None:
 | 
					    def test_groove_ticket_assigned_no_one(self) -> None:
 | 
				
			||||||
        self.subscribe(self.test_user, self.STREAM_NAME)
 | 
					        self.subscribe(self.test_user, self.CHANNEL_NAME)
 | 
				
			||||||
        result = self.client_post(
 | 
					        result = self.client_post(
 | 
				
			||||||
            self.url,
 | 
					            self.url,
 | 
				
			||||||
            self.get_body("ticket_assigned__no_one"),
 | 
					            self.get_body("ticket_assigned__no_one"),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class HarborHookTests(WebhookTestCase):
 | 
					class HarborHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "harbor"
 | 
					    CHANNEL_NAME = "harbor"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/harbor?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/harbor?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "harbor"
 | 
					    WEBHOOK_DIR_NAME = "harbor"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class HelloSignHookTests(WebhookTestCase):
 | 
					class HelloSignHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "hellosign"
 | 
					    CHANNEL_NAME = "hellosign"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/hellosign?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/hellosign?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "hellosign"
 | 
					    WEBHOOK_DIR_NAME = "hellosign"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@ from zerver.models.users import get_system_bot
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class HelloWorldHookTests(WebhookTestCase):
 | 
					class HelloWorldHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "test"
 | 
					    CHANNEL_NAME = "test"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/helloworld?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/helloworld?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    DIRECT_MESSAGE_URL_TEMPLATE = "/api/v1/external/helloworld?&api_key={api_key}"
 | 
					    DIRECT_MESSAGE_URL_TEMPLATE = "/api/v1/external/helloworld?&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "helloworld"
 | 
					    WEBHOOK_DIR_NAME = "helloworld"
 | 
				
			||||||
@@ -50,7 +50,7 @@ class HelloWorldHookTests(WebhookTestCase):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def test_stream_error_pm_to_bot_owner(self) -> None:
 | 
					    def test_stream_error_pm_to_bot_owner(self) -> None:
 | 
				
			||||||
        # Note that this is really just a test for check_send_webhook_message
 | 
					        # Note that this is really just a test for check_send_webhook_message
 | 
				
			||||||
        self.STREAM_NAME = "nonexistent"
 | 
					        self.CHANNEL_NAME = "nonexistent"
 | 
				
			||||||
        self.url = self.build_webhook_url()
 | 
					        self.url = self.build_webhook_url()
 | 
				
			||||||
        realm = get_realm("zulip")
 | 
					        realm = get_realm("zulip")
 | 
				
			||||||
        notification_bot = get_system_bot(settings.NOTIFICATION_BOT, realm.id)
 | 
					        notification_bot = get_system_bot(settings.NOTIFICATION_BOT, realm.id)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class HerokuHookTests(WebhookTestCase):
 | 
					class HerokuHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "heroku"
 | 
					    CHANNEL_NAME = "heroku"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/heroku?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/heroku?stream={stream}&api_key={api_key}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_deployment(self) -> None:
 | 
					    def test_deployment(self) -> None:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class HomeAssistantHookTests(WebhookTestCase):
 | 
					class HomeAssistantHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "homeassistant"
 | 
					    CHANNEL_NAME = "homeassistant"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/homeassistant?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/homeassistant?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "homeassistant"
 | 
					    WEBHOOK_DIR_NAME = "homeassistant"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class IFTTTHookTests(WebhookTestCase):
 | 
					class IFTTTHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "ifttt"
 | 
					    CHANNEL_NAME = "ifttt"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/ifttt?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/ifttt?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "ifttt"
 | 
					    WEBHOOK_DIR_NAME = "ifttt"
 | 
				
			||||||
    VIEW_FUNCTION_NAME = "api_iftt_app_webhook"
 | 
					    VIEW_FUNCTION_NAME = "api_iftt_app_webhook"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class InspingHookTests(WebhookTestCase):
 | 
					class InspingHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "test"
 | 
					    CHANNEL_NAME = "test"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/insping?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/insping?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "insping"
 | 
					    WEBHOOK_DIR_NAME = "insping"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class IntercomWebHookTests(WebhookTestCase):
 | 
					class IntercomWebHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "test"
 | 
					    CHANNEL_NAME = "test"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/intercom?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/intercom?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "intercom"
 | 
					    WEBHOOK_DIR_NAME = "intercom"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@ from zerver.lib.users import get_api_key
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class JiraHookTests(WebhookTestCase):
 | 
					class JiraHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "jira"
 | 
					    CHANNEL_NAME = "jira"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/jira?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/jira?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "jira"
 | 
					    WEBHOOK_DIR_NAME = "jira"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -65,9 +65,9 @@ Leo Franchi created [BUG-15: New bug with hook](http://lfranchi.com:8080/browse/
 | 
				
			|||||||
            self.assert_json_success(result)
 | 
					            self.assert_json_success(result)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_created_with_stream_with_spaces_escaped(self) -> None:
 | 
					    def test_created_with_stream_with_spaces_escaped(self) -> None:
 | 
				
			||||||
        self.STREAM_NAME = quote("jira alerts")
 | 
					        self.CHANNEL_NAME = quote("jira alerts")
 | 
				
			||||||
        self.url = self.build_webhook_url()
 | 
					        self.url = self.build_webhook_url()
 | 
				
			||||||
        self.subscribe(self.test_user, unquote(self.STREAM_NAME))
 | 
					        self.subscribe(self.test_user, unquote(self.CHANNEL_NAME))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        payload = self.get_body("created_v1")
 | 
					        payload = self.get_body("created_v1")
 | 
				
			||||||
        result = self.client_post(self.url, payload, content_type="application/json")
 | 
					        result = self.client_post(self.url, payload, content_type="application/json")
 | 
				
			||||||
@@ -86,9 +86,9 @@ Leo Franchi created [BUG-15: New bug with hook](http://lfranchi.com:8080/browse/
 | 
				
			|||||||
        self.assertEqual(msg.topic_name(), expected_topic_name)
 | 
					        self.assertEqual(msg.topic_name(), expected_topic_name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_created_with_stream_with_spaces_double_escaped(self) -> None:
 | 
					    def test_created_with_stream_with_spaces_double_escaped(self) -> None:
 | 
				
			||||||
        self.STREAM_NAME = quote(quote("jira alerts"))
 | 
					        self.CHANNEL_NAME = quote(quote("jira alerts"))
 | 
				
			||||||
        self.url = self.build_webhook_url()
 | 
					        self.url = self.build_webhook_url()
 | 
				
			||||||
        self.subscribe(self.test_user, unquote(unquote(self.STREAM_NAME)))
 | 
					        self.subscribe(self.test_user, unquote(unquote(self.CHANNEL_NAME)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        payload = self.get_body("created_v1")
 | 
					        payload = self.get_body("created_v1")
 | 
				
			||||||
        result = self.client_post(self.url, payload, content_type="application/json")
 | 
					        result = self.client_post(self.url, payload, content_type="application/json")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class JotformHookTests(WebhookTestCase):
 | 
					class JotformHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "test"
 | 
					    CHANNEL_NAME = "test"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/jotform?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/jotform?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "jotform"
 | 
					    WEBHOOK_DIR_NAME = "jotform"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class JsonHookTests(WebhookTestCase):
 | 
					class JsonHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "json"
 | 
					    CHANNEL_NAME = "json"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/json?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/json?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "json"
 | 
					    WEBHOOK_DIR_NAME = "json"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class LibratoHookTests(WebhookTestCase):
 | 
					class LibratoHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "librato"
 | 
					    CHANNEL_NAME = "librato"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/librato?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/librato?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "librato"
 | 
					    WEBHOOK_DIR_NAME = "librato"
 | 
				
			||||||
    IS_ATTACHMENT = False
 | 
					    IS_ATTACHMENT = False
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class LidarrHookTests(WebhookTestCase):
 | 
					class LidarrHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "lidarr"
 | 
					    CHANNEL_NAME = "lidarr"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/lidarr?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/lidarr?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "lidarr"
 | 
					    WEBHOOK_DIR_NAME = "lidarr"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class LinearHookTests(WebhookTestCase):
 | 
					class LinearHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "Linear"
 | 
					    CHANNEL_NAME = "Linear"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/linear?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/linear?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "linear"
 | 
					    WEBHOOK_DIR_NAME = "linear"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class MentionHookTests(WebhookTestCase):
 | 
					class MentionHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "test"
 | 
					    CHANNEL_NAME = "test"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/mention?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/mention?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "mention"
 | 
					    WEBHOOK_DIR_NAME = "mention"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class NetlifyHookTests(WebhookTestCase):
 | 
					class NetlifyHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "netlify"
 | 
					    CHANNEL_NAME = "netlify"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/netlify?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/netlify?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "netlify"
 | 
					    WEBHOOK_DIR_NAME = "netlify"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class NewRelicHookTests(WebhookTestCase):
 | 
					class NewRelicHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "newrelic"
 | 
					    CHANNEL_NAME = "newrelic"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/newrelic?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/newrelic?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "newrelic"
 | 
					    WEBHOOK_DIR_NAME = "newrelic"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ from zerver.webhooks.opbeat.view import get_value
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class OpbeatHookTests(WebhookTestCase):
 | 
					class OpbeatHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "opbeat"
 | 
					    CHANNEL_NAME = "opbeat"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/opbeat?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/opbeat?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "opbeat"
 | 
					    WEBHOOK_DIR_NAME = "opbeat"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class OpenCollectiveHookTests(WebhookTestCase):
 | 
					class OpenCollectiveHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "test"
 | 
					    CHANNEL_NAME = "test"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/opencollective?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/opencollective?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "opencollective"
 | 
					    WEBHOOK_DIR_NAME = "opencollective"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class OpsgenieHookTests(WebhookTestCase):
 | 
					class OpsgenieHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "opsgenie"
 | 
					    CHANNEL_NAME = "opsgenie"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/opsgenie?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/opsgenie?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "opsgenie"
 | 
					    WEBHOOK_DIR_NAME = "opsgenie"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PagerDutyHookTests(WebhookTestCase):
 | 
					class PagerDutyHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "pagerduty"
 | 
					    CHANNEL_NAME = "pagerduty"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/pagerduty?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/pagerduty?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "pagerduty"
 | 
					    WEBHOOK_DIR_NAME = "pagerduty"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PapertrailHookTests(WebhookTestCase):
 | 
					class PapertrailHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "papertrail"
 | 
					    CHANNEL_NAME = "papertrail"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/papertrail?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/papertrail?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "papertrail"
 | 
					    WEBHOOK_DIR_NAME = "papertrail"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,7 @@ IGNORED_EVENTS = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PatreonHookTests(WebhookTestCase):
 | 
					class PatreonHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "Patreon"
 | 
					    CHANNEL_NAME = "Patreon"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/patreon?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/patreon?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "patreon"
 | 
					    WEBHOOK_DIR_NAME = "patreon"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PingdomHookTests(WebhookTestCase):
 | 
					class PingdomHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "pingdom"
 | 
					    CHANNEL_NAME = "pingdom"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/pingdom?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/pingdom?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "pingdom"
 | 
					    WEBHOOK_DIR_NAME = "pingdom"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,7 @@ from zerver.webhooks.pivotal.view import api_pivotal_webhook_v5
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PivotalV3HookTests(WebhookTestCase):
 | 
					class PivotalV3HookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "pivotal"
 | 
					    CHANNEL_NAME = "pivotal"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/pivotal?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/pivotal?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "pivotal"
 | 
					    WEBHOOK_DIR_NAME = "pivotal"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -112,7 +112,7 @@ class PivotalV3HookTests(WebhookTestCase):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PivotalV5HookTests(WebhookTestCase):
 | 
					class PivotalV5HookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "pivotal"
 | 
					    CHANNEL_NAME = "pivotal"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/pivotal?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/pivotal?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "pivotal"
 | 
					    WEBHOOK_DIR_NAME = "pivotal"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class RadarrHookTests(WebhookTestCase):
 | 
					class RadarrHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "radarr"
 | 
					    CHANNEL_NAME = "radarr"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/radarr?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/radarr?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "radarr"
 | 
					    WEBHOOK_DIR_NAME = "radarr"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class RaygunHookTests(WebhookTestCase):
 | 
					class RaygunHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "raygun"
 | 
					    CHANNEL_NAME = "raygun"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/raygun?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/raygun?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "raygun"
 | 
					    WEBHOOK_DIR_NAME = "raygun"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ReviewBoardHookTests(WebhookTestCase):
 | 
					class ReviewBoardHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "reviewboard"
 | 
					    CHANNEL_NAME = "reviewboard"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/reviewboard?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/reviewboard?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "reviewboard"
 | 
					    WEBHOOK_DIR_NAME = "reviewboard"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@ from zerver.lib.webhooks.git import COMMITS_LIMIT
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class RhodecodeHookTests(WebhookTestCase):
 | 
					class RhodecodeHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "rhodecode"
 | 
					    CHANNEL_NAME = "rhodecode"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/rhodecode?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/rhodecode?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "rhodecode"
 | 
					    WEBHOOK_DIR_NAME = "rhodecode"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class RundeckHookTests(WebhookTestCase):
 | 
					class RundeckHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "Rundeck"
 | 
					    CHANNEL_NAME = "Rundeck"
 | 
				
			||||||
    TOPIC_NAME = "Global Log Filter Usage"
 | 
					    TOPIC_NAME = "Global Log Filter Usage"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/rundeck?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/rundeck?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "rundeck"
 | 
					    WEBHOOK_DIR_NAME = "rundeck"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SemaphoreHookTests(WebhookTestCase):
 | 
					class SemaphoreHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "semaphore"
 | 
					    CHANNEL_NAME = "semaphore"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/semaphore?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/semaphore?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "semaphore"
 | 
					    WEBHOOK_DIR_NAME = "semaphore"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SentryHookTests(WebhookTestCase):
 | 
					class SentryHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "sentry"
 | 
					    CHANNEL_NAME = "sentry"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/sentry?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/sentry?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "sentry"
 | 
					    WEBHOOK_DIR_NAME = "sentry"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,7 @@ EXPECTED_MESSAGE = "**slack_user**: test"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SlackWebhookTests(WebhookTestCase):
 | 
					class SlackWebhookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "slack"
 | 
					    CHANNEL_NAME = "slack"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/slack?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/slack?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "slack"
 | 
					    WEBHOOK_DIR_NAME = "slack"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -50,7 +50,7 @@ class SlackWebhookTests(WebhookTestCase):
 | 
				
			|||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_slack_channels_map_to_topics_false(self) -> None:
 | 
					    def test_slack_channels_map_to_topics_false(self) -> None:
 | 
				
			||||||
        self.STREAM_NAME = "general"
 | 
					        self.CHANNEL_NAME = "general"
 | 
				
			||||||
        self.url = self.build_webhook_url(channels_map_to_topics="0")
 | 
					        self.url = self.build_webhook_url(channels_map_to_topics="0")
 | 
				
			||||||
        self.check_webhook(
 | 
					        self.check_webhook(
 | 
				
			||||||
            "message_info",
 | 
					            "message_info",
 | 
				
			||||||
@@ -60,7 +60,7 @@ class SlackWebhookTests(WebhookTestCase):
 | 
				
			|||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_slack_channels_map_to_topics_false_and_user_specified_topic(self) -> None:
 | 
					    def test_slack_channels_map_to_topics_false_and_user_specified_topic(self) -> None:
 | 
				
			||||||
        self.STREAM_NAME = "general"
 | 
					        self.CHANNEL_NAME = "general"
 | 
				
			||||||
        self.url = self.build_webhook_url(topic="test", channels_map_to_topics="0")
 | 
					        self.url = self.build_webhook_url(topic="test", channels_map_to_topics="0")
 | 
				
			||||||
        expected_topic_name = "test"
 | 
					        expected_topic_name = "test"
 | 
				
			||||||
        self.check_webhook(
 | 
					        self.check_webhook(
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SlackIncomingHookTests(WebhookTestCase):
 | 
					class SlackIncomingHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "slack_incoming"
 | 
					    CHANNEL_NAME = "slack_incoming"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/slack_incoming?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/slack_incoming?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "slack_incoming"
 | 
					    WEBHOOK_DIR_NAME = "slack_incoming"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -28,7 +28,7 @@ Hello, world.
 | 
				
			|||||||
            ("*foo*a*bar*", "*foo*a*bar*"),
 | 
					            ("*foo*a*bar*", "*foo*a*bar*"),
 | 
				
			||||||
            ("some _foo_ word", "some *foo* word"),
 | 
					            ("some _foo_ word", "some *foo* word"),
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
        self.subscribe(self.test_user, self.STREAM_NAME)
 | 
					        self.subscribe(self.test_user, self.CHANNEL_NAME)
 | 
				
			||||||
        for input_value, output_value in tests:
 | 
					        for input_value, output_value in tests:
 | 
				
			||||||
            payload = {"text": input_value}
 | 
					            payload = {"text": input_value}
 | 
				
			||||||
            msg = self.send_webhook_payload(
 | 
					            msg = self.send_webhook_payload(
 | 
				
			||||||
@@ -39,7 +39,7 @@ Hello, world.
 | 
				
			|||||||
            )
 | 
					            )
 | 
				
			||||||
            self.assert_stream_message(
 | 
					            self.assert_stream_message(
 | 
				
			||||||
                message=msg,
 | 
					                message=msg,
 | 
				
			||||||
                stream_name=self.STREAM_NAME,
 | 
					                stream_name=self.CHANNEL_NAME,
 | 
				
			||||||
                topic_name="(no topic)",
 | 
					                topic_name="(no topic)",
 | 
				
			||||||
                content=output_value,
 | 
					                content=output_value,
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SolanoHookTests(WebhookTestCase):
 | 
					class SolanoHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "solano labs"
 | 
					    CHANNEL_NAME = "solano labs"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/solano?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/solano?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "solano"
 | 
					    WEBHOOK_DIR_NAME = "solano"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SonarqubeHookTests(WebhookTestCase):
 | 
					class SonarqubeHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "SonarQube"
 | 
					    CHANNEL_NAME = "SonarQube"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/sonarqube?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/sonarqube?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "sonarqube"
 | 
					    WEBHOOK_DIR_NAME = "sonarqube"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SonarrHookTests(WebhookTestCase):
 | 
					class SonarrHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "sonarr"
 | 
					    CHANNEL_NAME = "sonarr"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/sonarr?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/sonarr?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "sonarr"
 | 
					    WEBHOOK_DIR_NAME = "sonarr"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SplunkHookTests(WebhookTestCase):
 | 
					class SplunkHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "splunk"
 | 
					    CHANNEL_NAME = "splunk"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/splunk?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/splunk?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "splunk"
 | 
					    WEBHOOK_DIR_NAME = "splunk"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class StatuspageHookTests(WebhookTestCase):
 | 
					class StatuspageHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "statuspage-test"
 | 
					    CHANNEL_NAME = "statuspage-test"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/statuspage?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/statuspage?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "statuspage"
 | 
					    WEBHOOK_DIR_NAME = "statuspage"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class StripeHookTests(WebhookTestCase):
 | 
					class StripeHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "test"
 | 
					    CHANNEL_NAME = "test"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/stripe?&api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/stripe?&api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "stripe"
 | 
					    WEBHOOK_DIR_NAME = "stripe"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TaigaHookTests(WebhookTestCase):
 | 
					class TaigaHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "taiga"
 | 
					    CHANNEL_NAME = "taiga"
 | 
				
			||||||
    TOPIC_NAME = "subject"
 | 
					    TOPIC_NAME = "subject"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/taiga?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/taiga?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "taiga"
 | 
					    WEBHOOK_DIR_NAME = "taiga"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,7 @@ from zerver.webhooks.teamcity.view import MISCONFIGURED_PAYLOAD_TYPE_ERROR_MESSA
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TeamCityHookTests(WebhookTestCase):
 | 
					class TeamCityHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "teamcity"
 | 
					    CHANNEL_NAME = "teamcity"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/teamcity?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/teamcity?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    TOPIC_NAME = "Project :: Compile"
 | 
					    TOPIC_NAME = "Project :: Compile"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "teamcity"
 | 
					    WEBHOOK_DIR_NAME = "teamcity"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ThinkstHookTests(WebhookTestCase):
 | 
					class ThinkstHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "thinkst"
 | 
					    CHANNEL_NAME = "thinkst"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/thinkst?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/thinkst?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "thinkst"
 | 
					    WEBHOOK_DIR_NAME = "thinkst"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TransifexHookTests(WebhookTestCase):
 | 
					class TransifexHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "transifex"
 | 
					    CHANNEL_NAME = "transifex"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/transifex?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/transifex?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "transifex"
 | 
					    WEBHOOK_DIR_NAME = "transifex"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TravisHookTests(WebhookTestCase):
 | 
					class TravisHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "travis"
 | 
					    CHANNEL_NAME = "travis"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/travis?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/travis?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "travis"
 | 
					    WEBHOOK_DIR_NAME = "travis"
 | 
				
			||||||
    TOPIC_NAME = "builds"
 | 
					    TOPIC_NAME = "builds"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TrelloHookTests(WebhookTestCase):
 | 
					class TrelloHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "trello"
 | 
					    CHANNEL_NAME = "trello"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/trello?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/trello?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "trello"
 | 
					    WEBHOOK_DIR_NAME = "trello"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class UpdownHookTests(WebhookTestCase):
 | 
					class UpdownHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "updown"
 | 
					    CHANNEL_NAME = "updown"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/updown?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/updown?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "updown"
 | 
					    WEBHOOK_DIR_NAME = "updown"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -27,7 +27,7 @@ class UpdownHookTests(WebhookTestCase):
 | 
				
			|||||||
        down_content = "Service is `down`. It returned a 500 error at 2016-02-07 13:11:43 UTC."
 | 
					        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."
 | 
					        up_content = "Service is `up` again after 1 second."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.subscribe(self.test_user, self.STREAM_NAME)
 | 
					        self.subscribe(self.test_user, self.CHANNEL_NAME)
 | 
				
			||||||
        payload = self.get_body("check_multiple_events")
 | 
					        payload = self.get_body("check_multiple_events")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        msg = self.send_webhook_payload(
 | 
					        msg = self.send_webhook_payload(
 | 
				
			||||||
@@ -40,7 +40,7 @@ class UpdownHookTests(WebhookTestCase):
 | 
				
			|||||||
        msg = self.get_second_to_last_message()
 | 
					        msg = self.get_second_to_last_message()
 | 
				
			||||||
        self.assert_stream_message(
 | 
					        self.assert_stream_message(
 | 
				
			||||||
            message=msg,
 | 
					            message=msg,
 | 
				
			||||||
            stream_name=self.STREAM_NAME,
 | 
					            stream_name=self.CHANNEL_NAME,
 | 
				
			||||||
            topic_name=topic_name,
 | 
					            topic_name=topic_name,
 | 
				
			||||||
            content=down_content,
 | 
					            content=down_content,
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
@@ -48,7 +48,7 @@ class UpdownHookTests(WebhookTestCase):
 | 
				
			|||||||
        msg = self.get_last_message()
 | 
					        msg = self.get_last_message()
 | 
				
			||||||
        self.assert_stream_message(
 | 
					        self.assert_stream_message(
 | 
				
			||||||
            message=msg,
 | 
					            message=msg,
 | 
				
			||||||
            stream_name=self.STREAM_NAME,
 | 
					            stream_name=self.CHANNEL_NAME,
 | 
				
			||||||
            topic_name=topic_name,
 | 
					            topic_name=topic_name,
 | 
				
			||||||
            content=up_content,
 | 
					            content=up_content,
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@ from zerver.webhooks.uptimerobot.view import MISCONFIGURED_PAYLOAD_ERROR_MESSAGE
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class UptimeRobotHookTests(WebhookTestCase):
 | 
					class UptimeRobotHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "uptimerobot"
 | 
					    CHANNEL_NAME = "uptimerobot"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/uptimerobot?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/uptimerobot?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "uptimerobot"
 | 
					    WEBHOOK_DIR_NAME = "uptimerobot"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WekanHookTests(WebhookTestCase):
 | 
					class WekanHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "wekan"
 | 
					    CHANNEL_NAME = "wekan"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/wekan?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/wekan?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    FIXTURE_DIR_NAME = "wekan"
 | 
					    FIXTURE_DIR_NAME = "wekan"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WordPressHookTests(WebhookTestCase):
 | 
					class WordPressHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "wordpress"
 | 
					    CHANNEL_NAME = "wordpress"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/wordpress?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/wordpress?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "wordpress"
 | 
					    WEBHOOK_DIR_NAME = "wordpress"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -84,7 +84,7 @@ class WordPressHookTests(WebhookTestCase):
 | 
				
			|||||||
        # return if no params are sent. The fixture for this test is an empty file.
 | 
					        # return if no params are sent. The fixture for this test is an empty file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # subscribe to the target stream
 | 
					        # subscribe to the target stream
 | 
				
			||||||
        self.subscribe(self.test_user, self.STREAM_NAME)
 | 
					        self.subscribe(self.test_user, self.CHANNEL_NAME)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # post to the webhook url
 | 
					        # post to the webhook url
 | 
				
			||||||
        result = self.client_post(
 | 
					        result = self.client_post(
 | 
				
			||||||
@@ -100,7 +100,7 @@ class WordPressHookTests(WebhookTestCase):
 | 
				
			|||||||
        # Similar to unknown_action_no_data, except the fixture contains valid blog post
 | 
					        # Similar to unknown_action_no_data, except the fixture contains valid blog post
 | 
				
			||||||
        # params but without the hook parameter. This should also return an error.
 | 
					        # params but without the hook parameter. This should also return an error.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.subscribe(self.test_user, self.STREAM_NAME)
 | 
					        self.subscribe(self.test_user, self.CHANNEL_NAME)
 | 
				
			||||||
        result = self.client_post(
 | 
					        result = self.client_post(
 | 
				
			||||||
            self.url,
 | 
					            self.url,
 | 
				
			||||||
            self.get_body("unknown_action_no_hook_provided"),
 | 
					            self.get_body("unknown_action_no_hook_provided"),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@ from zerver.webhooks.zabbix.view import MISCONFIGURED_PAYLOAD_ERROR_MESSAGE
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ZabbixHookTests(WebhookTestCase):
 | 
					class ZabbixHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "zabbix"
 | 
					    CHANNEL_NAME = "zabbix"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/zabbix?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/zabbix?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "zabbix"
 | 
					    WEBHOOK_DIR_NAME = "zabbix"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ZapierHookTests(WebhookTestCase):
 | 
					class ZapierHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "zapier"
 | 
					    CHANNEL_NAME = "zapier"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/zapier?stream={stream}&api_key={api_key}"
 | 
					    URL_TEMPLATE = "/api/v1/external/zapier?stream={stream}&api_key={api_key}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "zapier"
 | 
					    WEBHOOK_DIR_NAME = "zapier"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -25,7 +25,7 @@ class ZapierHookTests(WebhookTestCase):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ZapierZulipAppTests(WebhookTestCase):
 | 
					class ZapierZulipAppTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "zapier"
 | 
					    CHANNEL_NAME = "zapier"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/zapier?api_key={api_key}&stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/zapier?api_key={api_key}&stream={stream}"
 | 
				
			||||||
    WEBHOOK_DIR_NAME = "zapier"
 | 
					    WEBHOOK_DIR_NAME = "zapier"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@ from zerver.lib.test_classes import WebhookTestCase
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ZenDeskHookTests(WebhookTestCase):
 | 
					class ZenDeskHookTests(WebhookTestCase):
 | 
				
			||||||
    STREAM_NAME = "zendesk"
 | 
					    CHANNEL_NAME = "zendesk"
 | 
				
			||||||
    URL_TEMPLATE = "/api/v1/external/zendesk?stream={stream}"
 | 
					    URL_TEMPLATE = "/api/v1/external/zendesk?stream={stream}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @override
 | 
					    @override
 | 
				
			||||||
@@ -15,7 +15,7 @@ class ZenDeskHookTests(WebhookTestCase):
 | 
				
			|||||||
            "ticket_title": self.TICKET_TITLE,
 | 
					            "ticket_title": self.TICKET_TITLE,
 | 
				
			||||||
            "ticket_id": str(self.TICKET_ID),
 | 
					            "ticket_id": str(self.TICKET_ID),
 | 
				
			||||||
            "message": self.MESSAGE,
 | 
					            "message": self.MESSAGE,
 | 
				
			||||||
            "stream": self.STREAM_NAME,
 | 
					            "stream": self.CHANNEL_NAME,
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def do_test(self, expected_topic: str, expected_message: str) -> None:
 | 
					    def do_test(self, expected_topic: str, expected_message: str) -> None:
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user