import unittest from os import path from time import time from common_analysis_oms.oms import CommonAnalysisOMS BASE_DIR = path.dirname(path.abspath(__file__)) BENIGN_FILE_PATH = path.join(BASE_DIR, "data/benign") MALICIOUS_FILE_PATH = path.join(BASE_DIR, "data/eicar") class Test(unittest.TestCase): def setUp(self): self.oms = CommonAnalysisOMS() def tearDown(self): pass def test_plugin_init(self): self.assertGreater(len(self.oms.av_list), 0, "no scanners installed, please install at least clamav") def test_get_av_scan_result(self): self.assertEqual(self.oms.get_av_scan_result({"command": "echo $filepath"}, "test"), "test\n") def test_find_malware_name(self): self.assertEqual(self.oms.find_malware_name("test string", {"re_malware_name": "str([\w]+)"}), "ing") def test_scan_benign(self): result = self.oms.scan_file(BENIGN_FILE_PATH) self.assertEqual(result["positives"], 0) self.assertTrue(True not in [result["scans"][av]["detected"] for av in result["scans"]]) def test_scan_malicious(self): result = self.oms.scan_file(MALICIOUS_FILE_PATH) self.assertEqual(result["positives"], result['number_of_scanners']) self.assertTrue(False not in [result["scans"][av]["detected"] for av in result["scans"]]) def test_analyze_file(self): result = self.oms.analyze_file(MALICIOUS_FILE_PATH) self.assertGreater(result['positives'], 0, "should be at least 1") self.assertIn('scans', result, "scans not in result") self.assertIn('plugin_version', result, "plugin_version not in results") self.assertAlmostEqual(result['analysis_date'], time(), msg="Time not correct. This test might fail, if you installed many AVs", delta=120)