2016-09-20 22:51:11 +02:00
# -*- coding: utf-8 -*-
2016-11-10 19:30:09 +01:00
from zerver . lib . test_classes import WebhookTestCase
2016-09-20 22:51:11 +02:00
class Bitbucket2HookTests ( WebhookTestCase ) :
STREAM_NAME = ' bitbucket2 '
URL_TEMPLATE = " /api/v1/external/bitbucket2?stream= {stream} &api_key= {api_key} "
2016-10-07 16:12:52 +02:00
FIXTURE_DIR_NAME = ' bitbucket '
2016-10-02 09:44:33 +02:00
EXPECTED_SUBJECT = u " Repository name "
2016-10-11 18:55:39 +02:00
EXPECTED_SUBJECT_PR_EVENTS = u " Repository name / PR #1 new commit "
2016-10-19 23:44:02 +02:00
EXPECTED_SUBJECT_ISSUE_EVENTS = u " Repository name / Issue #1 Bug "
2016-10-05 19:48:15 +02:00
EXPECTED_SUBJECT_BRANCH_EVENTS = u " Repository name / master "
2016-09-20 22:51:11 +02:00
def test_bitbucket2_on_push_event ( self ) :
# type: () -> None
2017-03-15 10:15:03 +01:00
commit_info = u ' * first commit ([84b96ad](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed)) '
2017-04-05 09:12:19 +02:00
expected_message = u " kolaszek [pushed](https://bitbucket.org/kolaszek/repository-name/branch/master) 1 commit to branch master. Commits by Tomasz(1) \n \n {} " . format ( commit_info )
2016-10-07 16:12:52 +02:00
self . send_and_test_stream_message ( ' v2_push ' , self . EXPECTED_SUBJECT_BRANCH_EVENTS , expected_message )
2016-09-20 22:51:11 +02:00
2017-04-05 09:12:19 +02:00
def test_bitbucket2_on_push_commits_multiple_committers ( self ) :
# type: () -> None
commit_info = u ' * first commit ([84b96ad](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed)) \n '
expected_message = u """ kolaszek [pushed](https://bitbucket.org/kolaszek/repository-name/branch/master) 3 commits to branch master. Commits by Benjamin(2) and Tomasz(1) \n \n {} * first commit ([84b96ad](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed)) """ . format ( commit_info * 2 )
self . send_and_test_stream_message ( ' v2_push_multiple_committers ' , self . EXPECTED_SUBJECT_BRANCH_EVENTS , expected_message )
def test_bitbucket2_on_push_commits_multiple_committers_with_others ( self ) :
# type: () -> None
commit_info = u ' * first commit ([84b96ad](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed)) \n '
expected_message = u """ kolaszek [pushed](https://bitbucket.org/kolaszek/repository-name/branch/master) 10 commits to branch master. Commits by Tomasz(4), James(3), Brendon(2) and others(1) \n \n {} * first commit ([84b96ad](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed)) """ . format ( commit_info * 9 )
self . send_and_test_stream_message ( ' v2_push_multiple_committers_with_others ' , self . EXPECTED_SUBJECT_BRANCH_EVENTS , expected_message )
2016-10-07 15:12:51 +02:00
def test_bitbucket2_on_push_commits_above_limit_event ( self ) :
# type: () -> None
2017-03-15 10:15:03 +01:00
commit_info = ' * a ([6f161a7](https://bitbucket.org/kolaszek/repository-name/commits/6f161a7bced94430ac8947d87dbf45c6deee3fb0)) \n '
2017-04-05 09:12:19 +02:00
expected_message = u " kolaszek [pushed](https://bitbucket.org/kolaszek/repository-name/branches/compare/6f161a7bced94430ac8947d87dbf45c6deee3fb0..1221f2fda6f1e3654b09f1f3a08390e4cb25bb48) 5 commits to branch master. Commits by Tomasz(5) \n \n {} [and more commit(s)] " . format (
2016-11-11 12:45:58 +01:00
( commit_info * 5 ) ,
2016-10-07 15:12:51 +02:00
)
2016-10-07 16:12:52 +02:00
self . send_and_test_stream_message ( ' v2_push_commits_above_limit ' , self . EXPECTED_SUBJECT_BRANCH_EVENTS , expected_message )
2016-10-07 15:12:51 +02:00
2016-10-06 15:32:10 +02:00
def test_bitbucket2_on_force_push_event ( self ) :
# type: () -> None
expected_message = u " kolaszek [force pushed](https://bitbucket.org/kolaszek/repository-name/branch/master) to branch master. Head is now 25f93d22b719e2d678a7ad5ee0ef0d1fcdf39c12 "
2016-10-07 16:12:52 +02:00
self . send_and_test_stream_message ( ' v2_force_push ' , self . EXPECTED_SUBJECT_BRANCH_EVENTS , expected_message )
2016-10-06 15:32:10 +02:00
2016-10-06 16:14:51 +02:00
def test_bitbucket2_on_remove_branch_event ( self ) :
# type: () -> None
expected_message = u " kolaszek deleted branch master "
2016-10-07 16:12:52 +02:00
self . send_and_test_stream_message ( ' v2_remove_branch ' , self . EXPECTED_SUBJECT_BRANCH_EVENTS , expected_message )
2016-10-06 16:14:51 +02:00
2016-09-20 22:51:11 +02:00
def test_bitbucket2_on_fork_event ( self ) :
# type: () -> None
expected_message = u " User Tomasz(login: kolaszek) forked the repository into [kolaszek/repository-name2](https://bitbucket.org/kolaszek/repository-name2). "
2016-10-07 16:12:52 +02:00
self . send_and_test_stream_message ( ' v2_fork ' , self . EXPECTED_SUBJECT , expected_message )
2016-09-20 22:51:11 +02:00
def test_bitbucket2_on_commit_comment_created_event ( self ) :
# type: () -> None
2016-10-27 21:43:15 +02:00
expected_message = u " kolaszek [commented](https://bitbucket.org/kolaszek/repository-name/commits/32c4ea19aa3af10acd08e419e2c354941a365d74#comment-3354963) on [32c4ea1](https://bitbucket.org/kolaszek/repository-name/commits/32c4ea19aa3af10acd08e419e2c354941a365d74) \n ~~~ quote \n Nice fix! \n ~~~ "
2016-10-07 16:12:52 +02:00
self . send_and_test_stream_message ( ' v2_commit_comment_created ' , self . EXPECTED_SUBJECT , expected_message )
2016-09-20 22:51:11 +02:00
def test_bitbucket2_on_commit_status_changed_event ( self ) :
# type: () -> None
expected_message = u " [System mybuildtool](https://my-build-tool.com/builds/MY-PROJECT/BUILD-777) changed status of https://bitbucket.org/kolaszek/repository-name/9fec847784abb10b2fa567ee63b85bd238955d0e to SUCCESSFUL. "
2016-10-07 16:12:52 +02:00
self . send_and_test_stream_message ( ' v2_commit_status_changed ' , self . EXPECTED_SUBJECT , expected_message )
2016-09-20 22:51:11 +02:00
def test_bitbucket2_on_issue_created_event ( self ) :
# type: () -> None
2016-10-26 21:13:00 +02:00
expected_message = u " kolaszek created [Issue #1](https://bitbucket.org/kolaszek/repository-name/issues/2/bug)(assigned to kolaszek) \n \n ~~~ quote \n Such a bug \n ~~~ "
2016-10-19 23:44:02 +02:00
self . send_and_test_stream_message ( ' v2_issue_created ' , self . EXPECTED_SUBJECT_ISSUE_EVENTS , expected_message )
2016-09-20 22:51:11 +02:00
def test_bitbucket2_on_issue_updated_event ( self ) :
# type: () -> None
2016-10-26 21:13:00 +02:00
expected_message = u " kolaszek updated [Issue #1](https://bitbucket.org/kolaszek/repository-name/issues/2/bug) "
2016-10-19 23:44:02 +02:00
self . send_and_test_stream_message ( ' v2_issue_updated ' , self . EXPECTED_SUBJECT_ISSUE_EVENTS , expected_message )
2016-09-20 22:51:11 +02:00
def test_bitbucket2_on_issue_commented_event ( self ) :
# type: () -> None
2016-10-26 21:13:00 +02:00
expected_message = u " kolaszek [commented](https://bitbucket.org/kolaszek/repository-name/issues/2#comment-28973596) on [Issue #1](https://bitbucket.org/kolaszek/repository-name/issues/2/bug) "
2016-10-19 23:44:02 +02:00
self . send_and_test_stream_message ( ' v2_issue_commented ' , self . EXPECTED_SUBJECT_ISSUE_EVENTS , expected_message )
2016-09-20 22:51:11 +02:00
def test_bitbucket2_on_pull_request_created_event ( self ) :
# type: () -> None
2016-10-26 21:13:00 +02:00
expected_message = u " kolaszek created [PR #1](https://bitbucket.org/kolaszek/repository-name/pull-requests/1)(assigned to tkolek) \n from `new-branch` to `master` \n \n ~~~ quote \n description \n ~~~ "
2016-09-20 22:51:11 +02:00
kwargs = {
" HTTP_X_EVENT_KEY " : ' pullrequest:created '
}
2016-10-11 18:55:39 +02:00
self . send_and_test_stream_message ( ' v2_pull_request_created_or_updated ' , self . EXPECTED_SUBJECT_PR_EVENTS , expected_message , * * kwargs )
2016-09-20 22:51:11 +02:00
def test_bitbucket2_on_pull_request_updated_event ( self ) :
# type: () -> None
2016-10-26 21:13:00 +02:00
expected_message = u " kolaszek updated [PR #1](https://bitbucket.org/kolaszek/repository-name/pull-requests/1)(assigned to tkolek) \n from `new-branch` to `master` \n \n ~~~ quote \n description \n ~~~ "
2016-09-20 22:51:11 +02:00
kwargs = {
" HTTP_X_EVENT_KEY " : ' pullrequest:updated '
}
2016-10-11 18:55:39 +02:00
self . send_and_test_stream_message ( ' v2_pull_request_created_or_updated ' , self . EXPECTED_SUBJECT_PR_EVENTS , expected_message , * * kwargs )
2016-09-20 22:51:11 +02:00
def test_bitbucket2_on_pull_request_approved_event ( self ) :
# type: () -> None
2016-10-26 21:13:00 +02:00
expected_message = u " kolaszek approved [PR #1](https://bitbucket.org/kolaszek/repository-name/pull-requests/1) "
2016-09-20 22:51:11 +02:00
kwargs = {
" HTTP_X_EVENT_KEY " : ' pullrequest:approved '
}
2016-10-11 18:55:39 +02:00
self . send_and_test_stream_message ( ' v2_pull_request_approved_or_unapproved ' , self . EXPECTED_SUBJECT_PR_EVENTS , expected_message , * * kwargs )
2016-09-20 22:51:11 +02:00
def test_bitbucket2_on_pull_request_unapproved_event ( self ) :
# type: () -> None
2016-10-26 21:13:00 +02:00
expected_message = u " kolaszek unapproved [PR #1](https://bitbucket.org/kolaszek/repository-name/pull-requests/1) "
2016-09-20 22:51:11 +02:00
kwargs = {
" HTTP_X_EVENT_KEY " : ' pullrequest:unapproved '
}
2016-10-11 18:55:39 +02:00
self . send_and_test_stream_message ( ' v2_pull_request_approved_or_unapproved ' , self . EXPECTED_SUBJECT_PR_EVENTS , expected_message , * * kwargs )
2016-09-20 22:51:11 +02:00
def test_bitbucket2_on_pull_request_declined_event ( self ) :
# type: () -> None
2016-10-26 21:13:00 +02:00
expected_message = u " kolaszek rejected [PR #1](https://bitbucket.org/kolaszek/repository-name/pull-requests/1) "
2016-09-20 22:51:11 +02:00
kwargs = {
" HTTP_X_EVENT_KEY " : ' pullrequest:rejected '
}
2017-01-11 14:17:41 +01:00
self . send_and_test_stream_message ( ' v2_pull_request_fulfilled_or_rejected ' , self . EXPECTED_SUBJECT_PR_EVENTS , expected_message , * * kwargs )
2016-09-20 22:51:11 +02:00
2017-01-11 14:17:41 +01:00
def test_bitbucket2_on_pull_request_fulfilled_event ( self ) :
2016-09-20 22:51:11 +02:00
# type: () -> None
2016-10-26 21:13:00 +02:00
expected_message = u " kolaszek merged [PR #1](https://bitbucket.org/kolaszek/repository-name/pull-requests/1) "
2016-09-20 22:51:11 +02:00
kwargs = {
2017-01-11 14:17:41 +01:00
" HTTP_X_EVENT_KEY " : ' pullrequest:fulfilled '
2016-09-20 22:51:11 +02:00
}
2017-01-11 14:17:41 +01:00
self . send_and_test_stream_message ( ' v2_pull_request_fulfilled_or_rejected ' , self . EXPECTED_SUBJECT_PR_EVENTS , expected_message , * * kwargs )
2016-09-20 22:51:11 +02:00
def test_bitbucket2_on_pull_request_comment_created_event ( self ) :
# type: () -> None
2016-10-26 21:13:00 +02:00
expected_message = u " kolaszek [commented](https://bitbucket.org/kolaszek/repository-name/pull-requests/3/_/diff#comment-20576503) on [PR #1](https://bitbucket.org/kolaszek/repository-name/pull-requests/3) \n \n ~~~ quote \n Comment1 \n ~~~ "
2016-09-20 22:51:11 +02:00
kwargs = {
" HTTP_X_EVENT_KEY " : ' pullrequest:comment_created '
}
2016-10-11 18:55:39 +02:00
self . send_and_test_stream_message ( ' v2_pull_request_comment_action ' , self . EXPECTED_SUBJECT_PR_EVENTS , expected_message , * * kwargs )
2016-09-20 22:51:11 +02:00
def test_bitbucket2_on_pull_request_comment_updated_event ( self ) :
# type: () -> None
2016-11-03 17:37:20 +01:00
expected_message = u " kolaszek updated a [comment](https://bitbucket.org/kolaszek/repository-name/pull-requests/3/_/diff#comment-20576503) on [PR #1](https://bitbucket.org/kolaszek/repository-name/pull-requests/3) \n \n ~~~ quote \n Comment1 \n ~~~ "
2016-09-20 22:51:11 +02:00
kwargs = {
" HTTP_X_EVENT_KEY " : ' pullrequest:comment_updated '
}
2016-10-11 18:55:39 +02:00
self . send_and_test_stream_message ( ' v2_pull_request_comment_action ' , self . EXPECTED_SUBJECT_PR_EVENTS , expected_message , * * kwargs )
2016-09-20 22:51:11 +02:00
def test_bitbucket2_on_pull_request_comment_deleted_event ( self ) :
# type: () -> None
2016-11-03 17:37:20 +01:00
expected_message = u " kolaszek deleted a [comment](https://bitbucket.org/kolaszek/repository-name/pull-requests/3/_/diff#comment-20576503) on [PR #1](https://bitbucket.org/kolaszek/repository-name/pull-requests/3) \n \n ~~~ quote \n Comment1 \n ~~~ "
2016-09-20 22:51:11 +02:00
kwargs = {
" HTTP_X_EVENT_KEY " : ' pullrequest:comment_deleted '
}
2016-10-11 18:55:39 +02:00
self . send_and_test_stream_message ( ' v2_pull_request_comment_action ' , self . EXPECTED_SUBJECT_PR_EVENTS , expected_message , * * kwargs )
2016-10-07 17:53:27 +02:00
2016-11-09 16:05:45 +01:00
def test_bitbucket2_on_push_one_tag_event ( self ) :
# type: () -> None
2016-11-14 20:32:37 +01:00
expected_message = u " kolaszek pushed tag [a](https://bitbucket.org/kolaszek/repository-name/commits/tag/a) "
2016-11-09 16:05:45 +01:00
kwargs = {
" HTTP_X_EVENT_KEY " : ' pullrequest:push '
}
self . send_and_test_stream_message ( ' v2_push_one_tag ' , self . EXPECTED_SUBJECT , expected_message , * * kwargs )
def test_bitbucket2_on_push_remove_tag_event ( self ) :
# type: () -> None
2016-11-14 20:32:37 +01:00
expected_message = u " kolaszek removed tag [a](https://bitbucket.org/kolaszek/repository-name/commits/tag/a) "
2016-11-09 16:05:45 +01:00
kwargs = {
" HTTP_X_EVENT_KEY " : ' pullrequest:push '
}
self . send_and_test_stream_message ( ' v2_push_remove_tag ' , self . EXPECTED_SUBJECT , expected_message , * * kwargs )
def test_bitbucket2_on_push_more_than_one_tag_event ( self ) :
# type: () -> None
2016-11-14 20:32:37 +01:00
expected_message = u " kolaszek pushed tag [ {name} ](https://bitbucket.org/kolaszek/repository-name/commits/tag/ {name} ) "
2016-11-09 16:05:45 +01:00
kwargs = {
" HTTP_X_EVENT_KEY " : ' pullrequest:push '
}
self . send_and_test_stream_message ( ' v2_push_more_than_one_tag ' , * * kwargs )
msg = self . get_last_message ( )
self . do_test_subject ( msg , self . EXPECTED_SUBJECT )
self . do_test_message ( msg , expected_message . format ( name = ' b ' ) )
msg = self . get_second_to_last_message ( )
self . do_test_subject ( msg , self . EXPECTED_SUBJECT )
self . do_test_message ( msg , expected_message . format ( name = ' a ' ) )
2016-11-11 13:32:41 +01:00
def test_bitbucket2_on_more_than_one_push_event ( self ) :
# type: () -> None
kwargs = {
" HTTP_X_EVENT_KEY " : ' pullrequest:push '
}
self . send_and_test_stream_message ( ' v2_more_than_one_push_event ' , * * kwargs )
msg = self . get_second_to_last_message ( )
2017-04-05 09:12:19 +02:00
self . do_test_message ( msg , ' kolaszek [pushed](https://bitbucket.org/kolaszek/repository-name/branch/master) 1 commit to branch master. Commits by Tomasz(1) \n \n * first commit ([84b96ad](https://bitbucket.org/kolaszek/repository-name/commits/84b96adc644a30fd6465b3d196369d880762afed)) ' )
2016-11-11 13:32:41 +01:00
self . do_test_subject ( msg , self . EXPECTED_SUBJECT_BRANCH_EVENTS )
msg = self . get_last_message ( )
2016-11-14 20:32:37 +01:00
self . do_test_message ( msg , ' kolaszek pushed tag [a](https://bitbucket.org/kolaszek/repository-name/commits/tag/a) ' )
2016-11-11 13:32:41 +01:00
self . do_test_subject ( msg , self . EXPECTED_SUBJECT )