Example #1
0
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)
Example #2
0
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())
Example #3
0
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.'
Example #4
0
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)
Example #5
0
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)
Example #6
0
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'
Example #7
0
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)