2016-09-20 22:51:11 +02:00
# -*- coding: utf-8 -*-
2016-12-04 18:38:56 +01:00
from typing import Text
2016-11-10 19:30:09 +01:00
from zerver . lib . test_classes import WebhookTestCase
2016-09-20 22:51:11 +02:00
class JiraHookTests ( WebhookTestCase ) :
STREAM_NAME = ' jira '
URL_TEMPLATE = u " /api/v1/external/jira?api_key= {api_key} "
def test_unknown ( self ) :
# type: () -> None
url = self . build_webhook_url ( )
result = self . client_post ( url ,
self . get_body ( ' unknown ' ) ,
stream_name = " jira " ,
content_type = " application/json " )
self . assert_json_error ( result , ' Unknown JIRA event type ' )
def test_custom_stream ( self ) :
# type: () -> None
api_key = self . get_api_key ( self . TEST_USER_EMAIL )
url = " /api/v1/external/jira?api_key= %s &stream=jira_custom " % ( api_key , )
msg = self . send_json_payload ( self . TEST_USER_EMAIL ,
url ,
self . get_body ( ' created ' ) ,
stream_name = " jira_custom " ,
content_type = " application/json " )
self . assertEqual ( msg . topic_name ( ) , " BUG-15: New bug with hook " )
2016-10-19 13:21:07 +02:00
self . assertEqual ( msg . content , """ Leo Franchi **created** [BUG-15](http://lfranchi.com:8080/browse/BUG-15) priority Major, assigned to **no one**:
2016-09-20 22:51:11 +02:00
> New bug with hook """ )
def test_created ( self ) :
# type: () -> None
expected_subject = " BUG-15: New bug with hook "
2016-10-19 13:21:07 +02:00
expected_message = """ Leo Franchi **created** [BUG-15](http://lfranchi.com:8080/browse/BUG-15) priority Major, assigned to **no one**:
2016-09-20 22:51:11 +02:00
> New bug with hook """
self . send_and_test_stream_message ( ' created ' , expected_subject , expected_message )
def test_created_assignee ( self ) :
# type: () -> None
expected_subject = " TEST-4: Test Created Assignee "
2016-10-19 13:21:07 +02:00
expected_message = """ Leonardo Franchi [Administrator] **created** [TEST-4](https://zulipp.atlassian.net/browse/TEST-4) priority Major, assigned to **Leonardo Franchi [Administrator]**:
2016-09-20 22:51:11 +02:00
> Test Created Assignee """
self . send_and_test_stream_message ( ' created_assignee ' , expected_subject , expected_message )
def test_commented ( self ) :
# type: () -> None
expected_subject = " BUG-15: New bug with hook "
2016-10-19 13:21:07 +02:00
expected_message = """ Leo Franchi **updated** [BUG-15](http://lfranchi.com:8080/browse/BUG-15) (assigned to **Othello, the Moor of Venice**):
2016-09-20 22:51:11 +02:00
Adding a comment . Oh , what a comment it is !
"""
self . send_and_test_stream_message ( ' commented ' , expected_subject , expected_message )
def test_commented_markup ( self ) :
# type: () -> None
expected_subject = " TEST-7: Testing of rich text "
expected_message = """ Leonardo Franchi [Administrator] **updated** [TEST-7](https://zulipp.atlassian.net/browse/TEST-7): \n \n \n This is a comment that likes to **exercise** a lot of _different_ `conventions` that `jira uses`. \r \n \r \n ~~~ \n \r \n this code is not highlighted, but monospaced \r \n \n ~~~ \r \n \r \n ~~~ \n \r \n def python(): \r \n print " likes to be formatted " \r \n \n ~~~ \r \n \r \n [http://www.google.com](http://www.google.com) is a bare link, and [Google](http://www.google.com) is given a title. \r \n \r \n Thanks! \r \n \r \n ~~~ quote \n \r \n Someone said somewhere \r \n \n ~~~ \n """
self . send_and_test_stream_message ( ' commented_markup ' , expected_subject , expected_message )
def test_deleted ( self ) :
# type: () -> None
expected_subject = " BUG-15: New bug with hook "
expected_message = " Leo Franchi **deleted** [BUG-15](http://lfranchi.com:8080/browse/BUG-15)! "
self . send_and_test_stream_message ( ' deleted ' , expected_subject , expected_message )
def test_reassigned ( self ) :
# type: () -> None
expected_subject = " BUG-15: New bug with hook "
2016-10-19 13:21:07 +02:00
expected_message = """ Leo Franchi **updated** [BUG-15](http://lfranchi.com:8080/browse/BUG-15) (assigned to **Othello, the Moor of Venice**):
2016-09-20 22:51:11 +02:00
2016-10-19 13:21:07 +02:00
* Changed assignee from * * None * * to * * Othello , the Moor of Venice * *
2016-09-20 22:51:11 +02:00
"""
self . send_and_test_stream_message ( ' reassigned ' , expected_subject , expected_message )
def test_reopened ( self ) :
# type: () -> None
expected_subject = " BUG-7: More cowbell polease "
2016-10-19 13:21:07 +02:00
expected_message = """ Leo Franchi **updated** [BUG-7](http://lfranchi.com:8080/browse/BUG-7) (assigned to **Othello, the Moor of Venice**):
2016-09-20 22:51:11 +02:00
* Changed resolution from * * Fixed * * to * * None * *
* Changed status from * * Resolved * * to * * Reopened * *
Re - opened yeah !
"""
self . send_and_test_stream_message ( ' reopened ' , expected_subject , expected_message )
def test_resolved ( self ) :
# type: () -> None
expected_subject = " BUG-13: Refreshing the page loses the user ' s current posi... "
2016-10-19 13:21:07 +02:00
expected_message = """ Leo Franchi **updated** [BUG-13](http://lfranchi.com:8080/browse/BUG-13) (assigned to **Othello, the Moor of Venice**):
2016-09-20 22:51:11 +02:00
* Changed status from * * Open * * to * * Resolved * *
2016-10-19 13:21:07 +02:00
* Changed assignee from * * None * * to * * Othello , the Moor of Venice * *
2016-09-20 22:51:11 +02:00
* Changed resolution from * * None * * to * * Fixed * *
Fixed it , finally !
"""
self . send_and_test_stream_message ( ' resolved ' , expected_subject , expected_message )
def test_workflow_postfuncion ( self ) :
# type: () -> None
expected_subject = " TEST-5: PostTest "
expected_message = """ Leo Franchi [Administrator] **transitioned** [TEST-5](https://lfranchi-test.atlassian.net/browse/TEST-5) from Resolved to Reopened """
self . send_and_test_stream_message ( ' postfunction_hook ' , expected_subject , expected_message )
def test_workflow_postfunction ( self ) :
# type: () -> None
expected_subject = " TEST-5: PostTest "
expected_message = """ Leo Franchi [Administrator] **transitioned** [TEST-5](https://lfranchi-test.atlassian.net/browse/TEST-5) from Resolved to Reopened """
self . send_and_test_stream_message ( ' postfunction_hook ' , expected_subject , expected_message )
def test_workflow_postfunction_started ( self ) :
# type: () -> None
expected_subject = " TEST-7: Gluttony of Post Functions "
expected_message = """ Leo Franchi [Administrator] **transitioned** [TEST-7](https://lfranchi-test.atlassian.net/browse/TEST-7) from Open to Underway """
self . send_and_test_stream_message ( ' postfunction_started ' , expected_subject , expected_message )
def test_workflow_postfunction_resolved ( self ) :
# type: () -> None
expected_subject = " TEST-7: Gluttony of Post Functions "
expected_message = """ Leo Franchi [Administrator] **transitioned** [TEST-7](https://lfranchi-test.atlassian.net/browse/TEST-7) from Open to Resolved """
self . send_and_test_stream_message ( ' postfunction_resolved ' , expected_subject , expected_message )
def test_mention ( self ) :
# type: () -> None
expected_subject = " TEST-5: Lunch Decision Needed "
2016-10-19 13:21:07 +02:00
expected_message = """ Leonardo Franchi [Administrator] **updated** [TEST-5](https://zulipp.atlassian.net/browse/TEST-5) (assigned to **Othello, the Moor of Venice**):
2016-09-20 22:51:11 +02:00
2016-10-19 13:21:07 +02:00
Making a comment , * * Othello , the Moor of Venice * * is watching this issue
2016-09-20 22:51:11 +02:00
"""
self . send_and_test_stream_message ( ' watch_mention_updated ' , expected_subject , expected_message )
def test_priority_updated ( self ) :
# type: () -> None
expected_subject = " TEST-1: Fix That "
expected_message = """ Leonardo Franchi [Administrator] **updated** [TEST-1](https://zulipp.atlassian.net/browse/TEST-1) (assigned to **leo@zulip.com**):
* Changed priority from * * Critical * * to * * Major * *
"""
self . send_and_test_stream_message ( ' updated_priority ' , expected_subject , expected_message )
def get_body ( self , fixture_name ) :
2016-12-04 18:38:56 +01:00
# type: (Text) -> Text
2016-09-20 22:51:11 +02:00
return self . fixture_data ( ' jira ' , fixture_name )