Skip to content

Commit

Permalink
UPDATE code to unify verify_ticket_id()
Browse files Browse the repository at this point in the history
* Unify verify_ticket_id() method for all ticketing tools
* Remove unnecessary tests
  • Loading branch information
mjagelka authored and dmranck committed Sep 10, 2018
1 parent 4ef29f0 commit 08617a5
Show file tree
Hide file tree
Showing 8 changed files with 44 additions and 102 deletions.
39 changes: 11 additions & 28 deletions tests/test_bugzilla.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ def test_generate_ticket_url(self, mock_session):
mock_session.return_value = FakeSession()
ticket = bugzilla.BugzillaTicket(URL, PROJECT, ticket_id=TICKET_ID)
self.assertEqual(TICKET_URL, ticket._generate_ticket_url())
self.assertEqual(ticket.request_result, SUCCESS_RESULT._replace(url=TICKET_URL, ticket_content=MOCK200))
self.assertEqual(ticket.request_result, SUCCESS_RESULT._replace(url=TICKET_URL))

@patch.object(bugzilla.BugzillaTicket, '_create_requests_session')
def test_generate_ticket_url_no_ticket_id(self, mock_session):
Expand Down Expand Up @@ -204,23 +204,6 @@ def test_get_ticket_content_unexpected_response(self, mock_session):
ticket = bugzilla.BugzillaTicket(URL, PROJECT, TICKET_ID)
self.assertEquals(ticket.get_ticket_content(), FAILURE_RESULT._replace(error_message=error_message))

@patch.object(bugzilla.BugzillaTicket, 'get_ticket_content')
@patch.object(bugzilla.BugzillaTicket, '_create_requests_session')
def test_verify_ticket_success(self, mock_session, mock_content):
mock_session.return_value = FakeSession()
mock_content.return_value = SUCCESS_RESULT
ticket = bugzilla.BugzillaTicket(URL, PROJECT, TICKET_ID)
self.assertTrue(ticket._verify_ticket_id(TICKET_ID))

@patch.object(bugzilla.BugzillaTicket, 'get_ticket_content')
@patch.object(bugzilla.BugzillaTicket, '_create_requests_session')
def test_verify_ticket_failure(self, mock_session, mock_content):
mock_session.return_value = FakeSession(status_code=400)
mock_content.return_value = FAILURE_RESULT
with self.assertRaises(ticketutil.ticket.TicketException):
ticket = bugzilla.BugzillaTicket(URL, PROJECT, TICKET_ID)
self.assertFalse(ticket._verify_ticket_id(TICKET_ID))

@patch.object(bugzilla.BugzillaTicket, '_create_ticket_request')
@patch.object(bugzilla.BugzillaTicket, '_create_ticket_parameters')
@patch.object(bugzilla.BugzillaTicket, '_create_requests_session')
Expand Down Expand Up @@ -315,15 +298,15 @@ def test_edit_bugs(self, mock_session, mock_fields):
mock_session.return_value = FakeSession(status_code=402)
ticket = bugzilla.BugzillaTicket(URL, PROJECT, ticket_id=TICKET_ID)
t = ticket.edit()
self.assertEqual(t, SUCCESS_RESULT._replace(url=TICKET_URL, ticket_content=MOCK402))
self.assertEqual(t, SUCCESS_RESULT._replace(url=TICKET_URL))

@patch.object(bugzilla, '_prepare_ticket_fields')
@patch.object(bugzilla.BugzillaTicket, '_create_requests_session')
def test_edit_error(self, mock_session, mock_fields):
mock_session.return_value = FakeSession(status_code=401)
ticket = bugzilla.BugzillaTicket(URL, PROJECT, ticket_id=TICKET_ID)
t = ticket.edit()
self.assertEqual(t, RETURN_RESULT('Failure', 'There is some error.', TICKET_URL, MOCK401))
self.assertEqual(t, RETURN_RESULT('Failure', 'There is some error.', TICKET_URL, None))

@patch.object(bugzilla.BugzillaTicket, 'get_ticket_content')
@patch.object(bugzilla, '_prepare_ticket_fields')
Expand Down Expand Up @@ -356,7 +339,7 @@ def test_add_comment_error(self, mock_session, mock_fields):
mock_session.return_value = FakeSession(status_code=401)
ticket = bugzilla.BugzillaTicket(URL, PROJECT, ticket_id=TICKET_ID)
t = ticket.add_comment('')
self.assertEqual(t, RETURN_RESULT('Failure', 'There is some error.', TICKET_URL, MOCK401))
self.assertEqual(t, RETURN_RESULT('Failure', 'There is some error.', TICKET_URL, None))

@patch.object(bugzilla.BugzillaTicket, 'get_ticket_content')
@patch.object(bugzilla, '_prepare_ticket_fields')
Expand All @@ -379,7 +362,7 @@ def test_add_attachment_ioerror(self, mock_session):
mock_session.return_value = FakeSession()
ticket = bugzilla.BugzillaTicket(URL, PROJECT, ticket_id=TICKET_ID)
t = ticket.add_attachment('file_name', 'data', 'summary')
self.assertEqual(t, RETURN_RESULT('Failure', 'File file_name not found', TICKET_URL, MOCK200))
self.assertEqual(t, RETURN_RESULT('Failure', 'File file_name not found', TICKET_URL, None))

@patch('ticketutil.bugzilla.base64.standard_b64encode')
@patch('ticketutil.bugzilla.mimetypes.guess_type')
Expand All @@ -402,7 +385,7 @@ def test_add_attachment_error(self, mock_session, mock_open, mock_guess_type, mo
mock_session.return_value = FakeSession(status_code=401)
ticket = bugzilla.BugzillaTicket(URL, PROJECT, ticket_id=TICKET_ID)
t = ticket.add_attachment('file_name', 'data', 'summary')
self.assertEqual(t, RETURN_RESULT('Failure', 'There is some error.', TICKET_URL, MOCK401))
self.assertEqual(t, RETURN_RESULT('Failure', 'There is some error.', TICKET_URL, None))

@patch.object(bugzilla.BugzillaTicket, 'get_ticket_content')
@patch('ticketutil.bugzilla.base64.standard_b64encode')
Expand Down Expand Up @@ -437,7 +420,7 @@ def test_change_status_error(self, mock_session, mock_fields):
mock_session.return_value = FakeSession(status_code=401)
ticket = bugzilla.BugzillaTicket(URL, PROJECT, ticket_id=TICKET_ID)
t = ticket.change_status('')
self.assertEqual(t, RETURN_RESULT('Failure', 'There is some error.', TICKET_URL, MOCK401))
self.assertEqual(t, RETURN_RESULT('Failure', 'There is some error.', TICKET_URL, None))

@patch.object(bugzilla.BugzillaTicket, 'get_ticket_content')
@patch.object(bugzilla, '_prepare_ticket_fields')
Expand Down Expand Up @@ -469,14 +452,14 @@ def test_add_cc_bugs(self, mock_session):
mock_session.return_value = FakeSession(status_code=402)
ticket = bugzilla.BugzillaTicket(URL, PROJECT, ticket_id=TICKET_ID)
t = ticket.add_cc('')
self.assertEqual(t, SUCCESS_RESULT._replace(url=TICKET_URL, ticket_content=MOCK402))
self.assertEqual(t, SUCCESS_RESULT._replace(url=TICKET_URL))

@patch.object(bugzilla.BugzillaTicket, '_create_requests_session')
def test_add_cc_error(self, mock_session):
mock_session.return_value = FakeSession(status_code=401)
ticket = bugzilla.BugzillaTicket(URL, PROJECT, ticket_id=TICKET_ID)
t = ticket.add_cc('')
self.assertEqual(t, RETURN_RESULT('Failure', 'There is some error.', TICKET_URL, MOCK401))
self.assertEqual(t, RETURN_RESULT('Failure', 'There is some error.', TICKET_URL, None))

@patch.object(bugzilla.BugzillaTicket, 'get_ticket_content')
@patch.object(bugzilla.BugzillaTicket, '_create_requests_session')
Expand Down Expand Up @@ -507,14 +490,14 @@ def test_remove_cc_bugs(self, mock_session):
mock_session.return_value = FakeSession(status_code=402)
ticket = bugzilla.BugzillaTicket(URL, PROJECT, ticket_id=TICKET_ID)
t = ticket.remove_cc('')
self.assertEqual(t, SUCCESS_RESULT._replace(url=TICKET_URL, ticket_content=MOCK402))
self.assertEqual(t, SUCCESS_RESULT._replace(url=TICKET_URL))

@patch.object(bugzilla.BugzillaTicket, '_create_requests_session')
def test_remove_cc_error(self, mock_session):
mock_session.return_value = FakeSession(status_code=401)
ticket = bugzilla.BugzillaTicket(URL, PROJECT, ticket_id=TICKET_ID)
t = ticket.remove_cc('')
self.assertEqual(t, RETURN_RESULT('Failure', 'There is some error.', TICKET_URL, MOCK401))
self.assertEqual(t, RETURN_RESULT('Failure', 'There is some error.', TICKET_URL, None))

@patch.object(bugzilla.BugzillaTicket, 'get_ticket_content')
@patch.object(bugzilla.BugzillaTicket, '_create_requests_session')
Expand Down
17 changes: 0 additions & 17 deletions tests/test_jira.py
Original file line number Diff line number Diff line change
Expand Up @@ -155,23 +155,6 @@ def test_get_ticket_content_unexpected_response(self, mock_session):
t = ticket._verify_ticket_id(ticket_id=TICKET_ID)
self.assertEqual(t, FAILURE_RESULT._replace(error_message=error_message))

@patch.object(jira.JiraTicket, 'get_ticket_content')
@patch.object(jira.JiraTicket, '_create_requests_session')
def test_verify_ticket_id_success(self, mock_session, mock_content):
mock_session.return_value = FakeSession()
mock_content.return_value = SUCCESS_RESULT
ticket = jira.JiraTicket(URL, PROJECT, ticket_id=TICKET_ID)
self.assertTrue(ticket._verify_ticket_id(ticket_id=TICKET_ID))

@patch.object(jira.JiraTicket, 'get_ticket_content')
@patch.object(jira.JiraTicket, '_create_requests_session')
def test_verify_ticket_id_failure(self, mock_session, mock_content):
mock_session.return_value = FakeSession()
mock_content.return_value = FAILURE_RESULT
with self.assertRaises(TicketException):
ticket = jira.JiraTicket(URL, PROJECT, ticket_id=TICKET_ID)
self.assertFalse(ticket._verify_ticket_id(ticket_id=TICKET_ID))

@patch.object(jira.JiraTicket, '_create_ticket_parameters')
@patch.object(jira.JiraTicket, '_create_ticket_request')
@patch.object(jira.JiraTicket, '_create_requests_session')
Expand Down
13 changes: 0 additions & 13 deletions tests/test_redmine.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,19 +125,6 @@ def test_get_ticket_content(self, mock_session):
t = ticket.get_ticket_content(ticket_id=TICKET_ID)
self.assertEqual(t.ticket_content, MOCK_CONTENT)

@patch.object(redmine.RedmineTicket, '_create_requests_session')
def test_verify_ticket_id(self, mock_session):
mock_session.return_value = FakeSession()
ticket = redmine.RedmineTicket(URL, PROJECT)
self.assertTrue(ticket._verify_ticket_id(PROJECT))

@patch.object(redmine.RedmineTicket, '_create_requests_session')
def test_verify_ticket_id_valid(self, mock_session):
mock_session.return_value = FakeSession(status_code=400)
with patch.object(redmine.RedmineTicket, '_verify_project'):
ticket = redmine.RedmineTicket(URL, PROJECT)
self.assertFalse(ticket._verify_ticket_id(PROJECT))

@patch.object(redmine.RedmineTicket, '_create_ticket_request')
@patch.object(redmine.RedmineTicket, '_create_ticket_parameters')
@patch.object(redmine.RedmineTicket, '_create_requests_session')
Expand Down
18 changes: 18 additions & 0 deletions tests/test_ticket.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,12 @@ def __init__(self, project, ticket_id, auth=None, principal=None):
def _verify_project(self, project):
return True

def get_ticket_content(ticket_id):
if 'PROJECT-00' in ticket_id:
return {'status': 'Success'}
else:
return {'status': 'Failure'}

def _verify_ticket_id(self, ticket_id):
if 'PROJECT-00' in ticket_id:
return True
Expand All @@ -86,6 +92,18 @@ def __init__(self, name):

class TestTicket(TestCase):

@patch.object(ticket.Ticket, '_create_requests_session')
def test_verify_ticket_id(self, mock_session):
mock_session.return_value = FakeSession()
t = ChildTicket(PROJECT, TICKET_ID)
self.assertTrue(t._verify_ticket_id(TICKET_ID))

@patch.object(ticket.Ticket, '_create_requests_session')
def test_verify_ticket_id_non_valid(self, mock_session):
mock_session.return_value = FakeSession()
t = ChildTicket(PROJECT, TICKET_ID)
self.assertFalse(t._verify_ticket_id('PROJECT-010'))

@patch.object(ticket.Ticket, '_create_requests_session')
def test_set_ticket_id(self, mock_session):
t = ChildTicket(PROJECT, TICKET_ID)
Expand Down
14 changes: 0 additions & 14 deletions ticketutil/bugzilla.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,20 +140,6 @@ def get_ticket_content(self, ticket_id=None):
logger.error(e)
return self.request_result._replace(status='Failure', error_message=error_message)

def _verify_ticket_id(self, ticket_id):
"""
Check if ticket_id is connected with valid ticket for the given Bugzilla instance.
:param ticket_id: The ticket you're verifying.
:return: True or False depending on if ticket is valid.
"""
self.request_result = self.get_ticket_content(ticket_id)
if 'Failure' in self.request_result.status:
logger.error("Ticket {0} is not valid".format(ticket_id))
return False
else:
logger.debug("Ticket {0} is valid".format(ticket_id))
return True

def create(self, summary, description, component, version, **kwargs):
"""
Creates a ticket.
Expand Down
14 changes: 0 additions & 14 deletions ticketutil/jira.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,20 +104,6 @@ def get_ticket_content(self, ticket_id=None):
logger.error(e)
return self.request_result._replace(status='Failure', error_message=error_message)

def _verify_ticket_id(self, ticket_id):
"""
Check if ticket_id is connected with valid ticket for the given JIRA instance.
:param ticket_id: The ticket you're verifying.
:return: True or False depending on if ticket is valid.
"""
result = self.get_ticket_content(ticket_id)
if 'Failure' in result.status:
logger.error("Ticket {0} is not valid".format(ticket_id))
return False
logger.debug("Ticket {0} is valid".format(ticket_id))
self.ticket_id = ticket_id
return True

def create(self, summary, description, type, **kwargs):
"""
Creates a ticket.
Expand Down
16 changes: 1 addition & 15 deletions ticketutil/redmine.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ def get_ticket_content(self, ticket_id=None):
logger.error(error_message)
return self.request_result._replace(status='Failure', error_message=error_message)
try:
r = self.s.get("{0}/{1}.json?include=attachments,journals,watchers,children,relations,changesets" \
r = self.s.get("{0}/{1}.json?include=attachments,journals,watchers,children,relations,changesets"
"".format(self.rest_url, ticket_id))
logger.debug("Get ticket content: status code: {0}".format(r.status_code))
r.raise_for_status()
Expand All @@ -90,20 +90,6 @@ def get_ticket_content(self, ticket_id=None):
logger.error(e)
return self.request_result._replace(status='Failure', error_message=error_message)

def _verify_ticket_id(self, ticket_id):
"""
Check if ticket_id is connected with valid ticket for the given Redmine instance.
:param ticket_id: The ticket you're verifying.
:return: True or False depending on if ticket is valid.
"""
result = self.get_ticket_content(ticket_id)
if 'Failure' in result.status:
logger.error("Ticket {0} is not valid".format(ticket_id))
return False
logger.debug("Ticket {0} is valid".format(ticket_id))
self.ticket_id = ticket_id
return True

def create(self, subject, description, **kwargs):
"""
Creates a ticket.
Expand Down
15 changes: 14 additions & 1 deletion ticketutil/ticket.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import logging
import os
from collections import namedtuple

import gssapi
Expand Down Expand Up @@ -47,6 +46,20 @@ def __init__(self, project, ticket_id):
else:
self.ticket_url = self._generate_ticket_url()

def _verify_ticket_id(self, ticket_id):
"""
Check if ticket_id is connected with valid ticket for the given ticketing tool instance.
:param ticket_id: The ticket you're verifying.
:return: True or False depending on if ticket is valid.
"""
result = self.get_ticket_content(ticket_id)
if 'Failure' in result.status:
logger.error("Ticket {0} is not valid".format(ticket_id))
return False
logger.debug("Ticket {0} is valid".format(ticket_id))
self.ticket_id = ticket_id
return True

def set_ticket_id(self, ticket_id):
"""
Sets the ticket_id and ticket_url instance vars for the current Ticket object.
Expand Down

0 comments on commit 08617a5

Please sign in to comment.