diff --git a/.travis.yml b/.travis.yml index 40a3227..951befd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,7 +22,6 @@ install: script: - bash travis/test_travis.sh - - mypy tests/testlive_comprehensive.py tests/test_mispevent.py tests/testlive_sync.py pymisp after_success: - pipenv run codecov diff --git a/Pipfile.lock b/Pipfile.lock index 97101ba..93611b5 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -100,13 +100,6 @@ ], "version": "==0.10.1" }, - "more-itertools": { - "hashes": [ - "sha256:1a2a32c72400d365000412fe08eb4a24ebee89997c18d3d147544f70f5403b39", - "sha256:c468adec578380b6281a114cb8a5db34eb1116277da92d7c46f904f0b52d3288" - ], - "version": "==8.1.0" - }, "pillow": { "hashes": [ "sha256:0a628977ac2e01ca96aaae247ec2bd38e729631ddf2221b4b715446fd45505be", @@ -231,16 +224,16 @@ }, "urllib3": { "hashes": [ - "sha256:a8a318824cc77d1fd4b2bec2ded92646630d7fe8619497b142c84a9e6f5a7293", - "sha256:f3c5fd51747d450d4dcf6f923c81f78f811aab8205fda64b0aba34a4e48b0745" + "sha256:2f3db8b19923a873b3e5256dc9c2dedfa883e33d87c690d9c7913e1f40673cdc", + "sha256:87716c2d2a7121198ebcb7ce7cccf6ce5e9ba539041cfbaeecfb641dc0bf6acc" ], - "version": "==1.25.7" + "version": "==1.25.8" }, "validators": { "hashes": [ - "sha256:0bfe836a1af37bb266d71ec1e98b530c38ce11bc7fbe0c4c96ef7b1532d019e5" + "sha256:b192e6bde7d617811d59f50584ed240b580375648cd032d106edeb3164099508" ], - "version": "==0.14.1" + "version": "==0.14.2" }, "wrapt": { "hashes": [ @@ -250,10 +243,10 @@ }, "zipp": { "hashes": [ - "sha256:8dda78f06bd1674bd8720df8a50bb47b6e1233c503a4eed8e7810686bde37656", - "sha256:d38fbe01bbf7a3593a32bc35a9c4453c32bc42b98c377f9bff7e9f8da157786c" + "sha256:ccc94ed0909b58ffe34430ea5451f07bc0c76467d7081619a454bf5c98b89e28", + "sha256:feae2f18633c32fc71f2de629bfb3bd3c9325cd4419642b1f1da42ee488d9b98" ], - "version": "==1.0.0" + "version": "==2.1.0" } }, "develop": { @@ -425,10 +418,10 @@ }, "jinja2": { "hashes": [ - "sha256:74320bb91f31270f9551d46522e33af46a80c3d619f4a4bf42b3164d30b5911f", - "sha256:9fe95f19286cfefaa917656583d020be14e7859c6b0252588391e47db34527de" + "sha256:6e7a3c2934694d59ad334c93dd1b6c96699cf24c53fdb8ec848ac6b23e685734", + "sha256:d6609ae5ec3d56212ca7d802eda654eaf2310000816ce815361041465b108be4" ], - "version": "==2.10.3" + "version": "==2.11.0" }, "jsonschema": { "hashes": [ @@ -462,13 +455,16 @@ "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161", "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235", "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5", + "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42", "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff", "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b", "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1", "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e", "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183", "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66", + "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b", "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1", + "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15", "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1", "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e", "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b", @@ -485,7 +481,9 @@ "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6", "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f", "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f", - "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7" + "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2", + "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7", + "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be" ], "version": "==1.1.1" }, @@ -496,13 +494,6 @@ "index": "pypi", "version": "==0.57.0" }, - "more-itertools": { - "hashes": [ - "sha256:1a2a32c72400d365000412fe08eb4a24ebee89997c18d3d147544f70f5403b39", - "sha256:c468adec578380b6281a114cb8a5db34eb1116277da92d7c46f904f0b52d3288" - ], - "version": "==8.1.0" - }, "mypy": { "hashes": [ "sha256:0a9a45157e532da06fe56adcfef8a74629566b607fa2c1ac0122d1ff995c748a", @@ -553,10 +544,10 @@ }, "packaging": { "hashes": [ - "sha256:aec3fdbb8bc9e4bb65f0634b9f551ced63983a529d6a8931817d52fdd0816ddb", - "sha256:fe1d8331dfa7cc0a883b49d75fc76380b2ab2734b220fbb87d774e4fd4b851f8" + "sha256:170748228214b70b672c581a3dd610ee51f733018650740e98c7df862a583f73", + "sha256:e665345f9eef0c621aa0bf2f8d78cf6d21904eef16a93f020240b704a57f1334" ], - "version": "==20.0" + "version": "==20.1" }, "pillow": { "hashes": [ @@ -840,16 +831,16 @@ }, "urllib3": { "hashes": [ - "sha256:a8a318824cc77d1fd4b2bec2ded92646630d7fe8619497b142c84a9e6f5a7293", - "sha256:f3c5fd51747d450d4dcf6f923c81f78f811aab8205fda64b0aba34a4e48b0745" + "sha256:2f3db8b19923a873b3e5256dc9c2dedfa883e33d87c690d9c7913e1f40673cdc", + "sha256:87716c2d2a7121198ebcb7ce7cccf6ce5e9ba539041cfbaeecfb641dc0bf6acc" ], - "version": "==1.25.7" + "version": "==1.25.8" }, "validators": { "hashes": [ - "sha256:0bfe836a1af37bb266d71ec1e98b530c38ce11bc7fbe0c4c96ef7b1532d019e5" + "sha256:b192e6bde7d617811d59f50584ed240b580375648cd032d106edeb3164099508" ], - "version": "==0.14.1" + "version": "==0.14.2" }, "wcwidth": { "hashes": [ @@ -866,10 +857,10 @@ }, "zipp": { "hashes": [ - "sha256:8dda78f06bd1674bd8720df8a50bb47b6e1233c503a4eed8e7810686bde37656", - "sha256:d38fbe01bbf7a3593a32bc35a9c4453c32bc42b98c377f9bff7e9f8da157786c" + "sha256:ccc94ed0909b58ffe34430ea5451f07bc0c76467d7081619a454bf5c98b89e28", + "sha256:feae2f18633c32fc71f2de629bfb3bd3c9325cd4419642b1f1da42ee488d9b98" ], - "version": "==1.0.0" + "version": "==2.1.0" } } } diff --git a/tests/test_mispevent.py b/tests/test_mispevent.py index 6a27130..62982ef 100644 --- a/tests/test_mispevent.py +++ b/tests/test_mispevent.py @@ -6,8 +6,10 @@ import json import sys from io import BytesIO import glob +import hashlib +from datetime import date, datetime -from pymisp import MISPEvent, MISPSighting, MISPTag +from pymisp import MISPEvent, MISPSighting, MISPTag, MISPOrganisation from pymisp.exceptions import InvalidMISPObject @@ -293,9 +295,36 @@ class TestMISPEvent(unittest.TestCase): ref_json = json.load(f) self.assertEqual(self.mispevent.to_json(sort_keys=True, indent=2), json.dumps(ref_json, sort_keys=True, indent=2)) -''' - # Reenable that the 1st of jan 2020. - @unittest.skipIf(sys.version_info < (3, 6), 'Not supported on python < 3.6') + def test_first_last_seen(self): + me = MISPEvent() + me.info = 'Test First and Last Seen' + me.date = '2020.01.12' + self.assertEqual(me.date.day, 12) + me.add_attribute('ip-dst', '8.8.8.8', first_seen='06-21-1998', last_seen=1580213607.469571) + self.assertEqual(me.attributes[0].first_seen.year, 1998) + self.assertEqual(me.attributes[0].last_seen.year, 2020) + today = date.today() + me.attributes[0].first_seen = today + now = datetime.now().astimezone() + me.attributes[0].last_seen = now + self.assertEqual(me.attributes[0].first_seen.year, today.year) + self.assertEqual(me.attributes[0].last_seen, now) + + def test_feed(self): + me = MISPEvent() + me.info = 'Test feed' + org = MISPOrganisation() + org.name = 'TestOrg' + org.uuid = '123478' + me.Orgc = org + me.add_attribute('ip-dst', '8.8.8.8') + h = hashlib.new('md5') + h.update(b'8.8.8.8') + hash_attr_val = h.hexdigest() + feed = me.to_feed(with_meta=True) + self.assertEqual(feed['Event']['_hashes'][0], hash_attr_val) + self.assertEqual(feed['Event']['_manifest'][me.uuid]['info'], 'Test feed') + def test_object_templates(self): me = MISPEvent() for template in glob.glob(str(me.misp_objects_path / '*' / 'definition.json')): @@ -314,7 +343,7 @@ class TestMISPEvent(unittest.TestCase): if 'categories' in entry: subset = set(entry['categories']).issubset(me.describe_types['categories']) self.assertTrue(subset, f'{t_json["name"]} - {obj_relation}') -''' + if __name__ == '__main__': unittest.main() diff --git a/travis/test_travis.sh b/travis/test_travis.sh index 8018fd4..8fcbc60 100644 --- a/travis/test_travis.sh +++ b/travis/test_travis.sh @@ -4,3 +4,4 @@ set -e set -x pipenv run nosetests-3.4 --with-coverage --cover-package=pymisp,tests --cover-tests tests/test_*.py +pipenv run mypy tests/testlive_comprehensive.py tests/test_mispevent.py tests/testlive_sync.py pymisp