diff --git a/examples/del.py b/examples/del.py new file mode 100755 index 0000000..0577353 --- /dev/null +++ b/examples/del.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from pymisp import PyMISP +from keys import misp_url, misp_key +import argparse + + +# Usage for pipe masters: ./last.py -l 5h | jq . + + +def init(url, key): + return PyMISP(url, key, True, 'json', debug=True) + + +def del_event(m, eventid): + result = m.delete_event(eventid) + print(result) + +def del_attr(m, attrid): + result = m.delete_attribute(attrid) + print(result) + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Delete an event from a MISP instance.') + parser.add_argument("-e", "--event", help="Event ID to delete.") + parser.add_argument("-a", "--attribute", help="Attribute ID to delete.") + + args = parser.parse_args() + + misp = init(misp_url, misp_key) + + if args.event: + del_event(misp, args.event) + else: + del_attr(misp, args.attribute) diff --git a/examples/get.py b/examples/get.py index 71bfa97..d2be085 100755 --- a/examples/get.py +++ b/examples/get.py @@ -24,12 +24,11 @@ def init(url, key): def get_event(m, event, out=None): result = m.get_event(event) - r = result.json() if out is None: - print(json.dumps(r) + '\n') + print(json.dumps(result) + '\n') else: with open(out, 'w') as f: - f.write(json.dumps(r) + '\n') + f.write(json.dumps(result) + '\n') if __name__ == '__main__': diff --git a/tests/test_offline.py b/tests/test_offline.py index e9e30ac..26e702c 100644 --- a/tests/test_offline.py +++ b/tests/test_offline.py @@ -13,9 +13,10 @@ from pymisp import PyMISP class TestOffline(unittest.TestCase): def setUp(self): + self.maxDiff = None self.domain = 'http://misp.local/' self.key = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' - self.event = json.load(open('tests/misp_event.json', 'r')) + self.event = {'Event': json.load(open('tests/misp_event.json', 'r'))} self.types = json.load(open('tests/describeTypes.json', 'r')) def initURI(self, m): @@ -25,7 +26,7 @@ class TestOffline(unittest.TestCase): m.register_uri('POST', self.domain + 'events/2', json=self.event) m.register_uri('DELETE', self.domain + 'events/2', json={'message': 'Event deleted.'}) m.register_uri('DELETE', self.domain + 'events/3', json={'errors': ['Invalid event'], 'message': 'Invalid event', 'name': 'Invalid event', 'url': '/events/3'}) - m.register_uri('DELETE', self.domain + 'attribute/2', json={'message': 'Attribute deleted.'}) + m.register_uri('DELETE', self.domain + 'attributes/2', json={'message': 'Attribute deleted.'}) def test_getEvent(self, m): self.initURI(m) @@ -41,8 +42,7 @@ class TestOffline(unittest.TestCase): e0 = pymisp.update_event(2, json.dumps(self.event)) e1 = pymisp.update_event(2, self.event) self.assertEqual(e0, e1) - e = {'Event': self.event} - e2 = pymisp.update(e) + e2 = pymisp.update(e0) self.assertEqual(e1, e2) self.assertEqual(self.event, e2) @@ -59,4 +59,14 @@ class TestOffline(unittest.TestCase): self.initURI(m) pymisp = PyMISP(self.domain, self.key, debug=True) d = pymisp.delete_attribute(2) - self.assertEqual(d, {'message': 'Event deleted.'}) + self.assertEqual(d, {'message': 'Attribute deleted.'}) + + def test_publish(self, m): + self.initURI(m) + pymisp = PyMISP(self.domain, self.key, debug=True) + e = pymisp.publish(self.event) + pub = self.event + pub['Event']['published'] = True + self.assertEqual(e, pub) + e = pymisp.publish(self.event) + self.assertEqual(e, {'error': 'Already published'})