2017-11-16 00:43:10 +01:00
from mock import MagicMock , patch
2016-10-25 14:50:42 +02:00
from zerver . lib . test_classes import WebhookTestCase
2017-11-16 00:43:10 +01:00
from zerver . lib . webhooks . git import COMMITS_LIMIT
2016-10-25 14:50:42 +02:00
2020-01-14 22:06:24 +01:00
2016-10-25 14:50:42 +02:00
class GithubWebhookTest ( WebhookTestCase ) :
STREAM_NAME = ' github '
2016-11-14 21:06:39 +01:00
URL_TEMPLATE = " /api/v1/external/github?stream= {stream} &api_key= {api_key} "
2018-04-18 21:34:30 +02:00
FIXTURE_DIR_NAME = ' github '
2020-04-09 21:51:58 +02:00
EXPECTED_TOPIC_REPO_EVENTS = " public-repo "
EXPECTED_TOPIC_ISSUE_EVENTS = " public-repo / Issue #2 Spelling error in the README file "
EXPECTED_TOPIC_PR_EVENTS = " public-repo / PR #1 Update the README with new information "
EXPECTED_TOPIC_DEPLOYMENT_EVENTS = " public-repo / Deployment on production "
EXPECTED_TOPIC_ORGANIZATION_EVENTS = " baxterandthehackers organization "
EXPECTED_TOPIC_BRANCH_EVENTS = " public-repo / changes "
EXPECTED_TOPIC_WIKI_EVENTS = " public-repo / Wiki Pages "
2016-10-25 14:50:42 +02:00
2017-11-04 07:47:46 +01:00
def test_ping_event ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " GitHub webhook has been successfully configured by TomaszKolek. "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' ping ' , self . EXPECTED_TOPIC_REPO_EVENTS , expected_message )
2017-02-01 00:37:13 +01:00
2019-06-06 06:51:38 +02:00
def test_star_event ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " Codertocat starred the repository. "
expected_topic = " Hello-World "
2019-06-06 06:51:38 +02:00
self . send_and_test_stream_message ( ' star ' , expected_topic , expected_message )
2017-11-04 07:47:46 +01:00
def test_ping_organization_event ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " GitHub webhook has been successfully configured by eeshangarg. "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' ping__organization ' , ' zulip-test-org ' , expected_message )
2017-07-17 04:03:54 +02:00
2017-11-04 07:47:46 +01:00
def test_push_delete_branch ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " eeshangarg [deleted](https://github.com/eeshangarg/public-repo/compare/2e8cf535fb38...000000000000) the branch feature. "
self . send_and_test_stream_message ( ' push__delete_branch ' , " public-repo / feature " , expected_message )
2017-05-16 04:38:25 +02:00
2017-11-04 07:47:46 +01:00
def test_push_local_branch_without_commits ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " eeshangarg [pushed](https://github.com/eeshangarg/public-repo/compare/feature) the branch feature. "
self . send_and_test_stream_message ( ' push__local_branch_without_commits ' , " public-repo / feature " , expected_message )
2017-05-17 02:19:33 +02:00
2017-11-04 07:47:46 +01:00
def test_push_1_commit ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker [pushed](https://github.com/baxterthehacker/public-repo/compare/9049f1265b7d...0d1a26e67d8f) 1 commit to branch changes. \n \n * Update README.md ([0d1a26e](https://github.com/baxterthehacker/public-repo/commit/0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c)) "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' push__1_commit ' , self . EXPECTED_TOPIC_BRANCH_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2017-11-04 07:47:46 +01:00
def test_push_1_commit_without_username ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " eeshangarg [pushed](https://github.com/eeshangarg/public-repo/compare/0383613da871...2e8cf535fb38) 1 commit to branch changes. Commits by John Snow (1). \n \n * Update the README ([2e8cf53](https://github.com/eeshangarg/public-repo/commit/2e8cf535fb38a3dab2476cdf856efda904ad4c94)) "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' push__1_commit_without_username ' , self . EXPECTED_TOPIC_BRANCH_EVENTS , expected_message )
2017-04-29 08:16:07 +02:00
2017-11-04 07:47:46 +01:00
def test_push_1_commit_filtered_by_branches ( self ) - > None :
2017-03-25 03:23:15 +01:00
self . url = self . build_webhook_url ( ' master,changes ' )
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker [pushed](https://github.com/baxterthehacker/public-repo/compare/9049f1265b7d...0d1a26e67d8f) 1 commit to branch changes. \n \n * Update README.md ([0d1a26e](https://github.com/baxterthehacker/public-repo/commit/0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c)) "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' push__1_commit ' , self . EXPECTED_TOPIC_BRANCH_EVENTS , expected_message )
2017-03-25 03:23:15 +01:00
2017-11-04 07:47:46 +01:00
def test_push_multiple_comitters ( self ) - > None :
2020-04-09 21:51:58 +02:00
commits_info = ' * Update README.md ([0d1a26e](https://github.com/baxterthehacker/public-repo/commit/0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c)) \n '
expected_message = """ baxterthehacker [pushed](https://github.com/baxterthehacker/public-repo/compare/9049f1265b7d...0d1a26e67d8f) 6 commits to branch changes. Commits by Tomasz (3), Ben (2) and baxterthehacker (1). \n \n {} * Update README.md ([0d1a26e](https://github.com/baxterthehacker/public-repo/commit/0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c)) """ . format ( commits_info * 5 )
2017-04-05 09:12:19 +02:00
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' push__multiple_committers ' , self . EXPECTED_TOPIC_BRANCH_EVENTS , expected_message )
2017-04-05 09:12:19 +02:00
2017-11-04 07:47:46 +01:00
def test_push_multiple_comitters_with_others ( self ) - > None :
2020-04-09 21:51:58 +02:00
commits_info = ' * Update README.md ([0d1a26e](https://github.com/baxterthehacker/public-repo/commit/0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c)) \n '
expected_message = """ baxterthehacker [pushed](https://github.com/baxterthehacker/public-repo/compare/9049f1265b7d...0d1a26e67d8f) 10 commits to branch changes. Commits by Tomasz (4), Ben (3), James (2) and others (1). \n \n {} * Update README.md ([0d1a26e](https://github.com/baxterthehacker/public-repo/commit/0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c)) """ . format ( commits_info * 9 )
2017-04-05 09:12:19 +02:00
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' push__multiple_committers_with_others ' , self . EXPECTED_TOPIC_BRANCH_EVENTS , expected_message )
2017-04-05 09:12:19 +02:00
2017-11-04 07:47:46 +01:00
def test_push_multiple_comitters_filtered_by_branches ( self ) - > None :
2017-04-21 23:35:40 +02:00
self . url = self . build_webhook_url ( ' master,changes ' )
2020-04-09 21:51:58 +02:00
commits_info = ' * Update README.md ([0d1a26e](https://github.com/baxterthehacker/public-repo/commit/0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c)) \n '
expected_message = """ baxterthehacker [pushed](https://github.com/baxterthehacker/public-repo/compare/9049f1265b7d...0d1a26e67d8f) 6 commits to branch changes. Commits by Tomasz (3), Ben (2) and baxterthehacker (1). \n \n {} * Update README.md ([0d1a26e](https://github.com/baxterthehacker/public-repo/commit/0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c)) """ . format ( commits_info * 5 )
2017-04-21 23:35:40 +02:00
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' push__multiple_committers ' , self . EXPECTED_TOPIC_BRANCH_EVENTS , expected_message )
2017-04-21 23:35:40 +02:00
2017-11-04 07:47:46 +01:00
def test_push_multiple_comitters_with_others_filtered_by_branches ( self ) - > None :
2017-04-21 23:35:40 +02:00
self . url = self . build_webhook_url ( ' master,changes ' )
2020-04-09 21:51:58 +02:00
commits_info = ' * Update README.md ([0d1a26e](https://github.com/baxterthehacker/public-repo/commit/0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c)) \n '
expected_message = """ baxterthehacker [pushed](https://github.com/baxterthehacker/public-repo/compare/9049f1265b7d...0d1a26e67d8f) 10 commits to branch changes. Commits by Tomasz (4), Ben (3), James (2) and others (1). \n \n {} * Update README.md ([0d1a26e](https://github.com/baxterthehacker/public-repo/commit/0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c)) """ . format ( commits_info * 9 )
2017-04-21 23:35:40 +02:00
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' push__multiple_committers_with_others ' , self . EXPECTED_TOPIC_BRANCH_EVENTS , expected_message )
2017-04-21 23:35:40 +02:00
2017-11-04 07:47:46 +01:00
def test_push_50_commits ( self ) - > None :
2017-03-15 10:15:03 +01:00
commit_info = " * Update README.md ([0d1a26e](https://github.com/baxterthehacker/public-repo/commit/0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c)) \n "
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker [pushed](https://github.com/baxterthehacker/public-repo/compare/9049f1265b7d...0d1a26e67d8f) 50 commits to branch changes. \n \n {} [and 30 more commit(s)] " . format (
2016-10-25 14:50:42 +02:00
commit_info * COMMITS_LIMIT
)
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' push__50_commits ' , self . EXPECTED_TOPIC_BRANCH_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2017-11-04 07:47:46 +01:00
def test_push_50_commits_filtered_by_branches ( self ) - > None :
2017-04-21 23:35:40 +02:00
self . url = self . build_webhook_url ( branches = ' master,changes ' )
2017-03-25 03:23:15 +01:00
commit_info = " * Update README.md ([0d1a26e](https://github.com/baxterthehacker/public-repo/commit/0d1a26e67d8f5eaf1f6ba5c57fc3c7d91ac0fd1c)) \n "
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker [pushed](https://github.com/baxterthehacker/public-repo/compare/9049f1265b7d...0d1a26e67d8f) 50 commits to branch changes. \n \n {} [and 30 more commit(s)] " . format (
2017-03-25 03:23:15 +01:00
commit_info * COMMITS_LIMIT
)
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' push__50_commits ' , self . EXPECTED_TOPIC_BRANCH_EVENTS , expected_message )
2017-03-25 03:23:15 +01:00
2017-11-04 07:47:46 +01:00
def test_commit_comment_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker [commented](https://github.com/baxterthehacker/public-repo/commit/9049f1265b7d61be4a8904a9a27120d2064dab3b#commitcomment-11056394) on [9049f12](https://github.com/baxterthehacker/public-repo/commit/9049f1265b7d61be4a8904a9a27120d2064dab3b): \n ~~~ quote \n This is a really good change! :+1: \n ~~~ "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' commit_comment ' , self . EXPECTED_TOPIC_REPO_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2017-11-04 07:47:46 +01:00
def test_create_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker created tag 0.0.1. "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' create ' , self . EXPECTED_TOPIC_REPO_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2017-11-04 07:47:46 +01:00
def test_delete_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker deleted tag simple-tag. "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' delete ' , self . EXPECTED_TOPIC_REPO_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2017-11-04 07:47:46 +01:00
def test_deployment_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker created new deployment. "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' deployment ' , self . EXPECTED_TOPIC_DEPLOYMENT_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2017-11-04 07:47:46 +01:00
def test_deployment_status_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " Deployment changed status to success. "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' deployment_status ' , self . EXPECTED_TOPIC_DEPLOYMENT_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2017-11-04 07:47:46 +01:00
def test_fork_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterandthehackers forked [public-repo](https://github.com/baxterandthehackers/public-repo). "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' fork ' , self . EXPECTED_TOPIC_REPO_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2017-11-04 07:47:46 +01:00
def test_issue_comment_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker [commented](https://github.com/baxterthehacker/public-repo/issues/2#issuecomment-99262140) on [Issue #2](https://github.com/baxterthehacker/public-repo/issues/2): \n \n ~~~ quote \n You are totally right! I ' ll get this fixed right away. \n ~~~ "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' issue_comment ' , self . EXPECTED_TOPIC_ISSUE_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2018-09-27 18:57:09 +02:00
def test_issue_comment_deleted_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " Scheduler / Issue #5 This is a new issue "
expected_message = " eeshangarg deleted a [comment](https://github.com/eeshangarg/Scheduler/issues/5#issuecomment-425164194) on [Issue #5](https://github.com/eeshangarg/Scheduler/issues/5): \n \n ~~~ quote \n This is a comment on this new issue. \n ~~~ "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' issue_comment__deleted ' , expected_topic , expected_message )
2018-09-27 18:57:09 +02:00
2018-07-20 21:36:18 +02:00
def test_issue_comment_msg_with_custom_topic_in_url ( self ) - > None :
self . url = self . build_webhook_url ( topic = ' notifications ' )
2020-04-09 21:51:58 +02:00
expected_topic = " notifications "
expected_message = " baxterthehacker [commented](https://github.com/baxterthehacker/public-repo/issues/2#issuecomment-99262140) on [Issue #2 Spelling error in the README file](https://github.com/baxterthehacker/public-repo/issues/2): \n \n ~~~ quote \n You are totally right! I ' ll get this fixed right away. \n ~~~ "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' issue_comment ' , expected_topic , expected_message )
2018-07-20 21:36:18 +02:00
2017-11-04 07:47:46 +01:00
def test_issue_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker opened [Issue #2](https://github.com/baxterthehacker/public-repo/issues/2): \n \n ~~~ quote \n It looks like you accidentally spelled ' commit ' with two ' t ' s. \n ~~~ "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' issues ' , self . EXPECTED_TOPIC_ISSUE_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2018-07-20 21:36:18 +02:00
def test_issue_msg_with_custom_topic_in_url ( self ) - > None :
self . url = self . build_webhook_url ( topic = ' notifications ' )
2020-04-09 21:51:58 +02:00
expected_topic = " notifications "
expected_message = " baxterthehacker opened [Issue #2 Spelling error in the README file](https://github.com/baxterthehacker/public-repo/issues/2): \n \n ~~~ quote \n It looks like you accidentally spelled ' commit ' with two ' t ' s. \n ~~~ "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' issues ' , expected_topic , expected_message )
2018-07-20 21:36:18 +02:00
2017-11-04 07:47:46 +01:00
def test_membership_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker added [kdaigle](https://github.com/kdaigle) to the Contractors team. "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' membership ' , self . EXPECTED_TOPIC_ORGANIZATION_EVENTS , expected_message )
2019-03-09 21:06:44 +01:00
def test_membership_removal_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker removed [kdaigle](https://github.com/kdaigle) from the Contractors team. "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' membership__removal ' , self . EXPECTED_TOPIC_ORGANIZATION_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2017-11-04 07:47:46 +01:00
def test_member_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker added [octocat](https://github.com/octocat) to [public-repo](https://github.com/baxterthehacker/public-repo). "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' member ' , self . EXPECTED_TOPIC_REPO_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2017-11-04 07:47:46 +01:00
def test_pull_request_opened_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker opened [PR #1](https://github.com/baxterthehacker/public-repo/pull/1) from `changes` to `master`: \n \n ~~~ quote \n This is a pretty simple change that we need to pull into master. \n ~~~ "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' pull_request__opened ' , self . EXPECTED_TOPIC_PR_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2018-09-26 02:45:29 +02:00
def test_pull_request_opened_with_preassigned_assignee_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " Scheduler / PR #4 Improve README "
expected_message = " eeshangarg opened [PR #4](https://github.com/eeshangarg/Scheduler/pull/4) (assigned to eeshangarg) from `improve-readme-2` to `master`. "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' pull_request__opened_with_preassigned_assignee ' , expected_topic , expected_message )
2018-09-26 02:45:29 +02:00
2018-07-20 21:36:18 +02:00
def test_pull_request_opened_msg_with_custom_topic_in_url ( self ) - > None :
self . url = self . build_webhook_url ( topic = ' notifications ' )
2020-04-09 21:51:58 +02:00
expected_topic = " notifications "
expected_message = " baxterthehacker opened [PR #1 Update the README with new information](https://github.com/baxterthehacker/public-repo/pull/1) from `changes` to `master`: \n \n ~~~ quote \n This is a pretty simple change that we need to pull into master. \n ~~~ "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' pull_request__opened ' , expected_topic , expected_message )
2018-07-20 21:36:18 +02:00
2017-11-04 07:47:46 +01:00
def test_pull_request_synchronized_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker updated [PR #1](https://github.com/baxterthehacker/public-repo/pull/1) from `changes` to `master`. "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' pull_request__synchronized ' , self . EXPECTED_TOPIC_PR_EVENTS , expected_message )
2017-02-02 20:09:57 +01:00
2017-11-04 07:47:46 +01:00
def test_pull_request_closed_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker closed without merge [PR #1](https://github.com/baxterthehacker/public-repo/pull/1). "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' pull_request__closed ' , self . EXPECTED_TOPIC_PR_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2018-07-20 21:36:18 +02:00
def test_pull_request_closed_msg_with_custom_topic_in_url ( self ) - > None :
self . url = self . build_webhook_url ( topic = ' notifications ' )
2020-04-09 21:51:58 +02:00
expected_topic = " notifications "
expected_message = " baxterthehacker closed without merge [PR #1 Update the README with new information](https://github.com/baxterthehacker/public-repo/pull/1). "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' pull_request__closed ' , expected_topic , expected_message )
2018-07-20 21:36:18 +02:00
2017-11-04 07:47:46 +01:00
def test_pull_request_merged_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker merged [PR #1](https://github.com/baxterthehacker/public-repo/pull/1). "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' pull_request__merged ' , self . EXPECTED_TOPIC_PR_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2017-11-04 07:47:46 +01:00
def test_public_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker made [the repository](https://github.com/baxterthehacker/public-repo) public. "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' public ' , self . EXPECTED_TOPIC_REPO_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2017-11-04 07:47:46 +01:00
def test_wiki_pages_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " jasonrudolph: \n * created [Home](https://github.com/baxterthehacker/public-repo/wiki/Home) \n * created [Home](https://github.com/baxterthehacker/public-repo/wiki/Home) "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' gollum__wiki_pages ' , self . EXPECTED_TOPIC_WIKI_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2017-11-04 07:47:46 +01:00
def test_watch_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker starred [the repository](https://github.com/baxterthehacker/public-repo). "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' watch__repository ' , self . EXPECTED_TOPIC_REPO_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2017-11-04 07:47:46 +01:00
def test_repository_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker created [the repository](https://github.com/baxterandthehackers/public-repo). "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' repository ' , self . EXPECTED_TOPIC_REPO_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2017-11-04 07:47:46 +01:00
def test_team_add_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " [The repository](https://github.com/baxterandthehackers/public-repo) was added to team github. "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' team_add ' , self . EXPECTED_TOPIC_REPO_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2017-11-04 07:47:46 +01:00
def test_release_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker published [release for tag 0.0.1](https://github.com/baxterthehacker/public-repo/releases/tag/0.0.1). "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' release ' , self . EXPECTED_TOPIC_REPO_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2017-11-04 07:47:46 +01:00
def test_page_build_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " Github Pages build, triggered by baxterthehacker, has finished building. "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' page_build ' , self . EXPECTED_TOPIC_REPO_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2017-11-04 07:47:46 +01:00
def test_status_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " [9049f12](https://github.com/baxterthehacker/public-repo/commit/9049f1265b7d61be4a8904a9a27120d2064dab3b) changed its status to success. "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' status ' , self . EXPECTED_TOPIC_REPO_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2018-09-27 22:41:43 +02:00
def test_status_with_target_url_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " [9049f12](https://github.com/baxterthehacker/public-repo/commit/9049f1265b7d61be4a8904a9a27120d2064dab3b) changed its status to [success](https://example.com/build/status). "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' status__with_target_url ' , self . EXPECTED_TOPIC_REPO_EVENTS , expected_message )
2018-09-27 22:41:43 +02:00
2017-11-04 07:47:46 +01:00
def test_pull_request_review_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker submitted [PR Review](https://github.com/baxterthehacker/public-repo/pull/1#pullrequestreview-2626884). "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' pull_request_review ' , self . EXPECTED_TOPIC_PR_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2018-07-20 21:36:18 +02:00
def test_pull_request_review_msg_with_custom_topic_in_url ( self ) - > None :
self . url = self . build_webhook_url ( topic = ' notifications ' )
2020-04-09 21:51:58 +02:00
expected_topic = " notifications "
expected_message = " baxterthehacker submitted [PR Review for #1 Update the README with new information](https://github.com/baxterthehacker/public-repo/pull/1#pullrequestreview-2626884). "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' pull_request_review ' , expected_topic , expected_message )
2018-07-20 21:36:18 +02:00
2017-11-04 07:47:46 +01:00
def test_pull_request_review_comment_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker created [PR Review Comment](https://github.com/baxterthehacker/public-repo/pull/1#discussion_r29724692): \n \n ~~~ quote \n Maybe you should use more emojji on this line. \n ~~~ "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' pull_request_review_comment ' , self . EXPECTED_TOPIC_PR_EVENTS , expected_message )
2016-10-25 14:50:42 +02:00
2018-07-20 21:36:18 +02:00
def test_pull_request_review_comment_with_custom_topic_in_url ( self ) - > None :
self . url = self . build_webhook_url ( topic = ' notifications ' )
2020-04-09 21:51:58 +02:00
expected_topic = " notifications "
expected_message = " baxterthehacker created [PR Review Comment on #1 Update the README with new information](https://github.com/baxterthehacker/public-repo/pull/1#discussion_r29724692): \n \n ~~~ quote \n Maybe you should use more emojji on this line. \n ~~~ "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' pull_request_review_comment ' , expected_topic , expected_message )
2018-07-20 21:36:18 +02:00
2017-11-04 07:47:46 +01:00
def test_push_tag_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker pushed tag abc. "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' push__tag ' , self . EXPECTED_TOPIC_REPO_EVENTS , expected_message )
2017-02-08 20:41:43 +01:00
2017-11-04 07:47:46 +01:00
def test_pull_request_edited_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker edited [PR #1](https://github.com/baxterthehacker/public-repo/pull/1) from `changes` to `master`. "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' pull_request__edited ' , self . EXPECTED_TOPIC_PR_EVENTS , expected_message )
2017-02-08 20:41:43 +01:00
2017-11-04 07:47:46 +01:00
def test_pull_request_assigned_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " baxterthehacker assigned [PR #1](https://github.com/baxterthehacker/public-repo/pull/1) to baxterthehacker. "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' pull_request__assigned ' , self . EXPECTED_TOPIC_PR_EVENTS , expected_message )
2017-02-08 20:41:43 +01:00
2018-07-20 21:36:18 +02:00
def test_pull_request_assigned_msg_with_custom_topic_in_url ( self ) - > None :
self . url = self . build_webhook_url ( topic = ' notifications ' )
2020-04-09 21:51:58 +02:00
expected_topic = " notifications "
expected_message = " baxterthehacker assigned [PR #1 Update the README with new information](https://github.com/baxterthehacker/public-repo/pull/1) to baxterthehacker. "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' pull_request__assigned ' , expected_topic , expected_message )
2018-07-20 21:36:18 +02:00
2017-11-04 07:47:46 +01:00
def test_pull_request_unassigned_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " eeshangarg unassigned [PR #1](https://github.com/zulip-test-org/helloworld/pull/1). "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' pull_request__unassigned ' , ' helloworld / PR #1 Mention that Zulip rocks! ' , expected_message )
2017-02-08 21:30:25 +01:00
2018-07-01 20:40:08 +02:00
def test_pull_request_review_requested_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " **eeshangarg** requested [showell](https://github.com/showell) for a review on [PR #1](https://github.com/eeshangarg/Scheduler/pull/1). "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' pull_request__review_requested ' , ' Scheduler / PR #1 This is just a test commit ' , expected_message )
2018-07-01 20:40:08 +02:00
2018-10-23 20:05:14 +02:00
def test_pull_request_review_requested_singular_key_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " **eeshangarg** requested [rishig](https://github.com/rishig) for a review on [PR #6](https://github.com/eeshangarg/Scheduler/pull/6). "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' pull_request__review_requested_singular_key ' ,
2018-10-23 20:05:14 +02:00
' Scheduler / PR #6 Mention how awesome this project is in ... ' ,
2019-06-06 08:47:24 +02:00
expected_message )
2018-10-23 20:05:14 +02:00
2018-07-01 20:40:08 +02:00
def test_pull_request_review_requested_multiple_reviwers_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " **eeshangarg** requested [showell](https://github.com/showell) and [timabbott](https://github.com/timabbott) for a review on [PR #1](https://github.com/eeshangarg/Scheduler/pull/1). "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' pull_request__review_requested_multiple_reviewers ' ,
2018-07-01 20:40:08 +02:00
' Scheduler / PR #1 This is just a test commit ' ,
2019-06-06 08:47:24 +02:00
expected_message )
2018-07-01 20:40:08 +02:00
2020-03-11 00:29:59 +01:00
def test_pull_request__review_requested_team_reviewer_msg ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_message = " **singhsourabh** requested [shreyaskargit](https://github.com/shreyaskargit), [bajaj99prashant](https://github.com/bajaj99prashant), [review-team](https://github.com/orgs/test-org965/teams/review-team), [authority](https://github.com/orgs/test-org965/teams/authority) and [management](https://github.com/orgs/test-org965/teams/management) for a review on [PR #4](https://github.com/test-org965/webhook-test/pull/4). "
2020-03-11 00:29:59 +01:00
self . send_and_test_stream_message ( ' pull_request__review_requested_team_reviewer ' ,
' webhook-test / PR #4 testing webhook ' ,
expected_message )
2018-07-20 21:36:18 +02:00
def test_pull_request_review_requested_with_custom_topic_in_url ( self ) - > None :
self . url = self . build_webhook_url ( topic = ' notifications ' )
2020-04-09 21:51:58 +02:00
expected_topic = " notifications "
expected_message = " **eeshangarg** requested [showell](https://github.com/showell) for a review on [PR #1 This is just a test commit](https://github.com/eeshangarg/Scheduler/pull/1). "
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' pull_request__review_requested ' , expected_topic , expected_message )
2018-07-20 21:36:18 +02:00
2019-02-19 21:16:41 +01:00
def test_check_run ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " hello-world / checks "
expected_message = """
2019-02-19 21:16:41 +01:00
Check [ randscape ] ( http : / / github . com / github / hello - world / runs / 4 ) completed ( success ) . ( [ d6fde92 ] ( http : / / github . com / github / hello - world / commit / d6fde92930d4715a2b49857d24b940956b26d2d3 ) )
""" .strip()
2019-06-06 08:47:24 +02:00
self . send_and_test_stream_message ( ' check_run__completed ' , expected_topic , expected_message )
2019-02-19 21:16:41 +01:00
@patch ( ' zerver.webhooks.github.view.check_send_webhook_message ' )
def test_check_run_in_progress_ignore (
self , check_send_webhook_message_mock : MagicMock ) - > None :
2019-06-06 08:47:24 +02:00
payload = self . get_body ( ' check_run__in_progress ' )
2019-02-19 21:16:41 +01:00
result = self . client_post ( self . url , payload ,
HTTP_X_GITHUB_EVENT = ' check_run ' ,
content_type = " application/json " )
self . assertFalse ( check_send_webhook_message_mock . called )
self . assert_json_success ( result )
2018-04-18 21:34:30 +02:00
@patch ( ' zerver.webhooks.github.view.check_send_webhook_message ' )
2017-11-04 07:47:46 +01:00
def test_pull_request_labeled_ignore (
2018-03-16 22:53:50 +01:00
self , check_send_webhook_message_mock : MagicMock ) - > None :
2019-06-06 08:47:24 +02:00
payload = self . get_body ( ' pull_request__labeled ' )
2017-02-08 21:30:25 +01:00
result = self . client_post ( self . url , payload , HTTP_X_GITHUB_EVENT = ' pull_request ' , content_type = " application/json " )
2018-03-16 22:53:50 +01:00
self . assertFalse ( check_send_webhook_message_mock . called )
2017-02-08 21:30:25 +01:00
self . assert_json_success ( result )
2018-04-18 21:34:30 +02:00
@patch ( ' zerver.webhooks.github.view.check_send_webhook_message ' )
2017-11-04 07:47:46 +01:00
def test_pull_request_unlabeled_ignore (
2018-03-16 22:53:50 +01:00
self , check_send_webhook_message_mock : MagicMock ) - > None :
2019-06-06 08:47:24 +02:00
payload = self . get_body ( ' pull_request__unlabeled ' )
2017-02-08 21:30:25 +01:00
result = self . client_post ( self . url , payload , HTTP_X_GITHUB_EVENT = ' pull_request ' , content_type = " application/json " )
2018-03-16 22:53:50 +01:00
self . assertFalse ( check_send_webhook_message_mock . called )
2017-02-08 21:30:25 +01:00
self . assert_json_success ( result )
2018-04-18 21:34:30 +02:00
@patch ( ' zerver.webhooks.github.view.check_send_webhook_message ' )
2017-11-04 07:47:46 +01:00
def test_pull_request_request_review_remove_ignore (
2018-03-16 22:53:50 +01:00
self , check_send_webhook_message_mock : MagicMock ) - > None :
2019-06-06 08:47:24 +02:00
payload = self . get_body ( ' pull_request__request_review_removed ' )
2017-02-08 21:30:25 +01:00
result = self . client_post ( self . url , payload , HTTP_X_GITHUB_EVENT = ' pull_request ' , content_type = " application/json " )
2018-03-16 22:53:50 +01:00
self . assertFalse ( check_send_webhook_message_mock . called )
2017-02-08 21:30:25 +01:00
self . assert_json_success ( result )
2017-03-25 03:23:15 +01:00
2018-04-18 21:34:30 +02:00
@patch ( ' zerver.webhooks.github.view.check_send_webhook_message ' )
2017-11-04 07:47:46 +01:00
def test_push_1_commit_filtered_by_branches_ignore (
2018-03-16 22:53:50 +01:00
self , check_send_webhook_message_mock : MagicMock ) - > None :
2017-04-21 23:35:40 +02:00
self . url = self . build_webhook_url ( branches = ' master,development ' )
2019-06-06 08:47:24 +02:00
payload = self . get_body ( ' push__1_commit ' )
result = self . client_post ( self . url , payload , content_type = " application/json " , HTTP_X_GITHUB_EVENT = " push " )
2018-03-16 22:53:50 +01:00
self . assertFalse ( check_send_webhook_message_mock . called )
2017-03-25 03:23:15 +01:00
self . assert_json_success ( result )
2018-04-18 21:34:30 +02:00
@patch ( ' zerver.webhooks.github.view.check_send_webhook_message ' )
2017-11-04 07:47:46 +01:00
def test_push_50_commits_filtered_by_branches_ignore (
2018-03-16 22:53:50 +01:00
self , check_send_webhook_message_mock : MagicMock ) - > None :
2017-04-21 23:35:40 +02:00
self . url = self . build_webhook_url ( branches = ' master,development ' )
2019-06-06 08:47:24 +02:00
payload = self . get_body ( ' push__50_commits ' )
result = self . client_post ( self . url , payload , content_type = " application/json " , HTTP_X_GITHUB_EVENT = " push " )
2018-03-16 22:53:50 +01:00
self . assertFalse ( check_send_webhook_message_mock . called )
2017-03-25 03:23:15 +01:00
self . assert_json_success ( result )
2017-04-21 23:35:40 +02:00
2018-04-18 21:34:30 +02:00
@patch ( ' zerver.webhooks.github.view.check_send_webhook_message ' )
2017-11-04 07:47:46 +01:00
def test_push_multiple_comitters_filtered_by_branches_ignore (
2018-03-16 22:53:50 +01:00
self , check_send_webhook_message_mock : MagicMock ) - > None :
2017-04-21 23:35:40 +02:00
self . url = self . build_webhook_url ( branches = ' master,development ' )
2019-06-06 08:47:24 +02:00
payload = self . get_body ( ' push__multiple_committers ' )
result = self . client_post ( self . url , payload , content_type = " application/json " , HTTP_X_GITHUB_EVENT = " push " )
2018-03-16 22:53:50 +01:00
self . assertFalse ( check_send_webhook_message_mock . called )
2017-04-21 23:35:40 +02:00
self . assert_json_success ( result )
2018-04-18 21:34:30 +02:00
@patch ( ' zerver.webhooks.github.view.check_send_webhook_message ' )
2017-11-04 07:47:46 +01:00
def test_push_multiple_comitters_with_others_filtered_by_branches_ignore (
2018-03-16 22:53:50 +01:00
self , check_send_webhook_message_mock : MagicMock ) - > None :
2017-04-21 23:35:40 +02:00
self . url = self . build_webhook_url ( branches = ' master,development ' )
2019-06-06 08:47:24 +02:00
payload = self . get_body ( ' push__multiple_committers_with_others ' )
result = self . client_post ( self . url , payload , content_type = " application/json " , HTTP_X_GITHUB_EVENT = " push " )
2018-03-16 22:53:50 +01:00
self . assertFalse ( check_send_webhook_message_mock . called )
2017-04-21 23:35:40 +02:00
self . assert_json_success ( result )
2019-02-19 20:17:40 +01:00
@patch ( ' zerver.webhooks.github.view.check_send_webhook_message ' )
def test_repository_vulnerability_alert_ignore (
self , check_send_webhook_message_mock : MagicMock ) - > None :
self . url = self . build_webhook_url ( )
payload = self . get_body ( ' repository_vulnerability_alert ' )
result = self . client_post ( self . url , payload ,
HTTP_X_GITHUB_EVENT = ' repository_vulnerability_alert ' ,
content_type = " application/json " )
self . assertFalse ( check_send_webhook_message_mock . called )
self . assert_json_success ( result )