diff --git a/docs/webhook-walkthrough.md b/docs/webhook-walkthrough.md index 4b1fa5d5a5..e3b59478bf 100644 --- a/docs/webhook-walkthrough.md +++ b/docs/webhook-walkthrough.md @@ -421,7 +421,7 @@ def test_unknown_action_no_data(self): # return if no params are sent. The fixture for this test is an empty file. # subscribe to the target stream - self.subscribe_to_stream(self.TEST_USER_EMAIL, self.STREAM_NAME) + self.subscribe(self.test_user, self.STREAM_NAME) # post to the webhook url post_params = {'stream_name': self.STREAM_NAME, diff --git a/zerver/lib/test_classes.py b/zerver/lib/test_classes.py index 28a8a71cc5..8fea781a47 100644 --- a/zerver/lib/test_classes.py +++ b/zerver/lib/test_classes.py @@ -520,17 +520,17 @@ class ZulipTestCase(TestCase): result = self.client_post("/api/v1/users/me/subscriptions", post_data, **self.api_auth(email)) return result - def send_json_payload(self, email, url, payload, stream_name=None, **post_params): - # type: (Text, Text, Union[Text, Dict[str, Any]], Optional[Text], **Any) -> Message + def send_json_payload(self, user_profile, url, payload, stream_name=None, **post_params): + # type: (UserProfile, Text, Union[Text, Dict[str, Any]], Optional[Text], **Any) -> Message if stream_name is not None: - self.subscribe_to_stream(email, stream_name) + self.subscribe(user_profile, stream_name) result = self.client_post(url, payload, **post_params) self.assert_json_success(result) # Check the correct message was sent msg = self.get_last_message() - self.assertEqual(msg.sender.email, email) + self.assertEqual(msg.sender.email, user_profile.email) if stream_name is not None: self.assertEqual(get_display_recipient(msg.recipient), stream_name) # TODO: should also validate recipient for private messages @@ -571,6 +571,11 @@ class WebhookTestCase(ZulipTestCase): URL_TEMPLATE = None # type: Optional[Text] FIXTURE_DIR_NAME = None # type: Optional[Text] + @property + def test_user(self): + # type: () -> UserProfile + return get_user_profile_by_email(self.TEST_USER_EMAIL) + def setUp(self): # type: () -> None self.url = self.build_webhook_url() @@ -581,7 +586,7 @@ class WebhookTestCase(ZulipTestCase): payload = self.get_body(fixture_name) if content_type is not None: kwargs['content_type'] = content_type - msg = self.send_json_payload(self.TEST_USER_EMAIL, self.url, payload, + msg = self.send_json_payload(self.test_user, self.url, payload, self.STREAM_NAME, **kwargs) self.do_test_subject(msg, expected_subject) self.do_test_message(msg, expected_message) @@ -595,7 +600,7 @@ class WebhookTestCase(ZulipTestCase): if content_type is not None: kwargs['content_type'] = content_type - msg = self.send_json_payload(self.TEST_USER_EMAIL, self.url, payload, + msg = self.send_json_payload(self.test_user, self.url, payload, stream_name=None, **kwargs) self.do_test_message(msg, expected_message) diff --git a/zerver/webhooks/github/tests.py b/zerver/webhooks/github/tests.py index 22943310a3..429f15c540 100644 --- a/zerver/webhooks/github/tests.py +++ b/zerver/webhooks/github/tests.py @@ -28,7 +28,7 @@ class GithubV1HookTests(WebhookTestCase): # We subscribe to the stream in this test, even though # it won't get written, to avoid failing for the wrong # reason. - self.subscribe_to_stream(self.TEST_USER_EMAIL, self.STREAM_NAME) + self.subscribe(self.test_user, self.STREAM_NAME) prior_count = Message.objects.count() @@ -168,7 +168,7 @@ class GithubV2HookTests(WebhookTestCase): # We subscribe to the stream in this test, even though # it won't get written, to avoid failing for the wrong # reason. - self.subscribe_to_stream(self.TEST_USER_EMAIL, self.STREAM_NAME) + self.subscribe(self.test_user, self.STREAM_NAME) prior_count = Message.objects.count() diff --git a/zerver/webhooks/jira/tests.py b/zerver/webhooks/jira/tests.py index 097af8ff53..bce09c2ca0 100644 --- a/zerver/webhooks/jira/tests.py +++ b/zerver/webhooks/jira/tests.py @@ -28,7 +28,7 @@ class JiraHookTests(WebhookTestCase): # type: () -> None api_key = self.get_api_key(self.TEST_USER_EMAIL) url = "/api/v1/external/jira?api_key=%s&stream=jira_custom" % (api_key,) - msg = self.send_json_payload(self.TEST_USER_EMAIL, + msg = self.send_json_payload(self.test_user, url, self.get_body('created_v2'), stream_name="jira_custom", diff --git a/zerver/webhooks/travis/tests.py b/zerver/webhooks/travis/tests.py index 907d3ebdf3..07a36b4bdc 100644 --- a/zerver/webhooks/travis/tests.py +++ b/zerver/webhooks/travis/tests.py @@ -2,6 +2,7 @@ from typing import Text from six.moves import urllib from zerver.lib.test_classes import WebhookTestCase +from zerver.models import get_realm, get_user class TravisHookTests(WebhookTestCase): STREAM_NAME = 'travis' @@ -31,7 +32,7 @@ class TravisHookTests(WebhookTestCase): def test_ignore_travis_pull_request_by_default(self): # type: () -> None - self.subscribe_to_stream(self.TEST_USER_EMAIL, self.STREAM_NAME) + self.subscribe(self.test_user, self.STREAM_NAME) result = self.client_post( self.url, self.get_body('pull_request'), diff --git a/zerver/webhooks/wordpress/tests.py b/zerver/webhooks/wordpress/tests.py index 4cb11de0c3..063e34b3ed 100644 --- a/zerver/webhooks/wordpress/tests.py +++ b/zerver/webhooks/wordpress/tests.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from six import text_type from zerver.lib.test_classes import WebhookTestCase +from zerver.models import get_realm, get_user class WordPressHookTests(WebhookTestCase): STREAM_NAME = 'wordpress' @@ -73,7 +74,7 @@ class WordPressHookTests(WebhookTestCase): # return if no params are sent. The fixture for this test is an empty file. # subscribe to the target stream - self.subscribe_to_stream(self.TEST_USER_EMAIL, self.STREAM_NAME) + self.subscribe(self.test_user, self.STREAM_NAME) # post to the webhook url post_params = {'stream_name': self.STREAM_NAME, @@ -89,7 +90,7 @@ class WordPressHookTests(WebhookTestCase): # 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. - self.subscribe_to_stream(self.TEST_USER_EMAIL, self.STREAM_NAME) + self.subscribe(self.test_user, self.STREAM_NAME) post_params = {'stream_name': self.STREAM_NAME, 'content_type': 'application/x-www-form-urlencoded'} result = self.client_post(self.url, 'unknown_action', **post_params)