From cebdc2ef3ffbbef7ee34926a00ec77cd54ced6ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Vinot?= Date: Wed, 28 Aug 2019 14:45:59 +0200 Subject: [PATCH] fix: Automatically skip empty string in add_attribute at object level Fix #439 Re-enable test cases. --- pymisp/mispevent.py | 4 ++-- tests/test_mispevent.py | 4 ++++ tests/testlive_comprehensive.py | 10 +++++++--- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/pymisp/mispevent.py b/pymisp/mispevent.py index 98e4672..2f1df47 100644 --- a/pymisp/mispevent.py +++ b/pymisp/mispevent.py @@ -1303,8 +1303,8 @@ class MISPObject(AbstractMISP): dictionary with all the keys supported by MISPAttribute""" if simple_value is not None: # /!\ The value *can* be 0 value = {'value': simple_value} - if value.get('value') is None: - # FIXME: Add a warning to the user, silently discarding the call isn't the best idea + if value.get('value') in [None, '']: + logger.warning("The value of the attribute you're trying to add is None or empty string, skipping it. Object relation: {}".format(object_relation)) return None if self._known_template: if self._definition['attributes'].get(object_relation): diff --git a/tests/test_mispevent.py b/tests/test_mispevent.py index 854fca7..b190541 100644 --- a/tests/test_mispevent.py +++ b/tests/test_mispevent.py @@ -72,6 +72,10 @@ class TestMISPEvent(unittest.TestCase): def test_object_tag(self): self.mispevent.add_object(name='file', strict=True) + a = self.mispevent.objects[0].add_attribute('filename', value='') + self.assertEqual(a, None) + a = self.mispevent.objects[0].add_attribute('filename', value=None) + self.assertEqual(a, None) a = self.mispevent.objects[0].add_attribute('filename', value='bar', Tag=[{'name': 'blah'}]) del a.uuid self.assertEqual(self.mispevent.objects[0].attributes[0].tags[0].name, 'blah') diff --git a/tests/testlive_comprehensive.py b/tests/testlive_comprehensive.py index 5529ec7..af424ed 100644 --- a/tests/testlive_comprehensive.py +++ b/tests/testlive_comprehensive.py @@ -1529,12 +1529,16 @@ class TestComprehensive(unittest.TestCase): self.admin_misp_connector.delete_event(second) self.admin_misp_connector.delete_event(third) - @unittest.skip('Need rework.') def test_search_logs(self): # FIXME: https://github.com/MISP/MISP/issues/4872 + r = self.admin_misp_connector.update_user({'email': 'testusr-changed@user.local'}, self.test_usr) r = self.admin_misp_connector.search_logs(model='User', created=date.today(), pythonify=True) - for entry in r[-2:]: - self.assertEqual(entry.action, 'add') + for entry in r[-1:]: + self.assertEqual(entry.action, 'edit') + r = self.admin_misp_connector.search_logs(email='admin@admin.test', created=date.today(), pythonify=True) + for entry in r[-1:]: + self.assertEqual(entry.action, 'edit') + r = self.admin_misp_connector.update_user({'email': 'testusr@user.local'}, self.test_usr) def test_live_acl(self): missing_acls = self.admin_misp_connector.remote_acl