mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 22:13:26 +00:00
7 characters are not enough for large projects, so we change it to reasonably longer. As an example, The Linux kernel needs at least 11 characters of sha in its shortened form to identify a revision. We pick 11 so it should work for most of the projects. Signed-off-by: Zixuan James Li <p359101898@gmail.com>
95 lines
7.7 KiB
Python
95 lines
7.7 KiB
Python
from unittest.mock import MagicMock, patch
|
|
|
|
from zerver.lib.test_classes import WebhookTestCase
|
|
from zerver.lib.webhooks.git import COMMITS_LIMIT
|
|
|
|
|
|
class AzuredevopsHookTests(WebhookTestCase):
|
|
STREAM_NAME = "azure-devops"
|
|
URL_TEMPLATE = "/api/v1/external/azuredevops?&api_key={api_key}&stream={stream}"
|
|
WEBHOOK_DIR_NAME = "azuredevops"
|
|
|
|
def test_push_event_message(self) -> None:
|
|
expected_topic = "test-zulip / main"
|
|
expected_message = "Yuro Itaki [pushed](https://dev.azure.com/ttchong/test-zulip/_git/test-zulip/branchCompare?baseVersion=GC51515957669f93c543df09f8f3e7f47c3613c879&targetVersion=GCb0ce2f2009c3c87dbefadf61d7eb2c0697a6f369&_a=files) 1 commit to branch main.\n\n* Modify readme ([b0ce2f2009c](https://dev.azure.com/ttchong/test-zulip/_git/test-zulip/commit/b0ce2f2009c3c87dbefadf61d7eb2c0697a6f369))"
|
|
self.check_webhook("code_push", expected_topic, expected_message)
|
|
|
|
def test_push_event_message_filtered_by_branches(self) -> None:
|
|
self.url = self.build_webhook_url(branches="main,dev")
|
|
expected_topic = "test-zulip / main"
|
|
expected_message = "Yuro Itaki [pushed](https://dev.azure.com/ttchong/test-zulip/_git/test-zulip/branchCompare?baseVersion=GC51515957669f93c543df09f8f3e7f47c3613c879&targetVersion=GCb0ce2f2009c3c87dbefadf61d7eb2c0697a6f369&_a=files) 1 commit to branch main.\n\n* Modify readme ([b0ce2f2009c](https://dev.azure.com/ttchong/test-zulip/_git/test-zulip/commit/b0ce2f2009c3c87dbefadf61d7eb2c0697a6f369))"
|
|
self.check_webhook("code_push", expected_topic, expected_message)
|
|
|
|
@patch("zerver.lib.webhooks.common.check_send_webhook_message")
|
|
def test_push_event_message_filtered_by_branches_ignore(
|
|
self, check_send_webhook_message_mock: MagicMock
|
|
) -> None:
|
|
self.url = self.build_webhook_url(branches="development")
|
|
payload = self.get_body("code_push")
|
|
result = self.client_post(self.url, payload, content_type="application/json")
|
|
self.assertFalse(check_send_webhook_message_mock.called)
|
|
self.assert_json_success(result)
|
|
|
|
def test_push_local_branch_without_commits(self) -> None:
|
|
expected_topic = "test-zulip / dev"
|
|
expected_message = "Yuro Itaki [pushed](https://dev.azure.com/ttchong/test-zulip/_git/test-zulip/branchCompare?baseVersion=GC0000000000000000000000000000000000000000&targetVersion=GC0929a3404b39f6e39076a640779b2c1c961e19b5&_a=files) the branch dev."
|
|
self.check_webhook(
|
|
"code_push__local_branch_without_commits", expected_topic, expected_message
|
|
)
|
|
|
|
def test_push_multiple_committers(self) -> None:
|
|
expected_topic = "test-zulip / main"
|
|
expected_message = "Yuro Itaki [pushed](https://dev.azure.com/ttchong/test-zulip/_git/test-zulip/branchCompare?baseVersion=GCcc21b940719cc372b364d932eb39e528b0ec2a91&targetVersion=GC0929a3404b39f6e39076a640779b2c1c961e19b5&_a=files) 2 commits to branch main. Commits by Itachi Sensei (1) and Yuro Itaki (1).\n\n* Add reply ([0929a3404b3](https://dev.azure.com/ttchong/test-zulip/_git/test-zulip/commit/0929a3404b39f6e39076a640779b2c1c961e19b5))\n* Add how are you ([819ce8de51b](https://dev.azure.com/ttchong/test-zulip/_git/test-zulip/commit/819ce8de51bedfc250c202edcaee0ce8dc70bf3b))"
|
|
self.check_webhook("code_push__multiple_committers", expected_topic, expected_message)
|
|
|
|
def test_push_multiple_committers_with_others(self) -> None:
|
|
expected_topic = "test-zulip / main"
|
|
commits_info = "* Add how are you ([819ce8de51b](https://dev.azure.com/ttchong/test-zulip/_git/test-zulip/commit/819ce8de51bedfc250c202edcaee0ce8dc70bf3b))\n"
|
|
expected_message = f"Yuro Itaki [pushed](https://dev.azure.com/ttchong/test-zulip/_git/test-zulip/branchCompare?baseVersion=GCcc21b940719cc372b364d932eb39e528b0ec2a91&targetVersion=GC0929a3404b39f6e39076a640779b2c1c961e19b5&_a=files) 6 commits to branch main. Commits by Itachi Sensei (2), Yuro Itaki (2), Jonas Nielsen (1) and others (1).\n\n* Add reply ([0929a3404b3](https://dev.azure.com/ttchong/test-zulip/_git/test-zulip/commit/0929a3404b39f6e39076a640779b2c1c961e19b5))\n{commits_info * 4}* Add reply ([0929a3404b3](https://dev.azure.com/ttchong/test-zulip/_git/test-zulip/commit/0929a3404b39f6e39076a640779b2c1c961e19b5))"
|
|
self.check_webhook(
|
|
"code_push__multiple_committers_with_others", expected_topic, expected_message
|
|
)
|
|
|
|
def test_push_commits_more_than_limit(self) -> None:
|
|
expected_topic = "test-zulip / main"
|
|
commits_info = "* Modify readme ([b0ce2f2009c](https://dev.azure.com/ttchong/test-zulip/_git/test-zulip/commit/b0ce2f2009c3c87dbefadf61d7eb2c0697a6f369))\n"
|
|
expected_message = f"Yuro Itaki [pushed](https://dev.azure.com/ttchong/test-zulip/_git/test-zulip/branchCompare?baseVersion=GC51515957669f93c543df09f8f3e7f47c3613c879&targetVersion=GCb0ce2f2009c3c87dbefadf61d7eb2c0697a6f369&_a=files) 50 commits to branch main.\n\n{commits_info * COMMITS_LIMIT}[and {50 - COMMITS_LIMIT} more commit(s)]"
|
|
self.check_webhook("code_push__commits_more_than_limit", expected_topic, expected_message)
|
|
|
|
def test_push_remove_branch(self) -> None:
|
|
expected_topic = "test-zulip / dev"
|
|
expected_message = "Yuro Itaki [pushed](https://dev.azure.com/ttchong/test-zulip/_git/test-zulip/branchCompare?baseVersion=GC0929a3404b39f6e39076a640779b2c1c961e19b5&targetVersion=GC0000000000000000000000000000000000000000&_a=files) the branch dev."
|
|
self.check_webhook("code_push__remove_branch", expected_topic, expected_message)
|
|
|
|
def test_pull_request_opened(self) -> None:
|
|
expected_topic = "test-zulip / PR #1 Add PR request"
|
|
expected_message = "Yuro Itaki created [PR #1 Add PR request](https://dev.azure.com/ttchong/test-zulip/_git/test-zulip/pullrequest/1) from `dev` to `main`:\n\n~~~ quote\nAdd PR request\n~~~"
|
|
self.check_webhook("code_pull_request__opened", expected_topic, expected_message)
|
|
|
|
def test_pull_request_opened_without_description(self) -> None:
|
|
expected_topic = "test-zulip / PR #2 Raised 2nd PR!"
|
|
expected_message = "Yuro Itaki created [PR #2 Raised 2nd PR!](https://dev.azure.com/ttchong/test-zulip/_git/test-zulip/pullrequest/2) from `stg` to `main`."
|
|
self.check_webhook(
|
|
"code_pull_request__opened_without_description", expected_topic, expected_message
|
|
)
|
|
|
|
def test_pull_request_merged(self) -> None:
|
|
expected_topic = "test-zulip / PR #1 Add PR request"
|
|
expected_message = "Yuro Itaki merged [PR #1 Add PR request](https://dev.azure.com/ttchong/test-zulip/_git/test-zulip/pullrequest/1)."
|
|
self.check_webhook("code_pull_request__merged", expected_topic, expected_message)
|
|
|
|
@patch("zerver.lib.webhooks.common.check_send_webhook_message")
|
|
def test_pull_request_merge_attempted_ignore(
|
|
self, check_send_webhook_message_mock: MagicMock
|
|
) -> None:
|
|
self.url = self.build_webhook_url()
|
|
payload = self.get_body("code_pull_request__merge_attempted")
|
|
result = self.client_post(self.url, payload, content_type="application/json")
|
|
self.assertFalse(check_send_webhook_message_mock.called)
|
|
self.assert_json_success(result)
|
|
|
|
def test_pull_request_updated(self) -> None:
|
|
expected_topic = "test-zulip / PR #2 Raised 2nd PR!"
|
|
expected_message = "Yuro Itaki updated [PR #2 Raised 2nd PR!](https://dev.azure.com/ttchong/test-zulip/_git/test-zulip/pullrequest/2)\n\n~~~ quote\nYuro Itaki updated the source branch of [pull request 2](https://dev.azure.com/ttchong/test-zulip/_git/test-zulip/pullrequest/2) (Raised 2nd PR!) in [test-zulip](https://dev.azure.com/ttchong/test-zulip/_git/test-zulip/)\r\nRaised 2nd PR!\r\n\n~~~"
|
|
self.check_webhook("code_pull_request__updated", expected_topic, expected_message)
|