def test_check_scan_results_clean_raises(self): a = module.Antivirus() a._scan_retcodes[a.ScanResult.ERROR] = (lambda x: False) retcode = 2 stdout = "stdout" stderr = "stderr" with self.assertRaises(RuntimeError): a.check_scan_results("/a/file/path", (retcode, stdout, stderr))
def test_check_scan_results_clean(self): a = module.Antivirus() retcode = 0 stdout = "stdout" stderr = "stderr" res = a.check_scan_results("/a/file/path", (retcode, stdout, stderr)) self.assertEquals(res, 0) self.assertIsNone(a.scan_results["/a/file/path"])
def test_check_scan_results_error(self): a = module.Antivirus() retcode = -1 stdout = "stdout" stderr = "stderr" res = a.check_scan_results("/a/file/path", (retcode, stdout, stderr)) self.assertEquals(res, -1) self.assertEquals(a.scan_results["/a/file/path"], "stderr")
def test_check_scan_results_infected_error(self, m_identify_threat): a = module.Antivirus() retcode = 1 stdout = "stdout" stderr = "stderr" m_identify_threat.return_value = "" res = a.check_scan_results("/a/file/path", (retcode, stdout, stderr)) self.assertEquals(res, -1)
def test_run_cmd_list(self, m_Popen): m_pd = MagicMock() m_pd.returncode = 0 stdout = b"stdout" stderr = b"stderr" m_pd.communicate.return_value = stdout, stderr m_Popen.return_value = m_pd a = module.Antivirus() res = a.run_cmd(["ls", "-la", "/tmp"]) m_Popen.assert_called_once_with(['ls', '-la', '/tmp'], stderr=module.PIPE, stdout=module.PIPE) self.assertEquals(res, (0, "stdout", "stderr"))
def test_run_cmd_str(self, m_Popen): m_pd = MagicMock() m_pd.returncode = 0 stdout = b"stdout" stderr = b"stderr" m_pd.communicate.return_value = stdout, stderr m_Popen.return_value = m_pd a = module.Antivirus() res = a.run_cmd("/usr/bin/ls") m_Popen.assert_called_once_with(['/usr/bin/ls'], stderr=module.PIPE, stdout=module.PIPE) self.assertEquals(res, (0, "stdout", "stderr"))
def test_scan_raises_tuple(self): a = module.Antivirus() with self.assertRaises(NotImplementedError): a.scan(tuple())
def test__run_and_parse_no_match(self, m_run_cmd): a = module.Antivirus() m_run_cmd.return_value = 0, "some text", "" regexp = '(?P<num1>\\d+) (?P<num2>\\d+)' with self.assertRaises(RuntimeError): a._run_and_parse(regexp=regexp, group='num2')
def test__run_and_parse_with_group(self, m_run_cmd): a = module.Antivirus() m_run_cmd.return_value = 0, "some text and figures 1 2 3 4", "" regexp = '(?P<num1>\\d+) (?P<num2>\\d+)' res = a._run_and_parse(regexp=regexp, group='num2') self.assertEquals(res, "2")
def test__run_and_parse_no_regexp(self, m_run_cmd): a = module.Antivirus() m_run_cmd.return_value = 0, "stdout", "" res = a._run_and_parse() self.assertEquals(res, "stdout")
def test__run_and_parse_wrong_retcode(self, m_run_cmd): a = module.Antivirus() m_run_cmd.return_value = 1, "", "" with self.assertRaises(RuntimeError): a._run_and_parse()