def test_launch_v2_file_already_scanned(self, m_probe_ctrl, m_celery_frontend, m_FileWeb): m_request = MagicMock() force = False mimetype_filtering = False resubmit_files = False probes = ["probe1", "probe2"] m_body = { "files": ["fileweb1"], "options": { "probes": probes, "force": force, "mimetype_filtering": mimetype_filtering, "resubmit_files": resubmit_files, } } m_file_ext = MagicMock() m_file_ext.scan = "scanid1" m_FileWeb.load_from_ext_id.return_value = m_file_ext expected = "The \"files\" parameter is invalid. File fileweb1 " \ "already scanned" with self.assertRaises(api_scans.HTTPInvalidParam) as context: api_scans.launch_v2(m_request, m_body) m_probe_ctrl.check_probe.assert_not_called() m_celery_frontend.scan_launch.assert_not_called() self.assertEqual(context.exception.description, expected)
def test_launch_v2_file_not_found(self, m_probe_ctrl, m_celery_frontend, m_FileExt): m_request = MagicMock() force = False mimetype_filtering = False resubmit_files = False probes = ["probe1", "probe2"] m_body = { "files": ["file_ext1", "file_ext2"], "options": { "probes": probes, "force": force, "mimetype_filtering": mimetype_filtering, "resubmit_files": resubmit_files, } } m_FileExt.load_from_ext_id.side_effect = \ api_scans.IrmaDatabaseResultNotFound expected = "The \"files\" parameter is invalid. File file_ext1 " \ "not found" with self.assertRaises(api_scans.HTTPInvalidParam) as context: api_scans.launch_v2(m_request, m_body) m_probe_ctrl.check_probe.assert_not_called() m_celery_frontend.scan_launch.assert_not_called() self.assertEqual(context.exception.description, expected)
def test_launch_v2_file_deleted(self, m_probe_ctrl, m_celery_frontend, m_FileExt): m_request = MagicMock() force = False mimetype_filtering = False resubmit_files = False probes = ["probe1", "probe2"] m_body = { "files": ["file_ext1"], "options": { "probes": probes, "force": force, "mimetype_filtering": mimetype_filtering, "resubmit_files": resubmit_files, } } sha256 = "whatever" m_file_ext, m_file = MagicMock(), MagicMock() m_file.path = None m_file_ext.file = m_file m_file_ext.file.sha256 = sha256 m_file_ext.scan = None m_FileExt.load_from_ext_id.return_value = m_file_ext expected = "The \"files\" parameter is invalid. File with hash " \ "%s should be (re)uploaded" % sha256 with self.assertRaises(api_scans.HTTPInvalidParam) as context: api_scans.launch_v2(m_request, m_body) m_probe_ctrl.check_probe.assert_not_called() m_celery_frontend.scan_launch.assert_not_called() self.assertEqual(context.exception.description, expected)
def test_launch_v2_resubmit_files_wrong_type(self): m_request = MagicMock() m_body = { "files": [MagicMock()], "options": { "force": True, "mimetype_filtering": True, "resubmit_files": 17 } } with self.assertRaises(HTTPInvalidParam): api_scans.launch_v2(m_request, m_body)
def test_launch_v2_ok(self, m_check_probe, m_celery_frontend, m_FileExt): m_request = MagicMock() force = False mimetype_filtering = False resubmit_files = False probes = ["probe1", "probe2"] m_body = { "files": ["file_ext1"], "options": { "probes": probes, "force": force, "mimetype_filtering": mimetype_filtering, "resubmit_files": resubmit_files, } } m_file_ext = MagicMock() m_file_ext.scan = None m_FileExt.load_from_ext_id.return_value = m_file_ext result = api_scans.launch_v2(m_request, m_body) m_check_probe.assert_called_once_with(probes) m_celery_frontend.scan_launch.assert_called_once() self.assertIsScan(result) self.assertEqual(result["force"], str(force), "force value is wrong") self.assertEqual(result["mimetype_filtering"], str(mimetype_filtering), "mimetype_filtering value is wrong") self.assertEqual(result["resubmit_files"], str(resubmit_files), "resubmit_files value is wrong")
def test_launch_v2_no_body(self): m_body = None m_request = MagicMock() with self.assertRaises(HTTPInvalidParam): api_scans.launch_v2(m_request, m_body)