def test_failed_get_item_agent(mock_agent_info, select, valid_select_fields, sort, allowed_sort_fields, expected_exception): """ Tests get_item_agent method handle exceptions properly """ with pytest.raises(WazuhException, match=f'.* {expected_exception} .*'): syscollector.get_item_agent(agent_id='001', offset=0, limit=500, select=select, search={}, sort=sort, filters={}, allowed_sort_fields=allowed_sort_fields, valid_select_fields=valid_select_fields, table='sys_osinfo', nested=False)
def test_agent_elements(mock_agent_attr, mock_basic_info, mock_agents_info, element_type): """Tests every possible type of agent element Iterate over each element type, call the get_item_agent function with that parameter and verify that the response obtained contains all the expected fields (found in core.get_valid_fields ()). Parameters ---------- element_type : string Type of element to get syscollector information from """ def valid_fields_asserter(rendered_result): """Check that all expected keys and subkeys are in the result.""" fields = get_valid_fields(Type(element_type))[1] for field in fields.keys(): if field.__contains__('.'): key, subkey = field.split('.') results_subdict = rendered_result['data']['affected_items'][0][key] assert subkey in results_subdict.keys(), f'Subkey "{subkey}" not found in result' else: assert field in rendered_result['data']['affected_items'][0].keys(), f'Key "{field}" not found in result' with patch('wazuh.core.utils.WazuhDBConnection') as mock_wdb: mock_wdb.return_value = InitWDBSocketMock(sql_schema_file='schema_syscollector_000.sql') results = syscollector.get_item_agent(agent_list=['000'], element_type=element_type) assert isinstance(results, AffectedItemsWazuhResult) valid_fields_asserter(results.render())
def test_get_item_agent(mock_agent_attr, mock_basic_info, mock_agents_info, select, search): """Test get_item_agent method. Verify that the get_item method returns an appropriate and expected result after searching in the database. Parameters ---------- select : list Fields to be returned when searching in DB search : dict Looks for items with the specified string in DB. """ with patch('wazuh.core.utils.WazuhDBConnection') as mock_wdb: mock_wdb.return_value = InitWDBSocketMock( sql_schema_file='schema_syscollector_000.sql') results = syscollector.get_item_agent(agent_list=['000'], offset=0, select=select, search=search) assert isinstance(results, AffectedItemsWazuhResult) assert results.render( )['data']['failed_items'] == [], 'No failed_items should be returned' for result in results.render()['data']['affected_items']: if select: assert len(result.keys()) == len( select ) + 1, f'"Select" not returning {len(select)} +1 elements.' if search: assert search['value'] in result['os'][ 'name'], f'{search["value"]} not in result.'
def get_results_agent(agent_id, offset=0, limit=common.database_limit, select={}, search={}, sort={}, filters={}, nested=True, array=True): offset = int(offset) limit = int(limit) valid_select_fields = { 'scan_id', 'scan_time', 'benchmark', 'profile', 'pass', 'fail', 'error', 'notchecked', 'unknown', 'score' } table = 'ciscat_results' return get_item_agent(agent_id=agent_id, offset=offset, limit=limit, select=select, search=search, sort=sort, filters=filters, allowed_sort_fields=valid_select_fields, valid_select_fields=valid_select_fields, table=table, nested=nested, array=array)
def test_get_item_agent(mock_agent_info, select, valid_select_fields, search, array, response, total): """ Tests get_item_agent method """ with patch ("wazuh.syscollector.Agent._load_info_from_agent_db", return_value=[response, total]): results = syscollector.get_item_agent(agent_id='001', offset=0, limit=None, select=select, search=search, sort={}, filters={}, allowed_sort_fields={}, valid_select_fields=valid_select_fields, table='sys_osinfo', nested=False, array=array) assert isinstance(results, dict)
def test_failed_get_item_agent(mock_agent_attr, mock_basic_info, mock_agents_info, agent_list, expected_exception): """Test if get_item_agent method handle exceptions properly. Parameters ---------- agent_list : list List of agents IDs to search expected_exception : int Expected error code when triggering the exception. """ with patch('wazuh.core.utils.WazuhDBConnection') as mock_wdb: mock_wdb.return_value = InitWDBSocketMock(sql_schema_file='schema_syscollector_000.sql') results = syscollector.get_item_agent(agent_list=agent_list, offset=0, limit=500, nested=False) assert expected_exception == results.render()['data']['failed_items'][0]['error']['code'], \ 'Error code not expected'
def test_get_item_agent(mock_socket_connect, mock_agent_info, select, valid_select_fields, search, array, response, total): """Test get_item_agent method.""" with patch("wazuh.syscheck.WazuhDBBackend.execute", return_value=[response, total]): results = syscollector.get_item_agent( agent_id='001', offset=0, limit=None, select=select, search=search, sort={}, filters={}, query='', valid_select_fields=valid_select_fields, table='sys_osinfo', nested=False, array=array) if array or not response: assert isinstance(results, dict) else: assert isinstance(results, list)