From e7f395a92c0a267ec13532849788708ea31f8488 Mon Sep 17 00:00:00 2001 From: "Stefan Hagen (Individual)" Date: Mon, 11 Dec 2017 14:00:43 +0100 Subject: [PATCH] enhance coverage and fix en passant with focus on api --- pymisp/api.py | 7 +++++-- tests/test_offline.py | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/pymisp/api.py b/pymisp/api.py index 9806f1d..2aaa35f 100644 --- a/pymisp/api.py +++ b/pymisp/api.py @@ -189,8 +189,11 @@ class PyMISP(object): messages = [] if response.get('error'): if isinstance(response['error'], list): - for e in response['errors']: - messages.append(e['error']['value'][0]) + for e in response['error']: + if isinstance(e, dict): + messages.append(e['error']['value'][0]) + else: + messages.append(e) else: messages.append(['error']) elif response.get('errors'): diff --git a/tests/test_offline.py b/tests/test_offline.py index 992fb80..50c1cae 100644 --- a/tests/test_offline.py +++ b/tests/test_offline.py @@ -269,6 +269,39 @@ class TestOffline(unittest.TestCase): self.assertTrue(sd['to_ids'] in [0, 1]) self.assertTrue(sd['default_category'] in categories) + def test_flatten_error_messages_singular(self, m): + self.initURI(m) + pymisp = PyMISP(self.domain, self.key) + error = pymisp.get(1) + response = self.auth_error_msg + response['error'] = ['foo', 'bar', 'baz'] + messages = pymisp.flatten_error_messages(response) + self.assertEqual(["foo", "bar", "baz"], messages) + + def test_flatten_error_messages_plural(self, m): + self.initURI(m) + pymisp = PyMISP(self.domain, self.key) + error = pymisp.get(1) + response = self.auth_error_msg + response['errors'] = {'foo': 42, 'bar': False, 'baz': ['oo', 'ka']} + messages = pymisp.flatten_error_messages(response) + self.assertEqual(['42 (foo)', 'False (bar)', 'oo', 'ka'], messages) + + def test_flatten_error_messages_nested(self, m): + self.initURI(m) + pymisp = PyMISP(self.domain, self.key) + error = pymisp.get(1) + response = self.auth_error_msg + response['errors'] = { + 'fo': {'o': 42}, 'ba': {'r': True}, 'b': {'a': ['z']}, 'd': {'e': {'e': ['p']}}} + messages = pymisp.flatten_error_messages(response) + self.assertEqual(['Error in o: 42', 'Error in r: True', 'Error in a: z', "Error in e: {'e': ['p']}"], messages) + + def test_test_connection(self, m): + self.initURI(m) + pymisp = PyMISP(self.domain, self.key) + self.assertTrue(pymisp.test_connection()) + if __name__ == '__main__': unittest.main()