2020-05-26 07:16:25 +02:00
from unittest . mock import MagicMock , patch
2017-11-16 00:43:10 +01:00
2016-11-10 19:30:09 +01: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-09-20 22:51:11 +02:00
2020-01-14 22:06:24 +01:00
2016-09-20 22:51:11 +02:00
class GitlabHookTests ( WebhookTestCase ) :
2021-02-12 08:20:45 +01:00
STREAM_NAME = " gitlab "
2017-04-21 23:35:40 +02:00
URL_TEMPLATE = " /api/v1/external/gitlab?&api_key= {api_key} &stream= {stream} "
2021-06-26 09:18:33 +02:00
WEBHOOK_DIR_NAME = " gitlab "
2016-09-20 22:51:11 +02:00
2018-01-09 12:06:52 +01:00
def test_push_event_specified_topic ( self ) - > None :
self . url = self . build_webhook_url ( " topic=Specific % 20topic " )
2020-04-09 21:51:58 +02:00
expected_topic = " Specific topic "
2022-11-07 21:15:53 +01:00
expected_message = " [[my-awesome-project](https://gitlab.com/tomaszkolek0/my-awesome-project)] Tomasz Kolek [pushed](https://gitlab.com/tomaszkolek0/my-awesome-project/compare/5fcdd5551fc3085df79bece2c32b1400802ac407...eb6ae1e591e0819dc5bf187c6bfe18ec065a80e9) 2 commits to branch tomek. \n \n * b ([66abd2da288](https://gitlab.com/tomaszkolek0/my-awesome-project/commit/66abd2da28809ffa128ed0447965cf11d7f863a7)) \n * c ([eb6ae1e591e](https://gitlab.com/tomaszkolek0/my-awesome-project/commit/eb6ae1e591e0819dc5bf187c6bfe18ec065a80e9)) "
2020-08-23 15:49:24 +02:00
self . check_webhook ( " push_hook " , expected_topic , expected_message )
2018-01-09 12:06:52 +01:00
2017-11-04 07:47:46 +01:00
def test_push_event_message ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / tomek "
2022-11-07 21:15:53 +01:00
expected_message = " Tomasz Kolek [pushed](https://gitlab.com/tomaszkolek0/my-awesome-project/compare/5fcdd5551fc3085df79bece2c32b1400802ac407...eb6ae1e591e0819dc5bf187c6bfe18ec065a80e9) 2 commits to branch tomek. \n \n * b ([66abd2da288](https://gitlab.com/tomaszkolek0/my-awesome-project/commit/66abd2da28809ffa128ed0447965cf11d7f863a7)) \n * c ([eb6ae1e591e](https://gitlab.com/tomaszkolek0/my-awesome-project/commit/eb6ae1e591e0819dc5bf187c6bfe18ec065a80e9)) "
2020-08-23 15:49:24 +02:00
self . check_webhook ( " push_hook " , expected_topic , expected_message )
2016-09-20 22:51:11 +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_topic = " my-awesome-project / changes "
expected_message = " Eeshan Garg [pushed](https://gitlab.com/eeshangarg/my-awesome-project/compare/0000000000000000000000000000000000000000...68d7a5528cf423dfaac37dd62a56ac9cc8a884e3) the branch changes. "
2020-08-23 15:49:24 +02:00
self . check_webhook (
" push_hook__push_local_branch_without_commits " , expected_topic , expected_message
)
2017-05-17 04:12:56 +02:00
2017-11-04 07:47:46 +01:00
def test_push_event_message_filtered_by_branches ( self ) - > None :
2021-02-12 08:20:45 +01:00
self . url = self . build_webhook_url ( branches = " master,tomek " )
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / tomek "
2022-11-07 21:15:53 +01:00
expected_message = " Tomasz Kolek [pushed](https://gitlab.com/tomaszkolek0/my-awesome-project/compare/5fcdd5551fc3085df79bece2c32b1400802ac407...eb6ae1e591e0819dc5bf187c6bfe18ec065a80e9) 2 commits to branch tomek. \n \n * b ([66abd2da288](https://gitlab.com/tomaszkolek0/my-awesome-project/commit/66abd2da28809ffa128ed0447965cf11d7f863a7)) \n * c ([eb6ae1e591e](https://gitlab.com/tomaszkolek0/my-awesome-project/commit/eb6ae1e591e0819dc5bf187c6bfe18ec065a80e9)) "
2020-08-23 15:49:24 +02:00
self . check_webhook ( " push_hook " , expected_topic , expected_message )
2017-04-03 04:46:41 +02:00
2017-11-04 07:47:46 +01:00
def test_push_multiple_committers ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / tomek "
2022-11-07 21:15:53 +01:00
expected_message = " Tomasz Kolek [pushed](https://gitlab.com/tomaszkolek0/my-awesome-project/compare/5fcdd5551fc3085df79bece2c32b1400802ac407...eb6ae1e591e0819dc5bf187c6bfe18ec065a80e9) 2 commits to branch tomek. Commits by Ben (1) and Tomasz Kolek (1). \n \n * b ([66abd2da288](https://gitlab.com/tomaszkolek0/my-awesome-project/commit/66abd2da28809ffa128ed0447965cf11d7f863a7)) \n * c ([eb6ae1e591e](https://gitlab.com/tomaszkolek0/my-awesome-project/commit/eb6ae1e591e0819dc5bf187c6bfe18ec065a80e9)) "
2020-08-23 15:49:24 +02:00
self . check_webhook ( " push_hook__push_multiple_committers " , expected_topic , expected_message )
2017-04-05 09:12:19 +02:00
2017-11-04 07:47:46 +01:00
def test_push_multiple_committers_with_others ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / tomek "
2022-11-07 21:15:53 +01:00
commit_info = " * b ([eb6ae1e591e](https://gitlab.com/tomaszkolek0/my-awesome-project/commit/eb6ae1e591e0819dc5bf187c6bfe18ec065a80e9)) \n "
expected_message = f " Tomasz Kolek [pushed](https://gitlab.com/tomaszkolek0/my-awesome-project/compare/5fcdd5551fc3085df79bece2c32b1400802ac407...eb6ae1e591e0819dc5bf187c6bfe18ec065a80e9) 7 commits to branch tomek. Commits by Ben (3), baxterthehacker (2), James (1) and others (1). \n \n { commit_info * 6 } * b ([eb6ae1e591e](https://gitlab.com/tomaszkolek0/my-awesome-project/commit/eb6ae1e591e0819dc5bf187c6bfe18ec065a80e9)) "
2020-08-23 15:49:24 +02:00
self . check_webhook (
" push_hook__push_multiple_committers_with_others " , expected_topic , expected_message
)
2017-04-05 09:12:19 +02:00
2017-11-04 07:47:46 +01:00
def test_push_commits_more_than_limit_event_message ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / tomek "
2022-11-07 21:15:53 +01:00
commits_info = " * b ([66abd2da288](https://gitlab.com/tomaszkolek0/my-awesome-project/commit/66abd2da28809ffa128ed0447965cf11d7f863a7)) \n "
2020-06-10 06:40:53 +02:00
expected_message = f " Tomasz Kolek [pushed](https://gitlab.com/tomaszkolek0/my-awesome-project/compare/5fcdd5551fc3085df79bece2c32b1400802ac407...eb6ae1e591e0819dc5bf187c6bfe18ec065a80e9) 50 commits to branch tomek. \n \n { commits_info * COMMITS_LIMIT } [and { 50 - COMMITS_LIMIT } more commit(s)] "
2020-08-23 15:49:24 +02:00
self . check_webhook (
" push_hook__push_commits_more_than_limit " , expected_topic , expected_message
)
2016-10-07 15:20:37 +02:00
2017-11-04 07:47:46 +01:00
def test_push_commits_more_than_limit_message_filtered_by_branches ( self ) - > None :
2021-02-12 08:20:45 +01:00
self . url = self . build_webhook_url ( branches = " master,tomek " )
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / tomek "
2022-11-07 21:15:53 +01:00
commits_info = " * b ([66abd2da288](https://gitlab.com/tomaszkolek0/my-awesome-project/commit/66abd2da28809ffa128ed0447965cf11d7f863a7)) \n "
2020-06-10 06:40:53 +02:00
expected_message = f " Tomasz Kolek [pushed](https://gitlab.com/tomaszkolek0/my-awesome-project/compare/5fcdd5551fc3085df79bece2c32b1400802ac407...eb6ae1e591e0819dc5bf187c6bfe18ec065a80e9) 50 commits to branch tomek. \n \n { commits_info * COMMITS_LIMIT } [and { 50 - COMMITS_LIMIT } more commit(s)] "
2020-08-23 15:49:24 +02:00
self . check_webhook (
" push_hook__push_commits_more_than_limit " , expected_topic , expected_message
)
2017-04-03 04:46:41 +02:00
2017-11-04 07:47:46 +01:00
def test_remove_branch_event_message ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / tomek "
expected_message = " Tomasz Kolek deleted branch tomek. "
2016-10-06 17:13:40 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook ( " push_hook__remove_branch " , expected_topic , expected_message )
2016-10-06 17:13:40 +02:00
2017-11-04 07:47:46 +01:00
def test_add_tag_event_message ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project "
expected_message = " Tomasz Kolek pushed tag xyz. "
2016-09-20 22:51:11 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
" tag_push_hook__add_tag " ,
2018-11-09 20:33:58 +01:00
expected_topic ,
2016-09-20 22:51:11 +02:00
expected_message ,
HTTP_X_GITLAB_EVENT = " Tag Push Hook " ,
)
2017-11-04 07:47:46 +01:00
def test_remove_tag_event_message ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project "
expected_message = " Tomasz Kolek removed tag xyz. "
2016-09-20 22:51:11 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook ( " tag_push_hook__remove_tag " , expected_topic , expected_message )
2016-09-20 22:51:11 +02:00
2017-11-04 07:47:46 +01:00
def test_create_issue_without_assignee_event_message ( self ) - > None :
2021-05-10 07:02:14 +02:00
expected_topic = " my-awesome-project / issue #1 Issue title "
expected_message = " Tomasz Kolek created [issue #1](https://gitlab.com/tomaszkolek0/my-awesome-project/issues/1): \n \n ~~~ quote \n Issue description \n ~~~ "
2018-07-20 00:49:05 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
" issue_hook__issue_created_without_assignee " , expected_topic , expected_message
)
2018-07-20 00:49:05 +02:00
2018-12-18 23:37:44 +01:00
def test_create_confidential_issue_without_assignee_event_message ( self ) - > None :
2021-05-10 07:02:14 +02:00
expected_subject = " testing / issue #1 Testing "
expected_message = " Joe Bloggs created [issue #1](https://gitlab.example.co.uk/joe.bloggs/testing/issues/1): \n \n ~~~ quote \n Testing \n ~~~ "
2018-12-18 23:37:44 +01:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
" issue_hook__confidential_issue_created_without_assignee " ,
2018-12-18 23:37:44 +01:00
expected_subject ,
2020-08-23 15:49:24 +02:00
expected_message ,
)
2018-12-18 23:37:44 +01:00
2018-07-20 00:49:05 +02:00
def test_create_issue_with_custom_topic_in_url ( self ) - > None :
2021-02-12 08:20:45 +01:00
self . url = self . build_webhook_url ( topic = " notifications " )
2020-04-09 21:51:58 +02:00
expected_topic = " notifications "
2021-05-10 07:02:14 +02:00
expected_message = " [[my-awesome-project](https://gitlab.com/tomaszkolek0/my-awesome-project)] Tomasz Kolek created [issue #1 Issue title](https://gitlab.com/tomaszkolek0/my-awesome-project/issues/1): \n \n ~~~ quote \n Issue description \n ~~~ "
2016-09-20 22:51:11 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
" issue_hook__issue_created_without_assignee " , expected_topic , expected_message
)
2016-09-20 22:51:11 +02:00
2017-11-04 07:47:46 +01:00
def test_create_issue_with_assignee_event_message ( self ) - > None :
2021-05-10 07:02:14 +02:00
expected_topic = " my-awesome-project / issue #1 Issue title "
expected_message = " Tomasz Kolek created [issue #1](https://gitlab.com/tomaszkolek0/my-awesome-project/issues/1) (assigned to Tomasz Kolek): \n \n ~~~ quote \n Issue description \n ~~~ "
2016-09-20 22:51:11 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
" issue_hook__issue_created_with_assignee " , expected_topic , expected_message
)
2016-09-20 22:51:11 +02:00
2018-12-20 23:31:05 +01:00
def test_create_issue_with_two_assignees_event_message ( self ) - > None :
2021-05-10 07:02:14 +02:00
expected_subject = " Zulip GitLab Test / issue #2 Zulip Test Issue 2 "
expected_message = " Adam Birds created [issue #2](https://gitlab.com/adambirds/zulip-gitlab-test/issues/2) (assigned to Adam Birds and Eeshan Garg): \n \n ~~~ quote \n Zulip Test Issue 2 \n ~~~ "
2018-12-20 23:31:05 +01:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
" issue_hook__issue_created_with_two_assignees " , expected_subject , expected_message
)
2018-12-20 23:31:05 +01:00
def test_create_issue_with_three_assignees_event_message ( self ) - > None :
2021-05-10 07:02:14 +02:00
expected_subject = " Zulip GitLab Test / issue #2 Zulip Test Issue 2 "
expected_message = " Adam Birds created [issue #2](https://gitlab.com/adambirds/zulip-gitlab-test/issues/2) (assigned to Adam Birds, Eeshan Garg and Tim Abbott): \n \n ~~~ quote \n Zulip Test Issue 2 \n ~~~ "
2018-12-20 23:31:05 +01:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
" issue_hook__issue_created_with_three_assignees " , expected_subject , expected_message
)
2018-12-20 23:31:05 +01:00
2018-12-18 23:37:44 +01:00
def test_create_confidential_issue_with_assignee_event_message ( self ) - > None :
2021-05-10 07:02:14 +02:00
expected_subject = " testing / issue #2 Testing "
expected_message = " Joe Bloggs created [issue #2](https://gitlab.example.co.uk/joe.bloggs/testing/issues/2) (assigned to Joe Bloggs): \n \n ~~~ quote \n Testing \n ~~~ "
2018-12-18 23:37:44 +01:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
" issue_hook__confidential_issue_created_with_assignee " ,
2018-12-18 23:37:44 +01:00
expected_subject ,
2020-08-23 15:49:24 +02:00
expected_message ,
)
2018-12-18 23:37:44 +01:00
2018-01-24 03:08:53 +01:00
def test_create_issue_with_hidden_comment_in_description ( self ) - > None :
2021-05-10 07:02:14 +02:00
expected_topic = " public-repo / issue #3 New Issue with hidden comment "
expected_message = " Eeshan Garg created [issue #3](https://gitlab.com/eeshangarg/public-repo/issues/3): \n \n ~~~ quote \n This description actually has a hidden comment in it! \n ~~~ "
2018-01-24 03:08:53 +01:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
" issue_hook__issue_created_with_hidden_comment_in_description " ,
2018-11-09 20:33:58 +01:00
expected_topic ,
2020-08-23 15:49:24 +02:00
expected_message ,
)
2018-01-24 03:08:53 +01:00
2018-12-18 23:37:44 +01:00
def test_create_confidential_issue_with_hidden_comment_in_description ( self ) - > None :
2021-05-10 07:02:14 +02:00
expected_subject = " testing / issue #1 Testing "
expected_message = " Joe Bloggs created [issue #1](https://gitlab.example.co.uk/joe.bloggs/testing/issues/1): \n \n ~~~ quote \n This description actually has a hidden comment in it! \n ~~~ "
2018-12-18 23:37:44 +01:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
" issue_hook__confidential_issue_created_with_hidden_comment_in_description " ,
2018-12-18 23:37:44 +01:00
expected_subject ,
2020-08-23 15:49:24 +02:00
expected_message ,
)
2018-12-18 23:37:44 +01:00
2018-03-23 18:50:46 +01:00
def test_create_issue_with_null_description ( self ) - > None :
2021-05-10 07:02:14 +02:00
expected_topic = " my-awesome-project / issue #7 Issue without description "
expected_message = " Eeshan Garg created [issue #7](https://gitlab.com/eeshangarg/my-awesome-project/issues/7). "
2020-08-23 15:49:24 +02:00
self . check_webhook (
" issue_hook__issue_opened_with_null_description " , expected_topic , expected_message
)
2018-03-23 18:50:46 +01:00
2017-11-04 07:47:46 +01:00
def test_update_issue_event_message ( self ) - > None :
2021-05-10 07:02:14 +02:00
expected_topic = " my-awesome-project / issue #1 Issue title_new "
expected_message = " Tomasz Kolek updated [issue #1](https://gitlab.com/tomaszkolek0/my-awesome-project/issues/1). "
2018-07-20 00:49:05 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook ( " issue_hook__issue_updated " , expected_topic , expected_message )
2018-07-20 00:49:05 +02:00
2018-12-18 23:37:44 +01:00
def test_update_confidential_issue_event_message ( self ) - > None :
2021-05-10 07:02:14 +02:00
expected_subject = " testing / issue #1 Testing "
expected_message = " Joe Bloggs updated [issue #1](https://gitlab.example.co.uk/joe.bloggs/testing/issues/1). "
2018-12-18 23:37:44 +01:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
" issue_hook__confidential_issue_updated " , expected_subject , expected_message
)
2018-12-18 23:37:44 +01:00
2018-07-20 00:49:05 +02:00
def test_update_issue_with_custom_topic_in_url ( self ) - > None :
2021-02-12 08:20:45 +01:00
self . url = self . build_webhook_url ( topic = " notifications " )
2020-04-09 21:51:58 +02:00
expected_topic = " notifications "
2021-05-10 07:02:14 +02:00
expected_message = " [[my-awesome-project](https://gitlab.com/tomaszkolek0/my-awesome-project)] Tomasz Kolek updated [issue #1 Issue title_new](https://gitlab.com/tomaszkolek0/my-awesome-project/issues/1). "
2016-09-20 22:51:11 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook ( " issue_hook__issue_updated " , expected_topic , expected_message )
2016-09-20 22:51:11 +02:00
2017-11-04 07:47:46 +01:00
def test_close_issue_event_message ( self ) - > None :
2021-05-10 07:02:14 +02:00
expected_topic = " my-awesome-project / issue #1 Issue title_new "
expected_message = " Tomasz Kolek closed [issue #1](https://gitlab.com/tomaszkolek0/my-awesome-project/issues/1). "
2016-09-20 22:51:11 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook ( " issue_hook__issue_closed " , expected_topic , expected_message )
2016-09-20 22:51:11 +02:00
2018-12-18 23:37:44 +01:00
def test_close_confidential_issue_event_message ( self ) - > None :
2021-05-10 07:02:14 +02:00
expected_subject = " testing / issue #1 Testing Test "
expected_message = " Joe Bloggs closed [issue #1](https://gitlab.example.co.uk/joe.bloggs/testing/issues/1). "
2018-12-18 23:37:44 +01:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
" issue_hook__confidential_issue_closed " , expected_subject , expected_message
)
2018-12-18 23:37:44 +01:00
2017-11-04 07:47:46 +01:00
def test_reopen_issue_event_message ( self ) - > None :
2021-05-10 07:02:14 +02:00
expected_topic = " my-awesome-project / issue #1 Issue title_new "
expected_message = " Tomasz Kolek reopened [issue #1](https://gitlab.com/tomaszkolek0/my-awesome-project/issues/1). "
2016-09-20 22:51:11 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook ( " issue_hook__issue_reopened " , expected_topic , expected_message )
2016-09-20 22:51:11 +02:00
2018-12-18 23:37:44 +01:00
def test_reopen_confidential_issue_event_message ( self ) - > None :
2021-05-10 07:02:14 +02:00
expected_subject = " testing / issue #1 Testing Test "
expected_message = " Joe Bloggs reopened [issue #1](https://gitlab.example.co.uk/joe.bloggs/testing/issues/1). "
2018-12-18 23:37:44 +01:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
" issue_hook__confidential_issue_reopened " , expected_subject , expected_message
)
2018-12-18 23:37:44 +01:00
2017-11-04 07:47:46 +01:00
def test_note_commit_event_message ( self ) - > None :
2023-05-26 09:30:25 +02:00
expected_topic = " testing-zulip-gitlab-integration "
expected_message = " Satyam Bansal [commented](https://gitlab.com/sbansal1999/testing-zulip-gitlab-integration/-/commit/82689ddf00fd7bdadb5c2afb3b94bd555edc9d01#note_1406241063) on [82689ddf00f](https://gitlab.com/sbansal1999/testing-zulip-gitlab-integration/-/commit/82689ddf00fd7bdadb5c2afb3b94bd555edc9d01): \n ~~~ quote \n Wow what a beautiful commit. \n ~~~ "
2016-09-20 22:51:11 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook ( " note_hook__commit_note " , expected_topic , expected_message )
2016-09-20 22:51:11 +02:00
2017-11-04 07:47:46 +01:00
def test_note_merge_request_event_message ( self ) - > None :
2023-05-26 09:30:25 +02:00
expected_topic = " testing-zulip-gitlab-integration / MR #1 add new-feature "
2023-05-27 19:35:15 +02:00
expected_message = " Satyam Bansal [commented](https://gitlab.com/sbansal1999/testing-zulip-gitlab-integration/-/merge_requests/1#note_1406328457) on [MR #1](https://gitlab.com/sbansal1999/testing-zulip-gitlab-integration/-/merge_requests/1): \n \n ~~~ quote \n I am not sure if this new feature is even required or not. \n ~~~ "
2016-09-20 22:51:11 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook ( " note_hook__merge_request_note " , expected_topic , expected_message )
2016-09-20 22:51:11 +02:00
2020-07-29 07:39:42 +02:00
def test_note_merge_request_event_message_without_merge_request_title ( self ) - > None :
2023-05-26 09:30:25 +02:00
expected_topic = " testing-zulip-gitlab-integration / MR #1 "
2023-05-27 19:35:15 +02:00
expected_message = " Satyam Bansal [commented](https://gitlab.com/sbansal1999/testing-zulip-gitlab-integration/-/merge_requests/1#note_1406328457) on [MR #1](https://gitlab.com/sbansal1999/testing-zulip-gitlab-integration/-/merge_requests/1): \n \n ~~~ quote \n I am not sure if this new feature is even required or not. \n ~~~ "
2020-09-02 02:50:08 +02:00
# To keep things as valid JSON.
self . url = self . build_webhook_url ( use_merge_request_title = " false " )
2020-08-23 15:49:24 +02:00
self . check_webhook ( " note_hook__merge_request_note " , expected_topic , expected_message )
2020-07-29 07:39:42 +02:00
2018-07-20 00:49:05 +02:00
def test_note_merge_request_with_custom_topic_in_url ( self ) - > None :
2021-02-12 08:20:45 +01:00
self . url = self . build_webhook_url ( topic = " notifications " )
2020-04-09 21:51:58 +02:00
expected_topic = " notifications "
2023-05-27 19:35:15 +02:00
expected_message = " [[testing-zulip-gitlab-integration](https://gitlab.com/sbansal1999/testing-zulip-gitlab-integration)] Satyam Bansal [commented](https://gitlab.com/sbansal1999/testing-zulip-gitlab-integration/-/merge_requests/1#note_1406328457) on [MR #1 add new-feature](https://gitlab.com/sbansal1999/testing-zulip-gitlab-integration/-/merge_requests/1): \n \n ~~~ quote \n I am not sure if this new feature is even required or not. \n ~~~ "
2018-07-20 00:49:05 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook ( " note_hook__merge_request_note " , expected_topic , expected_message )
2018-07-20 00:49:05 +02:00
2017-11-04 07:47:46 +01:00
def test_note_issue_event_message ( self ) - > None :
2023-05-26 09:30:25 +02:00
expected_topic = " testing-zulip-gitlab-integration / issue #1 Add more lines "
2023-05-27 19:35:15 +02:00
expected_message = " Satyam Bansal [commented](https://gitlab.com/sbansal1999/testing-zulip-gitlab-integration/-/issues/1#note_1406279810) on [issue #1](https://gitlab.com/sbansal1999/testing-zulip-gitlab-integration/-/issues/1): \n \n ~~~ quote \n This is again a random comment. \n ~~~ "
2016-09-20 22:51:11 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook ( " note_hook__issue_note " , expected_topic , expected_message )
2016-09-20 22:51:11 +02:00
2018-12-18 23:37:44 +01:00
def test_note_confidential_issue_event_message ( self ) - > None :
2023-05-26 09:30:25 +02:00
expected_subject = " testing-zulip-gitlab-integration / issue #1 Add more lines "
2023-05-27 19:35:15 +02:00
expected_message = " Satyam Bansal [commented](https://gitlab.com/sbansal1999/testing-zulip-gitlab-integration/-/issues/1#note_1406130881) on [issue #1](https://gitlab.com/sbansal1999/testing-zulip-gitlab-integration/-/issues/1): \n \n ~~~ quote \n Some more comments \n ~~~ "
2018-12-18 23:37:44 +01:00
2020-08-23 15:49:24 +02:00
self . check_webhook ( " note_hook__confidential_issue_note " , expected_subject , expected_message )
2018-12-18 23:37:44 +01:00
2018-07-20 00:49:05 +02:00
def test_note_issue_with_custom_topic_in_url ( self ) - > None :
2021-02-12 08:20:45 +01:00
self . url = self . build_webhook_url ( topic = " notifications " )
2020-04-09 21:51:58 +02:00
expected_topic = " notifications "
2023-05-27 19:35:15 +02:00
expected_message = " [[testing-zulip-gitlab-integration](https://gitlab.com/sbansal1999/testing-zulip-gitlab-integration)] Satyam Bansal [commented](https://gitlab.com/sbansal1999/testing-zulip-gitlab-integration/-/issues/1#note_1406279810) on [issue #1 Add more lines](https://gitlab.com/sbansal1999/testing-zulip-gitlab-integration/-/issues/1): \n \n ~~~ quote \n This is again a random comment. \n ~~~ "
2018-07-20 00:49:05 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook ( " note_hook__issue_note " , expected_topic , expected_message )
2018-07-20 00:49:05 +02:00
2023-05-26 09:30:25 +02:00
def test_note_snippet_old_event_message ( self ) - > None :
2021-05-10 07:02:14 +02:00
expected_topic = " my-awesome-project / snippet #2 test "
2023-05-27 19:35:15 +02:00
expected_message = " Tomasz Kolek [commented](https://gitlab.com/tomaszkolek0/my-awesome-project/snippets/2#note_14172058) on [snippet #2](https://gitlab.com/tomaszkolek0/my-awesome-project/-/snippets/2): \n \n ~~~ quote \n Nice snippet \n ~~~ "
2016-09-20 22:51:11 +02:00
2023-05-26 09:30:25 +02:00
self . check_webhook ( " note_hook__snippet_note_old " , expected_topic , expected_message )
def test_note_snippet_event_message ( self ) - > None :
expected_topic = " testing-zulip-gitlab-integration / snippet #2547713 a ver... "
2023-05-27 19:35:15 +02:00
expected_message = " Satyam Bansal [commented](https://gitlab.com/sbansal1999/testing-zulip-gitlab-integration/-/snippets/2547713#note_1424268837) on [snippet #2547713](https://gitlab.com/sbansal1999/testing-zulip-gitlab-integration/-/snippets/2547713): \n \n ~~~ quote \n some comment \n ~~~ "
2023-05-26 09:30:25 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook ( " note_hook__snippet_note " , expected_topic , expected_message )
2016-09-20 22:51:11 +02:00
2018-07-20 00:49:05 +02:00
def test_note_snippet_with_custom_topic_in_url ( self ) - > None :
2021-02-12 08:20:45 +01:00
self . url = self . build_webhook_url ( topic = " notifications " )
2020-04-09 21:51:58 +02:00
expected_topic = " notifications "
2023-05-27 19:35:15 +02:00
expected_message = " [[testing-zulip-gitlab-integration](https://gitlab.com/sbansal1999/testing-zulip-gitlab-integration)] Satyam Bansal [commented](https://gitlab.com/sbansal1999/testing-zulip-gitlab-integration/-/snippets/2547713#note_1424268837) on [snippet #2547713 a very new new feature](https://gitlab.com/sbansal1999/testing-zulip-gitlab-integration/-/snippets/2547713): \n \n ~~~ quote \n some comment \n ~~~ "
2018-07-20 00:49:05 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook ( " note_hook__snippet_note " , expected_topic , expected_message )
2018-07-20 00:49:05 +02:00
2017-11-04 07:47:46 +01:00
def test_merge_request_created_without_assignee_event_message ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / MR #2 NEW MR "
expected_message = " Tomasz Kolek created [MR #2](https://gitlab.com/tomaszkolek0/my-awesome-project/merge_requests/2) from `tomek` to `master`: \n \n ~~~ quote \n description of merge request \n ~~~ "
2016-09-20 22:51:11 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
" merge_request_hook__merge_request_created_without_assignee " ,
2018-11-09 20:33:58 +01:00
expected_topic ,
2020-08-23 15:49:24 +02:00
expected_message ,
)
2016-11-29 07:22:02 +01:00
2018-07-20 00:49:05 +02:00
def test_merge_request_created_with_custom_topic_in_url ( self ) - > None :
2021-02-12 08:20:45 +01:00
self . url = self . build_webhook_url ( topic = " notifications " )
2020-04-09 21:51:58 +02:00
expected_topic = " notifications "
2020-04-22 15:28:34 +02:00
expected_message = " [[my-awesome-project](https://gitlab.com/tomaszkolek0/my-awesome-project)] Tomasz Kolek created [MR #2 NEW MR](https://gitlab.com/tomaszkolek0/my-awesome-project/merge_requests/2) from `tomek` to `master`: \n \n ~~~ quote \n description of merge request \n ~~~ "
2018-07-20 00:49:05 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
" merge_request_hook__merge_request_created_without_assignee " ,
2018-11-09 20:33:58 +01:00
expected_topic ,
2020-08-23 15:49:24 +02:00
expected_message ,
)
2018-07-20 00:49:05 +02:00
2017-11-04 07:47:46 +01:00
def test_merge_request_created_with_assignee_event_message ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / MR #3 New Merge Request "
2023-03-28 20:25:22 +02:00
expected_message = " Tomasz Kolek created [MR #3](https://gitlab.com/tomaszkolek0/my-awesome-project/merge_requests/3) from `tomek` to `master` (assigned to Tomasz Kolek): \n \n ~~~ quote \n description of merge request \n ~~~ "
2020-08-23 15:49:24 +02:00
self . check_webhook (
2021-02-12 08:20:45 +01:00
" merge_request_hook__merge_request_created_with_assignee " ,
2018-11-09 20:33:58 +01:00
expected_topic ,
2020-08-23 15:49:24 +02:00
expected_message ,
)
2016-09-20 22:51:11 +02:00
2020-08-22 11:46:23 +02:00
def test_merge_request_created_with_multiple_assignees_event_message ( self ) - > None :
expected_topic = " Demo Project / MR #1 Make a trivial change to the README. "
expected_message = """
2023-03-28 20:25:22 +02:00
Hemanth V . Alluri created [ MR #1](https://gitlab.com/Hypro999/demo-project/-/merge_requests/1) from `devel` to `master` (assigned to Hemanth V. Alluri and Hemanth V. Alluri):
2020-08-22 11:46:23 +02:00
~ ~ ~ quote
A trivial change that should probably be ignored .
~ ~ ~
""" .strip()
self . check_webhook (
2021-02-12 08:20:45 +01:00
" merge_request_hook__merge_request_created_with_multiple_assignees " ,
2020-08-22 11:46:23 +02:00
expected_topic ,
2021-02-12 08:19:30 +01:00
expected_message ,
)
2020-08-22 11:46:23 +02:00
2017-11-04 07:47:46 +01:00
def test_merge_request_closed_event_message ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / MR #2 NEW MR "
expected_message = " Tomasz Kolek closed [MR #2](https://gitlab.com/tomaszkolek0/my-awesome-project/merge_requests/2). "
2016-09-20 22:51:11 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
" merge_request_hook__merge_request_closed " , expected_topic , expected_message
)
2016-09-20 22:51:11 +02:00
2020-07-29 07:39:42 +02:00
def test_merge_request_closed_event_message_without_using_title ( self ) - > None :
expected_topic = " my-awesome-project / MR #2 "
expected_message = " Tomasz Kolek closed [MR #2](https://gitlab.com/tomaszkolek0/my-awesome-project/merge_requests/2). "
self . url = self . build_webhook_url ( use_merge_request_title = " false " )
2020-08-23 15:49:24 +02:00
self . check_webhook (
" merge_request_hook__merge_request_closed " , expected_topic , expected_message
)
2020-07-29 07:39:42 +02:00
2018-07-20 00:49:05 +02:00
def test_merge_request_closed_with_custom_topic_in_url ( self ) - > None :
2021-02-12 08:20:45 +01:00
self . url = self . build_webhook_url ( topic = " notifications " )
2020-04-09 21:51:58 +02:00
expected_topic = " notifications "
2020-04-22 15:28:34 +02:00
expected_message = " [[my-awesome-project](https://gitlab.com/tomaszkolek0/my-awesome-project)] Tomasz Kolek closed [MR #2 NEW MR](https://gitlab.com/tomaszkolek0/my-awesome-project/merge_requests/2). "
2018-07-20 00:49:05 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
" merge_request_hook__merge_request_closed " , expected_topic , expected_message
)
2018-07-20 00:49:05 +02:00
2017-11-04 07:47:46 +01:00
def test_merge_request_reopened_event_message ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / MR #1 Update the README with author ... "
expected_message = " Eeshan Garg reopened [MR #1](https://gitlab.com/eeshangarg/my-awesome-project/merge_requests/1). "
2017-05-31 06:30:04 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
" merge_request_hook__merge_request_reopened " , expected_topic , expected_message
)
2017-05-31 06:30:04 +02:00
2017-12-18 01:58:54 +01:00
def test_merge_request_approved_event_message ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / MR #1 Update the README with author ... "
expected_message = " Eeshan Garg approved [MR #1](https://gitlab.com/eeshangarg/my-awesome-project/merge_requests/1). "
2017-12-18 01:58:54 +01:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
" merge_request_hook__merge_request_approved " , expected_topic , expected_message
)
2017-12-18 01:58:54 +01:00
2017-11-04 07:47:46 +01:00
def test_merge_request_updated_event_message ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / MR #3 New Merge Request "
2023-03-20 01:20:38 +01:00
expected_message = " Tomasz Kolek updated [MR #3](https://gitlab.com/tomaszkolek0/my-awesome-project/merge_requests/3) (assigned to Tomasz Kolek): \n \n ~~~ quote \n updated desc \n ~~~ "
2020-08-23 15:49:24 +02:00
self . check_webhook (
2021-02-12 08:20:45 +01:00
" merge_request_hook__merge_request_updated " , expected_topic , expected_message
2021-02-12 08:19:30 +01:00
)
2016-09-20 22:51:11 +02:00
2017-11-04 07:47:46 +01:00
def test_merge_request_added_commit_event_message ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / MR #3 New Merge Request "
expected_message = " Tomasz Kolek added commit(s) to [MR #3](https://gitlab.com/tomaszkolek0/my-awesome-project/merge_requests/3). "
2020-08-23 15:49:24 +02:00
self . check_webhook (
" merge_request_hook__merge_request_added_commit " , expected_topic , expected_message
)
2016-09-20 22:51:11 +02:00
2017-11-04 07:47:46 +01:00
def test_merge_request_merged_event_message ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / MR #3 New Merge Request "
2023-03-20 01:20:38 +01:00
expected_message = " Tomasz Kolek merged [MR #3](https://gitlab.com/tomaszkolek0/my-awesome-project/merge_requests/3) from `tomek` to `master`. "
2016-09-20 22:51:11 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
" merge_request_hook__merge_request_merged " , expected_topic , expected_message
)
2016-09-20 22:51:11 +02:00
2017-11-04 07:47:46 +01:00
def test_wiki_page_opened_event_message ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project "
2021-05-10 07:02:14 +02:00
expected_message = ' Tomasz Kolek created [wiki page " how to " ](https://gitlab.com/tomaszkolek0/my-awesome-project/wikis/how-to). '
2016-09-20 22:51:11 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook ( " wiki_page_hook__wiki_page_opened " , expected_topic , expected_message )
2016-09-20 22:51:11 +02:00
2017-11-04 07:47:46 +01:00
def test_wiki_page_edited_event_message ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project "
2021-05-10 07:02:14 +02:00
expected_message = ' Tomasz Kolek updated [wiki page " how to " ](https://gitlab.com/tomaszkolek0/my-awesome-project/wikis/how-to). '
2016-09-20 22:51:11 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook ( " wiki_page_hook__wiki_page_edited " , expected_topic , expected_message )
2016-09-28 22:02:41 +02:00
2017-11-04 07:47:46 +01:00
def test_build_created_event_message ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / master "
expected_message = " Build job_name from test stage was created. "
2016-09-28 22:02:41 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
2021-02-12 08:19:30 +01:00
" build_created " ,
expected_topic ,
expected_message ,
HTTP_X_GITLAB_EVENT = " Job Hook " ,
2016-09-28 22:02:41 +02:00
)
2017-11-04 07:47:46 +01:00
def test_build_started_event_message ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / master "
expected_message = " Build job_name from test stage started. "
2016-09-28 22:02:41 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
2021-02-12 08:19:30 +01:00
" build_started " ,
expected_topic ,
expected_message ,
HTTP_X_GITLAB_EVENT = " Job Hook " ,
2016-09-28 22:02:41 +02:00
)
2017-11-04 07:47:46 +01:00
def test_build_succeeded_event_message ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / master "
expected_message = " Build job_name from test stage changed status to success. "
2016-09-28 22:02:41 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
2021-02-12 08:19:30 +01:00
" build_succeeded " ,
expected_topic ,
expected_message ,
HTTP_X_GITLAB_EVENT = " Job Hook " ,
2016-09-28 22:02:41 +02:00
)
2016-09-28 23:06:04 +02:00
2018-02-24 23:41:25 +01:00
def test_build_created_event_message_legacy_event_name ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / master "
expected_message = " Build job_name from test stage was created. "
2018-02-24 23:41:25 +01:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
2021-02-12 08:19:30 +01:00
" build_created " ,
expected_topic ,
expected_message ,
HTTP_X_GITLAB_EVENT = " Build Hook " ,
2018-02-24 23:41:25 +01:00
)
def test_build_started_event_message_legacy_event_name ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / master "
expected_message = " Build job_name from test stage started. "
2018-02-24 23:41:25 +01:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
2021-02-12 08:19:30 +01:00
" build_started " ,
expected_topic ,
expected_message ,
HTTP_X_GITLAB_EVENT = " Build Hook " ,
2018-02-24 23:41:25 +01:00
)
def test_build_succeeded_event_message_legacy_event_name ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / master "
expected_message = " Build job_name from test stage changed status to success. "
2018-02-24 23:41:25 +01:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
2021-02-12 08:19:30 +01:00
" build_succeeded " ,
expected_topic ,
expected_message ,
HTTP_X_GITLAB_EVENT = " Build Hook " ,
2018-02-24 23:41:25 +01:00
)
2020-06-06 15:09:57 +02:00
def test_pipeline_succeeded_with_artifacts_event_message ( self ) - > None :
expected_topic = " onlysomeproject / test/links-in-zulip-pipeline-message "
2020-06-06 15:12:48 +02:00
expected_message = " [Pipeline (22668)](https://gitlab.example.com/group1/onlysomeproject/pipelines/22668) changed status to success with build(s): \n * [cleanup:cleanup docker image](https://gitlab.example.com/group1/onlysomeproject/-/jobs/58592) - success \n * [pages](https://gitlab.example.com/group1/onlysomeproject/-/jobs/58591) - success \n * built artifact: *artifacts.zip* [[Browse](https://gitlab.example.com/group1/onlysomeproject/-/jobs/58591/artifacts/browse)|[Download](https://gitlab.example.com/group1/onlysomeproject/-/jobs/58591/artifacts/download)] \n * [black+pytest:future environment](https://gitlab.example.com/group1/onlysomeproject/-/jobs/58590) - success \n * [docs:anaconda environment](https://gitlab.example.com/group1/onlysomeproject/-/jobs/58589) - success \n * built artifact: *sphinx-docs.zip* [[Browse](https://gitlab.example.com/group1/onlysomeproject/-/jobs/58589/artifacts/browse)|[Download](https://gitlab.example.com/group1/onlysomeproject/-/jobs/58589/artifacts/download)] \n * [pytest:current environment](https://gitlab.example.com/group1/onlysomeproject/-/jobs/58588) - success \n * [black:current environment](https://gitlab.example.com/group1/onlysomeproject/-/jobs/58587) - success \n * [setup:docker image](https://gitlab.example.com/group1/onlysomeproject/-/jobs/58586) - success. "
2020-06-06 15:09:57 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
2023-01-02 20:50:23 +01:00
" pipeline_hook__pipeline_succeeded_with_artifacts " ,
2021-02-12 08:19:30 +01:00
expected_topic ,
expected_message ,
2020-06-06 15:09:57 +02:00
)
2017-11-04 07:47:46 +01:00
def test_pipeline_succeeded_event_message ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / master "
2020-06-06 15:12:48 +02:00
expected_message = " [Pipeline (4414206)](https://gitlab.com/TomaszKolek/my-awesome-project/pipelines/4414206) changed status to success with build(s): \n * [job_name2](https://gitlab.com/TomaszKolek/my-awesome-project/-/jobs/4541113) - success \n * [job_name](https://gitlab.com/TomaszKolek/my-awesome-project/-/jobs/4541112) - success. "
2016-09-28 23:06:04 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
2021-02-12 08:19:30 +01:00
" pipeline_hook__pipeline_succeeded " ,
expected_topic ,
expected_message ,
2016-09-28 23:06:04 +02:00
)
2017-11-04 07:47:46 +01:00
def test_pipeline_started_event_message ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / master "
2020-06-06 15:12:48 +02:00
expected_message = " [Pipeline (4414206)](https://gitlab.com/TomaszKolek/my-awesome-project/pipelines/4414206) started with build(s): \n * [job_name](https://gitlab.com/TomaszKolek/my-awesome-project/-/jobs/4541112) - running \n * [job_name2](https://gitlab.com/TomaszKolek/my-awesome-project/-/jobs/4541113) - pending. "
2016-09-28 23:06:04 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
2021-02-12 08:19:30 +01:00
" pipeline_hook__pipeline_started " ,
expected_topic ,
expected_message ,
2016-09-28 23:06:04 +02:00
)
2017-11-04 07:47:46 +01:00
def test_pipeline_pending_event_message ( self ) - > None :
2020-04-09 21:51:58 +02:00
expected_topic = " my-awesome-project / master "
2020-06-06 15:12:48 +02:00
expected_message = " [Pipeline (4414206)](https://gitlab.com/TomaszKolek/my-awesome-project/pipelines/4414206) was created with build(s): \n * [job_name2](https://gitlab.com/TomaszKolek/my-awesome-project/-/jobs/4541113) - pending \n * [job_name](https://gitlab.com/TomaszKolek/my-awesome-project/-/jobs/4541112) - created. "
2016-09-28 23:06:04 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
2021-02-12 08:19:30 +01:00
" pipeline_hook__pipeline_pending " ,
expected_topic ,
expected_message ,
2016-09-28 23:06:04 +02:00
)
2017-04-03 04:46:41 +02:00
2018-03-12 02:47:49 +01:00
def test_issue_type_test_payload ( self ) - > None :
2021-02-12 08:20:45 +01:00
expected_topic = " public-repo "
2020-04-09 21:51:58 +02:00
expected_message = " Webhook for **public-repo** has been configured successfully! :tada: "
2017-11-15 04:20:21 +01:00
2020-08-23 15:49:24 +02:00
self . check_webhook (
2021-02-12 08:19:30 +01:00
" test_hook__issue_test_payload " ,
expected_topic ,
expected_message ,
2017-11-15 04:20:21 +01:00
)
2021-02-12 08:20:45 +01:00
@patch ( " zerver.lib.webhooks.common.check_send_webhook_message " )
2017-04-03 04:46:41 +02:00
def test_push_event_message_filtered_by_branches_ignore (
2021-02-12 08:19:30 +01:00
self , check_send_webhook_message_mock : MagicMock
) - > None :
2021-02-12 08:20:45 +01:00
self . url = self . build_webhook_url ( branches = " master,development " )
payload = self . get_body ( " push_hook " )
2021-02-12 08:19:30 +01:00
result = self . client_post (
2021-02-12 08:20:45 +01:00
self . url , payload , HTTP_X_GITLAB_EVENT = " Push Hook " , content_type = " application/json "
2021-02-12 08:19:30 +01:00
)
2018-03-13 23:43:02 +01:00
self . assertFalse ( check_send_webhook_message_mock . called )
2017-04-03 04:46:41 +02:00
self . assert_json_success ( result )
2021-02-12 08:20:45 +01:00
@patch ( " zerver.lib.webhooks.common.check_send_webhook_message " )
2017-04-03 04:46:41 +02:00
def test_push_commits_more_than_limit_message_filtered_by_branches_ignore (
2021-02-12 08:19:30 +01:00
self , check_send_webhook_message_mock : MagicMock
) - > None :
2021-02-12 08:20:45 +01:00
self . url = self . build_webhook_url ( branches = " master,development " )
payload = self . get_body ( " push_hook__push_commits_more_than_limit " )
2021-02-12 08:19:30 +01:00
result = self . client_post (
2021-02-12 08:20:45 +01:00
self . url , payload , HTTP_X_GITLAB_EVENT = " Push Hook " , content_type = " application/json "
2021-02-12 08:19:30 +01:00
)
2018-03-13 23:43:02 +01:00
self . assertFalse ( check_send_webhook_message_mock . called )
2017-04-03 04:46:41 +02:00
self . assert_json_success ( result )
2020-04-25 11:09:30 +02:00
2020-05-11 23:36:05 +02:00
def test_job_hook_event ( self ) - > None :
expected_topic = " gitlab_test / gitlab-script-trigger "
expected_message = " Build test from test stage was created. "
2020-08-23 15:49:24 +02:00
self . check_webhook ( " job_hook__build_created " , expected_topic , expected_message )
2020-05-11 23:36:05 +02:00
2020-05-12 01:13:18 +02:00
def test_job_hook_event_topic ( self ) - > None :
self . url = self . build_webhook_url ( topic = " provided topic " )
expected_topic = " provided topic "
expected_message = " [[gitlab_test](http://192.168.64.1:3005/gitlab-org/gitlab-test)] Build test from test stage was created. "
2020-08-23 15:49:24 +02:00
self . check_webhook ( " job_hook__build_created " , expected_topic , expected_message )
2020-05-12 01:13:18 +02:00
2020-04-25 11:09:30 +02:00
def test_system_push_event_message ( self ) - > None :
expected_topic = " gitlab / master "
2022-11-07 21:15:53 +01:00
expected_message = " John Smith [pushed](http://test.example.com/gitlab/gitlab/compare/95790bf891e76fee5e1747ab589903a6a1f80f22...da1560886d4f094c3e6c9ef40349f7d38b5d27d7) 1 commit to branch master. Commits by Test User (1). \n \n * Add simple search to projects in public area ([c5feabde2d8](https://test.example.com/gitlab/gitlab/-/commit/c5feabde2d8cd023215af4d2ceeb7a64839fc428)) "
2020-08-23 15:49:24 +02:00
self . check_webhook ( " system_hook__push_hook " , expected_topic , expected_message )
2020-04-25 11:09:30 +02:00
def test_system_merge_request_created_without_assignee_event_message ( self ) - > None :
expected_topic = " my-awesome-project / MR #2 NEW MR "
expected_message = " Tomasz Kolek created [MR #2](https://gitlab.com/tomaszkolek0/my-awesome-project/merge_requests/2) from `tomek` to `master`: \n \n ~~~ quote \n description of merge request \n ~~~ "
2020-08-23 15:49:24 +02:00
self . check_webhook (
" system_hook__merge_request_created_without_assignee " , expected_topic , expected_message
)
2020-04-25 11:09:30 +02:00
def test_system_merge_request_created_with_custom_topic_in_url ( self ) - > None :
2021-02-12 08:20:45 +01:00
self . url = self . build_webhook_url ( topic = " notifications " )
2020-04-25 11:09:30 +02:00
expected_topic = " notifications "
expected_message = " [[my-awesome-project](https://gitlab.com/tomaszkolek0/my-awesome-project)] Tomasz Kolek created [MR #2 NEW MR](https://gitlab.com/tomaszkolek0/my-awesome-project/merge_requests/2) from `tomek` to `master`: \n \n ~~~ quote \n description of merge request \n ~~~ "
2020-08-23 15:49:24 +02:00
self . check_webhook (
" system_hook__merge_request_created_without_assignee " , expected_topic , expected_message
)
2020-04-25 11:09:30 +02:00
def test_system_merge_request_created_with_assignee_event_message ( self ) - > None :
expected_topic = " my-awesome-project / MR #3 New Merge Request "
2023-03-28 20:25:22 +02:00
expected_message = " Tomasz Kolek created [MR #3](https://gitlab.com/tomaszkolek0/my-awesome-project/merge_requests/3) from `tomek` to `master` (assigned to Tomasz Kolek): \n \n ~~~ quote \n description of merge request \n ~~~ "
2020-08-23 15:49:24 +02:00
self . check_webhook (
2021-02-12 08:20:45 +01:00
" system_hook__merge_request_created_with_assignee " , expected_topic , expected_message
2021-02-12 08:19:30 +01:00
)
2020-04-25 11:09:30 +02:00
def test_system_merge_request_closed_event_message ( self ) - > None :
expected_topic = " my-awesome-project / MR #2 NEW MR "
expected_message = " Tomasz Kolek closed [MR #2](https://gitlab.com/tomaszkolek0/my-awesome-project/merge_requests/2). "
2020-08-23 15:49:24 +02:00
self . check_webhook ( " system_hook__merge_request_closed " , expected_topic , expected_message )
2020-04-25 11:09:30 +02:00
def test_system_merge_request_merged_event_message ( self ) - > None :
expected_topic = " my-awesome-project / MR #3 New Merge Request "
2023-03-20 01:20:38 +01:00
expected_message = " Tomasz Kolek merged [MR #3](https://gitlab.com/tomaszkolek0/my-awesome-project/merge_requests/3) from `tomek` to `master`. "
2020-04-25 11:09:30 +02:00
2020-08-23 15:49:24 +02:00
self . check_webhook ( " system_hook__merge_request_merged " , expected_topic , expected_message )
2020-04-25 11:09:30 +02:00
def test_system_merge_request_closed_with_custom_topic_in_url ( self ) - > None :
2021-02-12 08:20:45 +01:00
self . url = self . build_webhook_url ( topic = " notifications " )
2020-04-25 11:09:30 +02:00
expected_topic = " notifications "
expected_message = " [[my-awesome-project](https://gitlab.com/tomaszkolek0/my-awesome-project)] Tomasz Kolek closed [MR #2 NEW MR](https://gitlab.com/tomaszkolek0/my-awesome-project/merge_requests/2). "
2020-08-23 15:49:24 +02:00
self . check_webhook ( " system_hook__merge_request_closed " , expected_topic , expected_message )
2020-04-25 11:12:42 +02:00
def test_merge_request_unapproved_event_message ( self ) - > None :
expected_topic = " my-awesome-project / MR #1 Update the README with author ... "
expected_message = " Eeshan Garg unapproved [MR #1](https://gitlab.com/eeshangarg/my-awesome-project/merge_requests/1). "
2020-08-23 15:49:24 +02:00
self . check_webhook (
" merge_request_hook__merge_request_unapproved " , expected_topic , expected_message
)