Skip to content
Snippets Groups Projects
Commit 603bcb51 authored by Robert Habermann's avatar Robert Habermann
Browse files

extend tests

parent afa29ace
No related branches found
No related tags found
No related merge requests found
...@@ -76,6 +76,10 @@ class TicketSearchNothingToLookFor(PyOTRSError): ...@@ -76,6 +76,10 @@ class TicketSearchNothingToLookFor(PyOTRSError):
pass pass
class TicketSearchNumberMultipleResults(PyOTRSError):
pass
class TicketError(PyOTRSError): class TicketError(PyOTRSError):
pass pass
...@@ -805,8 +809,8 @@ class Client(object): ...@@ -805,8 +809,8 @@ class Client(object):
Returns: Returns:
dict: Ticket dict: Ticket
""" """
if not isinstance(ticket_number, str): if isinstance(ticket_number, int):
raise TicketError("Please provide ticket_number as str!") raise TicketError("Provide ticket_number as str/unicode. Got ticket_number as int.")
result_list = self.ticket_search(TicketNumber=ticket_number) result_list = self.ticket_search(TicketNumber=ticket_number)
...@@ -818,8 +822,8 @@ class Client(object): ...@@ -818,8 +822,8 @@ class Client(object):
dynamic_fields=dynamic_fields, dynamic_fields=dynamic_fields,
all_articles=all_articles) all_articles=all_articles)
else: else:
print("Found more that one result with that Ticket Number?!") raise TicketSearchNumberMultipleResults("Found more that one result for "
return None "Ticket Number: {0}".format(ticket_number))
def _ticket_get_json(self, url, payload): def _ticket_get_json(self, url, payload):
"""_ticket_get_json """_ticket_get_json
......
...@@ -12,6 +12,9 @@ from __future__ import unicode_literals # support both Python2 and 3 ...@@ -12,6 +12,9 @@ from __future__ import unicode_literals # support both Python2 and 3
import unittest2 as unittest import unittest2 as unittest
import mock import mock
import datetime
import requests # noqa
from pyotrs import Client from pyotrs import Client
from pyotrs.lib import NoBaseURL, NoWebServiceName, ResponseJSONParseError from pyotrs.lib import NoBaseURL, NoWebServiceName, ResponseJSONParseError
from pyotrs.lib import SessionError from pyotrs.lib import SessionError
...@@ -19,7 +22,8 @@ from pyotrs.lib import SessionError ...@@ -19,7 +22,8 @@ from pyotrs.lib import SessionError
from pyotrs import Article, Client, Ticket # noqa from pyotrs import Article, Client, Ticket # noqa
from pyotrs.lib import NoBaseURL, NoWebServiceName, NoCredentials # noqa from pyotrs.lib import NoBaseURL, NoWebServiceName, NoCredentials # noqa
from pyotrs.lib import SessionCreateError, SessionIDFileError, OTRSAPIError, OTRSHTTPError # noqa from pyotrs.lib import SessionCreateError, SessionIDFileError, OTRSAPIError, OTRSHTTPError # noqa
from pyotrs.lib import TicketError # noqa from pyotrs.lib import TicketError, TicketSearchNumberMultipleResults # noqa
from pyotrs.lib import TicketSearchNothingToLookFor # noqa
class ClientTests(unittest.TestCase): class ClientTests(unittest.TestCase):
...@@ -60,6 +64,18 @@ class ClientTests(unittest.TestCase): ...@@ -60,6 +64,18 @@ class ClientTests(unittest.TestCase):
client = Client(baseurl="http://localhost/", webservicename="foo", session_timeout=4711) client = Client(baseurl="http://localhost/", webservicename="foo", session_timeout=4711)
self.assertEqual(client.session_timeout, 4711) self.assertEqual(client.session_timeout, 4711)
@mock.patch('pyotrs.Client._session_create_json', autospec=True)
def test__session_create_json(self, mock_s_create_json):
"""Tests session_create fail"""
# create object
obj = Client(baseurl="http://fqdn", webservicename="GenericTicketConnectorREST")
mock_s_create_json.return_value = False
result = obj.session_create()
self.assertEqual(mock_s_create_json.call_count, 1)
self.assertEqual(result, None)
@mock.patch('pyotrs.Client.session_check_is_valid', autospec=True) @mock.patch('pyotrs.Client.session_check_is_valid', autospec=True)
@mock.patch('pyotrs.Client._read_session_id_from_file', autospec=True) @mock.patch('pyotrs.Client._read_session_id_from_file', autospec=True)
def test_session_restore_or_set_up_new_with_file_nok(self, mock_read_s_id, mock_is_valid): def test_session_restore_or_set_up_new_with_file_nok(self, mock_read_s_id, mock_is_valid):
...@@ -302,6 +318,80 @@ class ClientTests(unittest.TestCase): ...@@ -302,6 +318,80 @@ class ClientTests(unittest.TestCase):
m.assert_called_once_with('/tmp/.sid', 'r') m.assert_called_once_with('/tmp/.sid', 'r')
@mock.patch('pyotrs.Client._ticket_get_json', autospec=True)
def test_ticket_get_by_id_fail(self, mock_ticket_get_json):
"""Tests ticket_get_by_id fail"""
# create object
obj = Client(baseurl="http://fqdn", webservicename="GenericTicketConnectorREST")
mock_ticket_get_json.return_value = False
result = obj.ticket_get_by_id(1)
self.assertEqual(mock_ticket_get_json.call_count, 1)
self.assertEqual(result, None)
@mock.patch('pyotrs.Client._ticket_get_json', autospec=True)
def test_ticket_get_by_id_ok(self, mock_ticket_get_json):
"""Tests ticket_get_by_id ok"""
# create object
obj = Client(baseurl="http://fqdn", webservicename="GenericTicketConnectorREST")
obj.response_json = {'Ticket': [{'Some': 'Ticket'}]}
mock_ticket_get_json.return_value = True
result = obj.ticket_get_by_id(1)
self.assertEqual(mock_ticket_get_json.call_count, 1)
self.assertDictEqual(result, {'Some': 'Ticket'})
def test_ticket_get_by_number_with_int(self):
"""Tests ticket_get_by_number provided int not str -> fail"""
# create object
obj = Client(baseurl="http://fqdn", webservicename="GenericTicketConnectorREST")
self.assertRaisesRegex(TicketError,
'Provide ticket_number as str/unicode. Got ticket_number as int.',
obj.ticket_get_by_number, ticket_number=1)
@mock.patch('pyotrs.Client.ticket_search', autospec=True)
def test_ticket_get_by_number_with_string_no_result(self, mock_ticket_search):
"""Tests ticket_get_by_number provided as int -> ok"""
# create object
obj = Client(baseurl="http://fqdn", webservicename="GenericTicketConnectorREST")
mock_ticket_search.return_value = []
result = obj.ticket_get_by_number("SomeOtherNumber")
self.assertEqual(result, None)
self.assertEqual(mock_ticket_search.call_count, 1)
@mock.patch('pyotrs.Client._ticket_get_json', autospec=True)
@mock.patch('pyotrs.Client.ticket_search', autospec=True)
def test_ticket_get_by_number_with_string_one_result(self, mock_t_search, mock_t_get):
"""Tests ticket_get_by_number provided as int -> ok; 1 result"""
# create object
obj = Client(baseurl="http://fqdn", webservicename="GenericTicketConnectorREST")
obj.response_json = {'Ticket': [{'SomeOne': 'TicketOne'}]}
mock_t_get.return_value = True
mock_t_search.return_value = [1]
result = obj.ticket_get_by_number("SomeOtherNumber1")
self.assertDictEqual(result, {'SomeOne': 'TicketOne'})
self.assertEqual(mock_t_search.call_count, 1)
@mock.patch('pyotrs.Client.ticket_search', autospec=True)
def test_ticket_get_by_number_with_string_three_results(self, mock_ticket_search):
"""Tests ticket_get_by_number provided as int; 3 results -> nok"""
# create object
obj = Client(baseurl="http://fqdn", webservicename="GenericTicketConnectorREST")
mock_ticket_search.return_value = [1, 2, 3]
self.assertRaisesRegex(TicketSearchNumberMultipleResults,
'Found more that one result for Ticket Number: SomeOtherNumber123',
obj.ticket_get_by_number,
'SomeOtherNumber123')
self.assertEqual(mock_ticket_search.call_count, 1)
def test__write_session_id_to_file(self): def test__write_session_id_to_file(self):
"""Tests _write_session_id_to_file not implemented""" """Tests _write_session_id_to_file not implemented"""
# create object # create object
...@@ -343,8 +433,8 @@ class ClientTests(unittest.TestCase): ...@@ -343,8 +433,8 @@ class ClientTests(unittest.TestCase):
obj.ticket_create, ticket=tic) obj.ticket_create, ticket=tic)
@mock.patch('pyotrs.lib.Client._ticket_create_json', autospec=True) @mock.patch('pyotrs.lib.Client._ticket_create_json', autospec=True)
def test_ticket_create_no_ticket_mock(self, mock_t_create_json): def test_ticket_create_mocked_none(self, mock_t_create_json):
"""Test ticket_create - no ticket specified""" """Test ticket_create - mocked result None"""
obj = Client(baseurl="http://fqdn", obj = Client(baseurl="http://fqdn",
webservicename="GenericTicketConnectorREST") webservicename="GenericTicketConnectorREST")
obj.session_id = "some_session_id" obj.session_id = "some_session_id"
...@@ -354,12 +444,49 @@ class ClientTests(unittest.TestCase): ...@@ -354,12 +444,49 @@ class ClientTests(unittest.TestCase):
'TimeUnit': 0, 'TimeUnit': 0,
'MimeType': 'text/plain', 'MimeType': 'text/plain',
'Charset': 'UTF8'}) 'Charset': 'UTF8'})
mock_t_create_json.return_value = False mock_t_create_json.return_value = False
result = obj.ticket_create(ticket=tic, article=art) result = obj.ticket_create(ticket=tic, article=art)
self.assertEqual(result, None) self.assertEqual(result, None)
@mock.patch('pyotrs.lib.Client._ticket_create_json', autospec=True)
def test_ticket_create_mocked_true(self, mock_t_create_json):
"""Test ticket_create - mocked result """
obj = Client(baseurl="http://fqdn",
webservicename="GenericTicketConnectorREST")
obj.session_id = "some_session_id"
tic = Ticket(dct={'Title': 'foo'})
art = Article({'Subject': 'mySubject',
'Body': 'myBody',
'TimeUnit': 0,
'MimeType': 'text/plain',
'Charset': 'UTF8'})
mock_t_create_json.return_value = True
obj.ticket_create(ticket=tic, article=art)
self.assertEqual(mock_t_create_json.call_count, 1)
#
# @mock.patch('pyotrs.lib.requests.Response.json', autospec=True)
# @mock.patch('pyotrs.lib.Client._validate_response', autospec=True)
# def test__ticket_create_json_mocked(self, mock_validate_resp, mock_response_json):
# """Test _ticket_create_json - mocked"""
# obj = Client(baseurl="http://fqdn",
# webservicename="GenericTicketConnectorREST")
#
# def mock_response_obj():
# return True
#
# mock_validate_resp.return_value = True
# mock_response_json.return_value = {}
#
# with mock.patch.object(obj, '_send_request') as mock_send_request:
# mock_send_request.return_value = requests.Response
# result = obj._ticket_create_json(url="http://localhost", payload={"bar": "rab"})
#
# self.assertEqual(result, True)
# self.assertEqual(obj.operation, 'TicketCreate')
# self.assertEqual(obj.http_method, 'POST')
# self.assertEqual(mock_validate_resp.call_count, 1)
def test__ticket_request_invalid_method(self): def test__ticket_request_invalid_method(self):
"""Test Method Client._ticket_request """ """Test Method Client._ticket_request """
self.assertRaisesRegex(NotImplementedError, self.assertRaisesRegex(NotImplementedError,
...@@ -369,6 +496,101 @@ class ClientTests(unittest.TestCase): ...@@ -369,6 +496,101 @@ class ClientTests(unittest.TestCase):
url="http://localhost/", url="http://localhost/",
payload={"foo": "bar"}) payload={"foo": "bar"})
def test_ticket_search_nothing_to_look_for(self):
"""Tests ticket_search nothing to look for"""
# create object
obj = Client(baseurl="http://fqdn", webservicename="GenericTicketConnectorREST")
self.assertRaisesRegex(TicketSearchNothingToLookFor,
'Nothing specified to look for!',
obj.ticket_search)
@mock.patch('pyotrs.Client._ticket_search_json', autospec=True)
def test_ticket_search_ticket_id(self, mock_ticket_search_json):
"""Tests ticket_search ticket id"""
# create object
obj = Client(baseurl="http://fqdn", webservicename="GenericTicketConnectorREST")
obj.ticket_search_result = [1]
mock_ticket_search_json.return_value = True
obj.ticket_search(TicketID="1")
self.assertEqual(mock_ticket_search_json.call_count, 1)
@mock.patch('pyotrs.Client._ticket_search_json', autospec=True)
def test_ticket_search_datetime(self, mock_ticket_search_json):
"""Tests ticket_search datetime"""
# create object
obj = Client(baseurl="http://fqdn", webservicename="GenericTicketConnectorREST")
obj.ticket_search_result = [1]
mock_ticket_search_json.return_value = True
obj.ticket_search(TicketCreateTimeOlderDate=datetime.datetime.utcnow())
self.assertEqual(mock_ticket_search_json.call_count, 1)
@mock.patch('pyotrs.Client._ticket_update_json', autospec=True)
def test_ticket_update_queue_id_ok(self, mock_ticket_update_json):
"""Tests ticket_update queue_id ok"""
# create object
obj = Client(baseurl="http://fqdn", webservicename="GenericTicketConnectorREST")
mock_ticket_update_json.return_value = True
obj.ticket_update(1, QueueID="1")
self.assertEqual(mock_ticket_update_json.call_count, 1)
@mock.patch('pyotrs.Client._ticket_update_json', autospec=True)
def test_ticket_update_queue_id_nok(self, mock_ticket_update_json):
"""Tests ticket_update queue_id nok"""
# create object
obj = Client(baseurl="http://fqdn", webservicename="GenericTicketConnectorREST")
mock_ticket_update_json.return_value = False
result = obj.ticket_update(1, QueueID="1")
self.assertEqual(mock_ticket_update_json.call_count, 1)
self.assertEqual(result, None)
@mock.patch('pyotrs.Client._ticket_update_json', autospec=True)
def test_ticket_update_article_nok(self, mock_ticket_update_json):
"""Tests ticket_update article nok"""
# create object
obj = Client(baseurl="http://fqdn", webservicename="GenericTicketConnectorREST")
art = Article({'Subject': 'mySubject',
'Body': 'myBody',
'TimeUnit': 0,
'MimeType': 'text/plain',
'Charset': 'UTF8'})
mock_ticket_update_json.return_value = False
result = obj.ticket_update(1, article=art)
self.assertEqual(mock_ticket_update_json.call_count, 1)
self.assertEqual(result, None)
@mock.patch('pyotrs.Client._ticket_update_json', autospec=True)
def test_ticket_update_set_pending_ok(self, mock_ticket_update_json):
"""Tests ticket_update_set_pending ok"""
# create object
obj = Client(baseurl="http://fqdn", webservicename="GenericTicketConnectorREST")
mock_ticket_update_json.return_value = True
obj.ticket_update_set_pending(1)
self.assertEqual(mock_ticket_update_json.call_count, 1)
@mock.patch('pyotrs.Client._ticket_update_json', autospec=True)
def test_ticket_update_set_pending_nok(self, mock_ticket_update_json):
"""Tests ticket_update_set_pending nok"""
# create object
obj = Client(baseurl="http://fqdn", webservicename="GenericTicketConnectorREST")
mock_ticket_update_json.return_value = False
result = obj.ticket_update_set_pending(1)
self.assertEqual(mock_ticket_update_json.call_count, 1)
self.assertEqual(result, None)
def test__validate_response_invalid_operation(self): def test__validate_response_invalid_operation(self):
"""Test Method Client._ticket_request """ """Test Method Client._ticket_request """
client = Client(baseurl="http://localhost", webservicename="foo") client = Client(baseurl="http://localhost", webservicename="foo")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment