def test_get_dependencies_xml(self): w = DummyDaemon() out = ( '<dependencies>' '<dependency vt_id="1.2.3.4"/><dependency vt_id="4.3.2.1"/>' '</dependencies>' ) dep = ['1.2.3.4', '4.3.2.1'] res = w.get_dependencies_vt_as_xml_str( '1.3.6.1.4.1.25623.1.0.100061', dep ) self.assertEqual(res, out)
def test_build_alive_test_opt_fail_1(self): dummy = DummyDaemon() logging.Logger.debug = Mock() target_options_dict = {'alive_test': 'a'} p_handler = PreferenceHandler( '1234-1234', None, dummy.scan_collection, None ) target_options = p_handler.build_alive_test_opt_as_prefs( target_options_dict ) assert_called_once(logging.Logger.debug) self.assertEqual(len(target_options), 0)
def test_set_plugins_false(self, mock_kb): w = DummyDaemon() w.scan_collection.get_vts = Mock() w.scan_collection.get_vts.return_value = {} w.load_vts() temp_vts = w.vts p = PreferenceHandler('1234-1234', mock_kb, w.scan_collection, temp_vts) p.kbdb.add_scan_preferences = Mock() r = p.prepare_plugins_for_openvas() self.assertFalse(r)
def test_update_progress(self, mock_set_scan_host_progress): w = DummyDaemon() mock_set_scan_host_progress.return_value = None msg = '0/-1' target_element = w.create_xml_target() targets = OspRequest.process_target_element(target_element) w.create_scan('123-456', targets, None, []) w.update_progress('123-456', 'localhost', msg) mock_set_scan_host_progress.assert_called_with('123-456', 'localhost', 100)
def test_set_boreas_alive_test_without_settings(self, mock_kb): dummy = DummyDaemon() t_opt = {'alive_test': 16} dummy.scan_collection.get_target_options = MagicMock(return_value=t_opt) ov_setting = {} with patch.object(Openvas, 'get_settings', return_value=ov_setting): p_handler = PreferenceHandler( '1234-1234', mock_kb, dummy.scan_collection, None ) p_handler.scan_id = '456-789' p_handler.kbdb.add_scan_preferences = MagicMock() p_handler.prepare_boreas_alive_test() p_handler.kbdb.add_scan_preferences.assert_not_called()
def test_get_dependencies_xml_missing_dep(self): w = DummyDaemon() out = ( '<dependencies>' '<dependency vt_id="1.3.6.1.4.1.25623.1.2.3.4"/>' '</dependencies>' ) dep = ['1.3.6.1.4.1.25623.1.2.3.4', 'file_name.nasl'] res = w.get_dependencies_vt_as_xml_str( '1.3.6.1.4.1.25623.1.0.100061', dep ) self.assertEqual(res, out)
def test_calculate_vts_collection_hash_no_params(self): w = DummyDaemon() vthelper = VtHelper(w.nvti) hash_out = vthelper.calculate_vts_collection_hash() vt_hash_str = ('1.3.6.1.4.1.25623.1.0.10006115339065651Data ' + 'length :2Do not randomize the order in which ' + 'ports are scannedno') vt_hash = sha256() vt_hash.update(vt_hash_str.encode('utf-8')) hash_test = vt_hash.hexdigest() self.assertEqual(hash_test, hash_out)
def test_feed_is_outdated_none(self, mock_set_params: MagicMock, mock_path_exists: MagicMock): w = DummyDaemon() w.scan_only_params['plugins_folder'] = '/foo/bar' # Return None mock_path_exists.return_value = False ret = w.feed_is_outdated('1234') self.assertIsNone(ret) self.assertEqual(mock_set_params.call_count, 1) self.assertEqual(mock_path_exists.call_count, 1)
def test_get_severities_xml(self): w = DummyDaemon() out = ('<severities>' '<severity type="cvss_base_v2">' 'AV:N/AC:L/Au:N/C:N/I:N/A:N' '</severity>' '</severities>') vt = w.VTS['1.3.6.1.4.1.25623.1.0.100061'] severities = vt.get('severities') res = w.get_severities_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061', severities) self.assertEqual(res, out)
def test_set_ports(self, mock_kb): w = DummyDaemon() w.scan_collection.get_ports = MagicMock(return_value='80,443') p = PreferenceHandler('1234-1234', mock_kb, w.scan_collection, None) p.scan_id = '456-789' p.kbdb.add_scan_preferences = MagicMock() p.prepare_ports_for_openvas() p.kbdb.add_scan_preferences.assert_called_with( p.scan_id, ['port_range|||80,443'], )
def test_set_target(self, mock_kb): w = DummyDaemon() w.scan_collection.get_host_list = MagicMock(return_value='192.168.0.1') p = PreferenceHandler('1234-1234', mock_kb, w.scan_collection, None) p.scan_id = '456-789' p.kbdb.add_scan_preferences = MagicMock() p.prepare_target_for_openvas() p.kbdb.add_scan_preferences.assert_called_with( p.scan_id, ['TARGET|||192.168.0.1'], )
def test_process_vts_not_found(self, mock_kb): w = DummyDaemon() logging.Logger.warning = Mock() vts = { '1.3.6.1.4.1.25623.1.0.100065': {'3': 'new value'}, 'vt_groups': ['family=debian', 'family=general'], } p = PreferenceHandler('1234-1234', mock_kb, w.scan_collection, w.nvti) w.nvti.get_nvt_metadata.return_value = None p._process_vts(vts) assert_called_once(logging.Logger.warning)
def test_not_append_notus_oids(self): dummy = DummyDaemon() vts = { '1.3.6.1.4.1.25623.1.0.100061': {'1': 'new value'}, 'vt_groups': ['family=debian', 'family=general'], } p_handler = PreferenceHandler( '1234-1234', None, dummy.scan_collection, dummy.nvti, lambda _: True ) re = p_handler._process_vts(vts) # pylint: disable = protected-access self.assertEqual(re[0], []) self.assertEqual(re[1], {})
def test_set_credentials_empty(self, mock_kb): dummy = DummyDaemon() creds = {} dummy.scan_collection.get_credentials = MagicMock(return_value=creds) p_handler = PreferenceHandler( '1234-1234', mock_kb, dummy.scan_collection, None ) p_handler.scan_id = '456-789' p_handler.kbdb.add_scan_preferences = MagicMock() ret = p_handler.prepare_credentials_for_openvas() self.assertTrue(ret)
def test_set_alive_no_setting(self, mock_kb): w = DummyDaemon() t_opt = {} w.scan_collection.get_target_options = MagicMock(return_value=t_opt) ov_setting = {} with patch.object(Openvas, 'get_settings', return_value=ov_setting): p = PreferenceHandler('1234-1234', mock_kb, w.scan_collection, None) p.scan_id = '456-789' p.kbdb.add_scan_preferences = MagicMock() p.prepare_alive_test_option_for_openvas() p.kbdb.add_scan_preferences.assert_not_called()
def test_set_reverse_lookup_opt(self, mock_kb): w = DummyDaemon() t_opt = {'reverse_lookup_only': 1} w.scan_collection.get_target_options = MagicMock(return_value=t_opt) p = PreferenceHandler('1234-1234', mock_kb, w.scan_collection, None) p.scan_id = '456-789' p.kbdb.add_scan_preferences = MagicMock() p.prepare_reverse_lookup_opt_for_openvas() p.kbdb.add_scan_preferences.assert_called_with( p.scan_id, ['reverse_lookup_only|||yes', 'reverse_lookup_unify|||no',], )
def test_set_host_options(self, mock_kb): w = DummyDaemon() exc = '192.168.0.1' w.scan_collection.get_exclude_hosts = MagicMock(return_value=exc) p = PreferenceHandler('1234-1234', mock_kb, w.scan_collection, None) p.scan_id = '456-789' p.kbdb.add_scan_preferences = MagicMock() p.prepare_host_options_for_openvas() p.kbdb.add_scan_preferences.assert_called_with( p.scan_id, ['exclude_hosts|||192.168.0.1'], )
def test_get_feed_info_none( self, mock_set_params: MagicMock, mock_path_exists: MagicMock ): w = DummyDaemon() w.scan_only_params['plugins_folder'] = '/foo/bar' # Return None mock_path_exists.return_value = False ret = w.get_feed_info() self.assertEqual(ret, {}) self.assertEqual(mock_set_params.call_count, 1) self.assertEqual(mock_path_exists.call_count, 1)
def test_set_host_options_none(self, mock_kb): dummy = DummyDaemon() exc = '' dummy.scan_collection.get_exclude_hosts = MagicMock(return_value=exc) p_handler = PreferenceHandler( '1234-1234', mock_kb, dummy.scan_collection, None ) p_handler.scan_id = '456-789' p_handler.kbdb.add_scan_preferences = MagicMock() p_handler.prepare_host_options_for_openvas() p_handler.kbdb.add_scan_preferences.assert_not_called()
def test_build_alive_test_opt(self): w = DummyDaemon() alive_test_out = { "1.3.6.1.4.1.25623.1.0.100315:1:checkbox:Do a TCP ping": "no", "1.3.6.1.4.1.25623.1.0.100315:2:checkbox:TCP ping tries also TCP-SYN ping": "no", "1.3.6.1.4.1.25623.1.0.100315:7:checkbox:TCP ping tries only TCP-SYN ping": "no", "1.3.6.1.4.1.25623.1.0.100315:3:checkbox:Do an ICMP ping": "yes", "1.3.6.1.4.1.25623.1.0.100315:4:checkbox:Use ARP": "no", "1.3.6.1.4.1.25623.1.0.100315:5:checkbox:Mark unrechable Hosts as dead (not scanning)": "yes", } target_options_dict = {'alive_test': '2'} p = PreferenceHandler('1234-1234', None, w.scan_collection, None) ret = p.build_alive_test_opt_as_prefs(target_options_dict) self.assertEqual(ret, alive_test_out) # alive test was supplied via sepertae xml element w = DummyDaemon() target_options_dict = {'alive_test_methods': '1', 'icmp': '1'} p = PreferenceHandler('1234-1234', None, w.scan_collection, None) ret = p.build_alive_test_opt_as_prefs(target_options_dict) self.assertEqual(ret, alive_test_out)
def test_process_vts_bad_param_id(self): dummy = DummyDaemon() vts = { '1.3.6.1.4.1.25623.1.0.100061': {'3': 'new value'}, 'vt_groups': ['family=debian', 'family=general'], } p_handler = PreferenceHandler( '1234-1234', None, dummy.scan_collection, dummy.nvti ) ret = p_handler._process_vts(vts) # pylint: disable = protected-access self.assertFalse(ret[1])
def test_get_openvas_result_dead_hosts(self, MockDBClass): w = DummyDaemon() target_element = w.create_xml_target() targets = OspRequest.process_target_element(target_element) w.create_scan('123-456', targets, None, []) results = ["DEADHOST||| ||| ||| |||4", None] mock_db = MockDBClass.return_value mock_db.get_result.side_effect = results w.scan_collection.set_amount_dead_hosts = MagicMock() w.report_openvas_results(mock_db, '123-456', 'localhost') w.scan_collection.set_amount_dead_hosts.assert_called_with( '123-456', total_dead=4, )
def test_set_host_options_none(self, mock_kb): w = DummyDaemon() exc = '' fin = [] w.scan_collection.get_exclude_hosts = MagicMock(return_value=exc) w.scan_collection.get_hosts_finished = MagicMock(return_value=fin) p = PreferenceHandler('1234-1234', mock_kb, w.scan_collection, None) p._openvas_scan_id = '456-789' p.kbdb.add_scan_preferences = MagicMock() p.prepare_host_options_for_openvas() p.kbdb.add_scan_preferences.assert_not_called()
def test_get_custom_xml(self): out = ('<custom>' '<required_ports>Services/www, 80</required_ports>' '<category>3</category>' '<excluded_keys>Settings/disable_cgi_scanning</excluded_keys>' '<family>Product detection</family>' '<filename>mantis_detect.nasl</filename>' '<timeout>0</timeout>' '</custom>') w = DummyDaemon() vt = w.VTS['1.3.6.1.4.1.25623.1.0.100061'] res = w.get_custom_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061', vt.get('custom')) self.assertEqual(len(res), len(out))
def test_process_vts_bad_param_id(self): w = DummyDaemon() vts = { '1.3.6.1.4.1.25623.1.0.100061': { '3': 'new value' }, 'vt_groups': ['family=debian', 'family=general'], } p = PreferenceHandler('1234-1234', None, w.scan_collection, w.nvti) ret = p._process_vts(vts) self.assertFalse(ret[1])
def test_get_params_xml_failed(self): w = DummyDaemon() logging.Logger.warning = Mock() params = { '1': { 'id': '1', 'type': 'entry', 'default': u'\u0006', 'name': 'dns-fuzz.timelimit', 'description': 'Description', } } w.get_params_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061', params) assert_called_once(logging.Logger.warning)
def test_result_without_vt_oid(self, mock_add_scan_alarm_to_list, MockDBClass): w = DummyDaemon() logging.Logger.warning = Mock() target_element = w.create_xml_target() targets = OspRequest.process_target_element(target_element) w.create_scan('123-456', targets, None, []) w.scan_collection.scans_table['123-456']['results'] = list() results = ["ALARM||| ||| ||| ||| |||some alarm|||path", None] MockDBClass.get_result.return_value = results mock_add_scan_alarm_to_list.return_value = None w.report_openvas_results(MockDBClass, '123-456') assert_called_once(logging.Logger.warning)
def test_get_severities_xml(self): w = DummyDaemon() out = ('<severities>' '<severity type="cvss_base_v2">' '<value>AV:N/AC:L/Au:N/C:N/I:N/A:N</value>' '<origin>Greenbone</origin>' '<date>1237458156</date>' '</severity>' '</severities>') vt = w.VTS['1.3.6.1.4.1.25623.1.0.100061'] severities = vt.get('severities') res = w.get_severities_vt_as_xml_str('1.3.6.1.4.1.25623.1.0.100061', severities) self.assertEqual(res, out)
def test_build_alive_test_opt(self): w = DummyDaemon() alive_test_out = [ "1.3.6.1.4.1.25623.1.0.100315:1:checkbox:Do a TCP ping|||no", "1.3.6.1.4.1.25623.1.0.100315:2:checkbox:TCP ping tries also TCP-SYN ping|||no", "1.3.6.1.4.1.25623.1.0.100315:7:checkbox:TCP ping tries only TCP-SYN ping|||no", "1.3.6.1.4.1.25623.1.0.100315:3:checkbox:Do an ICMP ping|||yes", "1.3.6.1.4.1.25623.1.0.100315:4:checkbox:Use ARP|||no", "1.3.6.1.4.1.25623.1.0.100315:5:checkbox:Mark unrechable Hosts as dead (not scanning)|||yes", ] target_options_dict = {'alive_test': '2'} p = PreferenceHandler('1234-1234', None, w.scan_collection, None) ret = p.build_alive_test_opt_as_prefs(target_options_dict) self.assertEqual(ret, alive_test_out)
def test_prepare_alive_test_no_enum_no_alive_test(self, mock_kb): w = DummyDaemon() t_opt = {'alive_test_methods': '1', 'icmp': '0'} w.scan_collection.get_target_options = MagicMock(return_value=t_opt) ov_setting = {'some_setting': 1} with patch.object(Openvas, 'get_settings', return_value=ov_setting): p = PreferenceHandler('1234-1234', mock_kb, w.scan_collection, None) p._nvts_params = {} p.scan_id = '456-789' p.kbdb.add_scan_preferences = MagicMock() p.prepare_alive_test_option_for_openvas() p.kbdb.add_scan_preferences.assert_not_called()