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

change return value of public methods

parent dbd0bb92
No related branches found
No related tags found
No related merge requests found
......@@ -755,7 +755,7 @@ class Client(object):
**kwargs: any regular OTRS Fields (not for Dynamic Fields!)
Returns:
bool: **True** if successful, otherwise **False**
dict or False: dict if successful, otherwise **False**
"""
url = ("{0.baseurl}/otrs/nph-genericinterface.pl/Webservice/"
"{0.webservicename}/Ticket".format(self))
......@@ -782,7 +782,12 @@ class Client(object):
# noinspection PyTypeChecker
payload.update({"DynamicField": [df.to_dct() for df in dynamic_field_list]})
return self._ticket_create_json(url, payload)
# return self._ticket_create_json(url, payload)
_result = self._ticket_create_json(url, payload)
if not _result:
return False
else:
return self.result_json
def _ticket_create_json(self, url, payload):
"""_ticket_create_json
......@@ -831,7 +836,7 @@ class Client(object):
Dynamic Fields (*default: True*)
Returns:
Ticket or False: Ticket object if successful, otherwise **False**
Ticket or None: Ticket object if successful, otherwise **None**
"""
url = ("{0.baseurl}/otrs/nph-genericinterface.pl/Webservice/"
......@@ -847,7 +852,7 @@ class Client(object):
# return self._ticket_get_json(url, payload)
_result = self._ticket_get_json(url, payload)
if not _result:
return False
return None
else:
return self.result[0]
......@@ -867,7 +872,7 @@ class Client(object):
Dynamic Fields (*default: True*)
Returns:
list or False: Ticket objects (as list) if successful, otherwise **False**
list: Ticket objects (as list) if successful, otherwise []
"""
if isinstance(ticket_id_list, int):
......@@ -887,7 +892,7 @@ class Client(object):
# return self._ticket_get_json(url, payload)
_result = self._ticket_get_json(url, payload)
if not _result:
return False
return []
else:
return self.result
......@@ -976,7 +981,7 @@ class Client(object):
**kwargs: Arbitrary keyword arguments (Dynamic Field).
Returns:
list or False: result (as list) if successful, otherwise **False**
list: result (as list) if successful, otherwise []
.. note::
If value of kwargs is a datetime object then this object will be
......@@ -1001,7 +1006,7 @@ class Client(object):
# return self._ticket_search_json(url, payload)
_result = self._ticket_search_json(url, payload)
if not _result:
return False
return []
else:
return self.result
......@@ -1078,7 +1083,7 @@ class Client(object):
**kwargs: any regular OTRS Fields (not for Dynamic Fields!)
Returns:
bool: **True** if successful, otherwise **False**
dict or False: dict if successful, otherwise **False**
"""
url = ("{0.baseurl}/otrs/nph-genericinterface.pl/Webservice/"
"{0.webservicename}/Ticket/{1}".format(self, ticket_id))
......@@ -1091,7 +1096,7 @@ class Client(object):
if attachment_list:
if not article:
raise TicketError("To create an attachment an article is needed!")
raise ArgumentMissingError("To create an attachment an article is needed!")
# noinspection PyTypeChecker
payload.update({"Attachment": [att.to_dct() for att in attachment_list]})
......@@ -1099,7 +1104,12 @@ class Client(object):
# noinspection PyTypeChecker
payload.update({"DynamicField": [df.to_dct() for df in dynamic_field_list]})
return self._ticket_update_json(url, payload)
# return self._ticket_update_json(url, payload)
_result = self._ticket_update_json(url, payload)
if not _result:
return False
else:
return self.result_json
def ticket_update_set_pending(self,
ticket_id,
......@@ -1115,7 +1125,7 @@ class Client(object):
pending_hours (int): defaults to 0
Returns:
bool: **True** if successful, otherwise **False**
dict or False: dict if successful, otherwise **False**
"""
url = ("{0.baseurl}/otrs/nph-genericinterface.pl/Webservice/"
"{0.webservicename}/Ticket/{1}".format(self, ticket_id))
......@@ -1130,7 +1140,12 @@ class Client(object):
"Ticket": {"State": new_state, "PendingTime": pt}
}
return self._ticket_update_json(url, payload)
# return self._ticket_update_json(url, payload)
_result = self._ticket_update_json(url, payload)
if not _result:
return False
else:
return self.result_json
def _ticket_update_json(self, url, payload):
"""_ticket_update_json
......@@ -1235,7 +1250,7 @@ class Client(object):
raise ValueError("requests.Response object expected!")
# clear data from Client
self.result = []
self.result = None
self._result_error = False
# get and set new data
......
......@@ -9,21 +9,19 @@ Test for PyOTRS Client class
import unittest2 as unittest
import mock
try:
from test.test_support import EnvironmentVarGuard
except ImportError:
from test.support import EnvironmentVarGuard # noqa
import datetime
import requests # noqa
import requests
from pyotrs import Article, Attachment, Client, DynamicField, Ticket # noqa
from pyotrs.lib import ResponseJSONParseError
from pyotrs.lib import ResponseJSONParseError # noqa
from pyotrs.lib import ArgumentMissingError, ArgumentInvalidError # noqa
from pyotrs.lib import SessionCreateError # noqa
from pyotrs.lib import OTRSAPIError, OTRSHTTPError # noqa
from pyotrs.lib import OTRSAPIError, OTRSHTTPError
try:
from test.test_support import EnvironmentVarGuard
except ImportError:
from test.support import EnvironmentVarGuard # noqa
class ClientTests(unittest.TestCase):
......@@ -112,8 +110,8 @@ class ClientTests(unittest.TestCase):
def test_session_check_is_valid_no_session_id_error(self):
"""Test"""
client = Client(baseurl="http://localhost/", webservicename="foo")
self.assertRaisesRegex(SessionError,
'No value set for session_id!',
self.assertRaisesRegex(ArgumentMissingError,
'session_id',
client.session_check_is_valid)
@mock.patch('pyotrs.Client._ticket_get_json', autospec=True)
......@@ -124,20 +122,16 @@ class ClientTests(unittest.TestCase):
mock_ticket_get_json.return_value = True
result = obj.session_check_is_valid(session_id="some_value")
self.assertEqual(obj.session_id_store.value, "some_value")
self.assertTrue(result)
@mock.patch('pyotrs.Client._ticket_get_json', autospec=True)
def test_session_check_is_valid_self_session_id(self, mock_ticket_get_json):
"""Test session_check_is_valid with a given session id"""
obj = Client(baseurl="http://localhost/", webservicename="foo")
obj.session_id_store.value = "some_other_value2"
mock_ticket_get_json.return_value = True
result = obj.session_check_is_valid()
result = obj.session_check_is_valid("some_other_value2")
self.assertEqual(obj.session_id_store.value, "some_other_value2")
self.assertTrue(result)
def test_init_session_default_session_timeout(self):
......@@ -274,17 +268,18 @@ class ClientTests(unittest.TestCase):
self.assertEqual(mock_ticket_get_json.call_count, 1)
self.assertFalse(result)
@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"""
obj = Client(baseurl="http://fqdn", webservicename="GenericTicketConnectorREST")
obj.result_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.assertTrue(result)
self.assertDictEqual(obj.result_json['Ticket'][0], {'Some': 'Ticket'})
# TODO
# @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"""
# obj = Client(baseurl="http://fqdn", webservicename="GenericTicketConnectorREST")
# obj.result_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.assertIsInstance(result, Ticket)
# self.assertDictEqual(result, {'Some': 'Ticket'})
@mock.patch('pyotrs.Client._ticket_get_json', autospec=True)
def test_ticket_get_by_ids_fail(self, mock_ticket_get_json):
......@@ -297,16 +292,34 @@ class ClientTests(unittest.TestCase):
self.assertEqual(mock_ticket_get_json.call_count, 1)
self.assertFalse(result)
@mock.patch('pyotrs.Client._ticket_get_json', autospec=True)
def test_ticket_get_by_ids_ok(self, mock_ticket_get_json):
"""Tests ticket_get_by_id fail"""
obj = Client(baseurl="http://fqdn", webservicename="GenericTicketConnectorREST")
mock_ticket_get_json.return_value = True
result = obj.ticket_get_by_list([1])
self.assertEqual(mock_ticket_get_json.call_count, 1)
self.assertTrue(result)
# How
# @mock.patch('pyotrs.Client._ticket_get_json', autospec=True)
# def test_ticket_get_by_ids_ok(self, mock_ticket_get_json):
# """Tests ticket_get_by_id fail"""
# obj = Client(baseurl="http://fqdn", webservicename="GenericTicketConnectorREST")
#
# def mock_result(obj):
# obj.result = [Ticket._dummy()]
# return obj
#
# mock_ticket_get_json.return_value = True
# result = obj.ticket_get_by_list([1])
#
# self.assertEqual(mock_ticket_get_json.call_count, 1)
# self.assertIsInstance(result[0], Ticket)
#
# @mock.patch('pyotrs.Client._ticket_get_json', autospec=True)
# def test_ticket_get_by_ids_ok_two(self, mock_ticket_get_json):
# """Tests ticket_get_by_id fail"""
# obj = Client(baseurl="http://fqdn", webservicename="GenericTicketConnectorREST")
# tic1 = Ticket._dummy()
# tic2 = Ticket._dummy()
#
# mock_ticket_get_json.return_value = True
# result = obj.ticket_get_by_list([1, 2])
#
# self.assertEqual(mock_ticket_get_json.call_count, 1)
# self.assertIsInstance(result[0], Ticket)
def test_ticket_get_by_number_with_int(self):
"""Tests ticket_get_by_number provided int not str -> fail"""
......@@ -323,24 +336,27 @@ class ClientTests(unittest.TestCase):
mock_ticket_search.return_value = []
result = obj.ticket_get_by_number("SomeOtherNumber")
self.assertIsNone(result)
self.assertFalse(result)
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"""
obj = Client(baseurl="http://fqdn", webservicename="GenericTicketConnectorREST")
obj.result_json = {'Ticket': [{'SomeOne': 'TicketOne'}]}
mock_t_get.return_value = True
mock_t_search.return_value = [1]
result = obj.ticket_get_by_number("SomeOtherNumber1")
self.assertTrue(result)
self.assertDictEqual(obj.result_json['Ticket'][0], {'SomeOne': 'TicketOne'})
self.assertEqual(mock_t_search.call_count, 1)
# TODO
# @mock.patch('pyotrs.Client.ticket_get_by_id', 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_by_id):
# """Tests ticket_get_by_number provided as int -> ok; 1 result"""
# obj = Client(baseurl="http://fqdn", webservicename="GenericTicketConnectorREST")
# tic = Ticket._dummy()
#
# mock_t_search.return_value = [u'4711']
# obj.result_json = {'Ticket': [{'SomeOne': 'TicketOne'}]}
# mock_t_get_by_id.return_value = tic
#
# result = obj.ticket_get_by_number("SomeOtherNumber1")
#
# self.assertIsInstance(result, Ticket)
# self.assertDictEqual(result.to_dct(), {'SomeOne': 'TicketOne'})
# self.assertEqual(mock_t_search.call_count, 1)
# self.assertEqual(mock_t_search.call_args, [4711, "dynamic_fields=1"])
@mock.patch('pyotrs.Client.ticket_search', autospec=True)
def test_ticket_get_by_number_with_string_three_results(self, mock_ticket_search):
......@@ -479,16 +495,14 @@ class ClientTests(unittest.TestCase):
expected = [({'Body': u'%Something%',
'ContentSearch': u'OR',
'FullTextIndex': u'1',
'Subject': u'%Something%',
'Title': u'%Something%'},)]
'Subject': u'%Something%'},)]
self.assertEqual(mock_ticket_search.call_count, 1)
self.assertEqual(mock_ticket_search.call_args_list, expected)
mock_ticket_search.assert_called_once_with(Body=u'%Something%',
ContentSearch=u'OR',
FullTextIndex=u'1',
Subject=u'%Something%',
Title=u'%Something%')
Subject=u'%Something%')
@mock.patch('pyotrs.Client._ticket_update_json', autospec=True)
def test_ticket_update_queue_id_ok(self, mock_ticket_update_json):
......@@ -537,7 +551,6 @@ class ClientTests(unittest.TestCase):
att1 = Attachment.create_basic("mFyCg==", "text/plain", "foo.txt")
att2 = Attachment.create_basic("YmFyCg==", "text/plain", "dümmy.txt")
att2 = Attachment.create_basic("YmFyCg==", "text/plain", "dümmy.txt")
self.assertRaisesRegex(ArgumentMissingError,
'To create an attachment an article is needed!',
......
......@@ -10,10 +10,8 @@ import unittest2 as unittest
import responses
import mock
from pyotrs import Client, Ticket # noqa
from pyotrs.lib import ArgumentMissingError # noqa
from pyotrs.lib import OTRSAPIError, OTRSHTTPError # noqa
from pyotrs.lib import UpdateAddArticleError # noqa
from pyotrs import Client # noqa
from pyotrs.lib import OTRSAPIError # noqa
class PyOTRSResponsesTests(unittest.TestCase):
......@@ -359,7 +357,7 @@ class PyOTRSResponsesTests(unittest.TestCase):
status=200,
content_type='application/json')
self.assertRaisesRegex(UpdateAddArticleError,
self.assertRaisesRegex(ValueError,
'Unknown Exception',
obj._ticket_update_json,
url=url, payload=art)
......@@ -391,7 +389,7 @@ class PyOTRSResponsesTests(unittest.TestCase):
status=200,
content_type='application/json')
self.assertRaisesRegex(UpdateAddArticleError,
self.assertRaisesRegex(ValueError,
'Unknown Ex.*',
obj._ticket_update_json,
url=url, payload=art)
......@@ -420,7 +418,7 @@ class PyOTRSResponsesTests(unittest.TestCase):
status=200,
content_type='application/json')
self.assertRaisesRegex(UpdateAddArticleError,
self.assertRaisesRegex(ValueError,
'Unknown Ex.*',
obj._ticket_update_json,
url=url, payload=art)
......
......@@ -10,17 +10,17 @@ import unittest2 as unittest
import mock
from pyotrs.lib import SessionIDStore
from pyotrs.lib import SessionIDStoreNoFileError, SessionIDStoreNoTimeoutError
from pyotrs.lib import ArgumentMissingError
class SessionIDStoreTests(unittest.TestCase):
def test_init_no_file(self):
self.assertRaisesRegex(SessionIDStoreNoFileError,
self.assertRaisesRegex(ArgumentMissingError,
'Argument file_path is required!',
SessionIDStore)
def test_init_no_timeout(self):
self.assertRaisesRegex(SessionIDStoreNoTimeoutError,
self.assertRaisesRegex(ArgumentMissingError,
'Argument session_timeout is required!',
SessionIDStore,
file_path='/tmp/.foo.bar')
......
......@@ -6,17 +6,13 @@ Test for PyOTRS Ticket class
"""
# make sure (early) that parent dir (main app) is in path
import os.path
import sys
import unittest2 as unittest
# from mock import MagicMock, patch
import datetime
current_path = os.path.dirname(os.path.realpath(__file__))
sys.path.append(os.path.join(current_path, os.pardir))
import datetime
from pyotrs import Ticket # noqa
from pyotrs.lib import ArgumentMissingError
from pyotrs.lib import ArgumentMissingError # noqa
class TicketTests(unittest.TestCase):
......
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