def test_get_sca_list(mock_agent, mock_sca_agent): """ Checks data are properly loaded from database """ with patch('wazuh.core.utils.WazuhDBConnection') as mock_wdb: mock_wdb.return_value = InitWDBSocketMock( sql_schema_file='schema_sca_test.sql') result = get_sca_list(agent_list=['000']) assert isinstance(result, AffectedItemsWazuhResult) result = result.to_dict() assert isinstance(result['total_affected_items'], int) assert len(result['affected_items']) > 0 sca = result['affected_items'][0] assert isinstance(sca, dict) assert set(sca.keys()) == set(cols_returned_from_db_sca) result = get_sca_list(agent_list=['999']) assert isinstance(result, AffectedItemsWazuhResult) result = result.to_dict() assert isinstance(result['total_affected_items'], int) assert result['total_affected_items'] == 0 assert len(result['affected_items']) == 0 assert result['total_failed_items'] == 1 assert len(result['failed_items']) == 1 failed = result['failed_items'] assert isinstance(list(failed.keys())[0], WazuhResourceNotFound) assert list(failed.keys())[0].to_dict()['code'] == 1701 assert failed[list(failed.keys())[0]] == {'999'}
def test_get_sca_list_search_param(mock_agent, mock_sca_agent): """ Checks only selected fields are loaded from database """ with patch('wazuh.core.utils.WazuhDBConnection') as mock_wdb: mock_wdb.return_value = InitWDBSocketMock( sql_schema_file='schema_sca_test.sql') search = {'value': 'debian', 'negation': False} result = get_sca_list(agent_list=['000'], search=search) assert isinstance(result, AffectedItemsWazuhResult) result = result.to_dict() assert isinstance(result['total_affected_items'], int) assert len(result['affected_items']) > 0 search = {'value': 'foo', 'negation': False} result = get_sca_list(agent_list=['000'], search=search) assert isinstance(result, AffectedItemsWazuhResult) result = result.to_dict() assert isinstance(result['total_affected_items'], int) assert len(result['affected_items']) == 0 search = {'value': 'foo', 'negation': True} result = get_sca_list(agent_list=['000'], search=search) assert isinstance(result, AffectedItemsWazuhResult) result = result.to_dict() assert isinstance(result['total_affected_items'], int) assert len(result['affected_items']) > 0
def test_sca_failed_limit(mock_agent, mock_sca_agent): """ Test failing using not correct limits """ with patch('wazuh.core.sca.WazuhDBBackend') as mock_wdb: mock_wdb.return_value.connect_to_db.return_value.execute.side_effect = get_fake_sca_data with pytest.raises(exception.WazuhException, match=".* 1405 .*"): get_sca_list(agent_list=['000'], limit=common.maximum_database_limit + 1) with pytest.raises(exception.WazuhException, match=".* 1406 .*"): get_sca_list(agent_list=['000'], limit=0)
def test_get_sca_list_select_param(mock_agent, mock_sca_agent): """ Checks only selected fields are loaded from database """ with patch('wazuh.core.utils.WazuhDBConnection') as mock_wdb: mock_wdb.return_value = InitWDBSocketMock( sql_schema_file='schema_sca_test.sql') fields = ['name', 'policy_id'] result = get_sca_list(agent_list=['000'], select=fields) assert isinstance(result, AffectedItemsWazuhResult) result = result.to_dict() assert isinstance(result['total_affected_items'], int) assert len(result['affected_items']) > 0 sca = result['affected_items'][0] assert isinstance(sca, dict) assert set(sca.keys()) == set(fields)