def configure_api_environment(get_configuration, request): """Configure a custom environment for API testing. Restart API is needed for applying the configuration.""" # Save current configuration backup_config = get_api_conf(WAZUH_API_CONF) # Save current security config backup_security_config = get_api_conf( WAZUH_SECURITY_CONF) if os.path.exists(WAZUH_SECURITY_CONF) else None # Set new configuration api_config = get_configuration.get('configuration', None) if api_config: write_api_conf(WAZUH_API_CONF, api_config) # Set security configuration security_config = get_configuration.get('security_config', None) if security_config: write_security_conf(WAZUH_SECURITY_CONF, security_config) # Create test directories if hasattr(request.module, 'test_directories'): test_directories = getattr(request.module, 'test_directories') for test_dir in test_directories: oldmask = os.umask(0000) os.makedirs(test_dir, exist_ok=True, mode=0O777) os.umask(oldmask) # Call extra functions before yield if hasattr(request.module, 'extra_configuration_before_yield'): func = getattr(request.module, 'extra_configuration_before_yield') func() yield # Remove created folders (parents) if hasattr(request.module, 'test_directories'): for test_dir in test_directories: shutil.rmtree(test_dir, ignore_errors=True) # Restore previous configuration if backup_config: write_api_conf(WAZUH_API_CONF, backup_config) # Restore previous RBAC configuration if backup_security_config: write_security_conf(WAZUH_SECURITY_CONF, backup_security_config) elif security_config and not backup_security_config: os.remove(WAZUH_SECURITY_CONF) # Call extra functions after yield if hasattr(request.module, 'extra_configuration_after_yield'): func = getattr(request.module, 'extra_configuration_after_yield') func() if hasattr(request.module, 'force_restart_after_restoring'): if getattr(request.module, 'force_restart_after_restoring'): subprocess.call( [os.path.join(WAZUH_PATH, 'bin', 'wazuh-apid'), 'restart'])
import pytest import requests from wazuh_testing.tools.configuration import check_apply_test, get_api_conf from wazuh_testing.tools.services import control_service # Marks pytestmark = pytest.mark.server # Configurations test_data_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'data') configurations_path = os.path.join(test_data_path, 'conf.yaml') configuration = get_api_conf(configurations_path) # Fixtures @pytest.fixture(scope='module', params=configuration) def get_configuration(request): """Get configurations from the module.""" return request.param # Functions def extra_configuration_before_yield(): control_service('stop', daemon='wazuh-authd')