-
Notifications
You must be signed in to change notification settings - Fork 32
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch '4495-dtt1-release' into enhancement/5229-macOS-tests-added
- Loading branch information
Showing
12 changed files
with
299 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
84 changes: 84 additions & 0 deletions
84
deployability/modules/testing/tests/test_agent/test_basic_info.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
# Copyright (C) 2015, Wazuh Inc. | ||
# Created by Wazuh, Inc. <[email protected]>. | ||
# This program is a free software; you can redistribute it and/or modify it under the terms of GPLv2 | ||
|
||
import pytest | ||
import re | ||
|
||
from ..helpers.agent import WazuhAgent, WazuhAPI | ||
from ..helpers.constants import WAZUH_ROOT | ||
from ..helpers.generic import HostConfiguration, HostInformation, GeneralComponentActions, Waits | ||
from modules.testing.utils import logger | ||
from ..helpers.manager import WazuhManager | ||
from ..helpers.utils import Utils | ||
|
||
|
||
@pytest.fixture(scope="module", autouse=True) | ||
def wazuh_params(request): | ||
wazuh_version = request.config.getoption('--wazuh_version') | ||
wazuh_revision = request.config.getoption('--wazuh_revision') | ||
dependencies = request.config.getoption('--dependencies') | ||
targets = request.config.getoption('--targets') | ||
live = request.config.getoption('--live') | ||
|
||
return { | ||
'wazuh_version': wazuh_version, | ||
'wazuh_revision': wazuh_revision, | ||
'dependencies': dependencies, | ||
'targets': targets, | ||
'live': live | ||
} | ||
|
||
|
||
@pytest.fixture(scope="module", autouse=True) | ||
def setup_test_environment(wazuh_params): | ||
targets = wazuh_params['targets'] | ||
# Clean the string and split it into key-value pairs | ||
targets = targets.replace(' ', '') | ||
targets = targets.replace(' ', '') | ||
pairs = [pair.strip() for pair in targets.strip('{}').split(',')] | ||
targets_dict = dict(pair.split(':') for pair in pairs) | ||
|
||
wazuh_params['master'] = targets_dict.get('wazuh-1') | ||
wazuh_params['workers'] = [value for key, value in targets_dict.items() if key.startswith('wazuh-') and key != 'wazuh-1'] | ||
wazuh_params['agents'] = [value for key, value in targets_dict.items() if key.startswith('agent')] | ||
wazuh_params['indexers'] = [value for key, value in targets_dict.items() if key.startswith('node-')] | ||
wazuh_params['dashboard'] = targets_dict.get('dashboard', wazuh_params['master']) | ||
|
||
# If there are no indexers, we choose wazuh-1 by default | ||
if not wazuh_params['indexers']: | ||
wazuh_params['indexers'].append(wazuh_params['master']) | ||
wazuh_params['managers'] = {key: value for key, value in targets_dict.items() if key.startswith('wazuh-')} | ||
wazuh_params['agents'] = {key + '-' + re.findall(r'agent-(.*?)/', value)[0].replace('.',''): value for key, value in targets_dict.items() if key.startswith('agent')} | ||
|
||
updated_agents = {} | ||
for agent_name, agent_params in wazuh_params['agents'].items(): | ||
Utils.check_inventory_connection(agent_params) | ||
if GeneralComponentActions.isComponentActive(agent_params, 'wazuh-agent') and GeneralComponentActions.hasAgentClientKeys(agent_params): | ||
if HostInformation.get_client_keys(agent_params) != []: | ||
client_name = HostInformation.get_client_keys(agent_params)[0]['name'] | ||
updated_agents[client_name] = agent_params | ||
else: | ||
updated_agents[agent_name] = agent_params | ||
if updated_agents != {}: | ||
wazuh_params['agents'] = updated_agents | ||
|
||
|
||
def test_wazuh_os_version(wazuh_params): | ||
wazuh_api = WazuhAPI(wazuh_params['master']) | ||
for agent_names, agent_params in wazuh_params['agents'].items(): | ||
assert HostInformation.dir_exists(agent_params, WAZUH_ROOT), logger.error(f'The {WAZUH_ROOT} is not present in {HostInformation.get_os_name_and_version_from_inventory(agent_params)}') | ||
expected_condition_func = lambda: 'active' == WazuhAgent.get_agent_status(wazuh_api, agent_names) | ||
Waits.dynamic_wait(expected_condition_func, cycles=20, waiting_time=30) | ||
assert HostInformation.get_os_version_from_inventory(agent_params) in WazuhAgent.get_agent_os_version_by_name(wazuh_api, agent_names), logger.error('There is a mismatch between the OS version and the OS version of the installed agent') | ||
assert HostInformation.get_os_name_from_inventory(agent_params) in WazuhAgent.get_agent_os_name_by_name(wazuh_api, agent_names).replace(' ', ''), logger.error('There is a mismatch between the OS name and the OS name of the installed agent') | ||
|
||
|
||
def test_wazuh_version(wazuh_params): | ||
for agent_names, agent_params in wazuh_params['agents'].items(): | ||
assert wazuh_params['wazuh_version'] in GeneralComponentActions.get_component_version(agent_params), logger.error(f"The version {HostInformation.get_os_name_and_version_from_inventory(agent_params)} is not {wazuh_params['wazuh_version']} by command") | ||
|
||
|
||
def test_wazuh_revision(wazuh_params): | ||
for agent_names, agent_params in wazuh_params['agents'].items(): | ||
assert wazuh_params['wazuh_revision'] in GeneralComponentActions.get_component_revision(agent_params), logger.error(f"The revision {HostInformation.get_os_name_and_version_from_inventory(agent_params)} is not {wazuh_params['wazuh_revision']} by command") |
100 changes: 100 additions & 0 deletions
100
deployability/modules/testing/tests/test_agent/test_connection.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
# Copyright (C) 2015, Wazuh Inc. | ||
# Created by Wazuh, Inc. <[email protected]>. | ||
# This program is a free software; you can redistribute it and/or modify it under the terms of GPLv2 | ||
|
||
import pytest | ||
import re | ||
|
||
from ..helpers.agent import WazuhAgent, WazuhAPI | ||
from ..helpers.generic import HostInformation, GeneralComponentActions, Waits | ||
from ..helpers.manager import WazuhManager, WazuhAPI | ||
from modules.testing.utils import logger | ||
from ..helpers.utils import Utils | ||
|
||
|
||
@pytest.fixture(scope="module", autouse=True) | ||
def wazuh_params(request): | ||
wazuh_version = request.config.getoption('--wazuh_version') | ||
wazuh_revision = request.config.getoption('--wazuh_revision') | ||
dependencies = request.config.getoption('--dependencies') | ||
targets = request.config.getoption('--targets') | ||
live = request.config.getoption('--live') | ||
|
||
return { | ||
'wazuh_version': wazuh_version, | ||
'wazuh_revision': wazuh_revision, | ||
'dependencies': dependencies, | ||
'targets': targets, | ||
'live': live | ||
} | ||
|
||
|
||
@pytest.fixture(scope="module", autouse=True) | ||
def setup_test_environment(wazuh_params): | ||
targets = wazuh_params['targets'] | ||
# Clean the string and split it into key-value pairs | ||
targets = targets.replace(' ', '') | ||
targets = targets.replace(' ', '') | ||
pairs = [pair.strip() for pair in targets.strip('{}').split(',')] | ||
targets_dict = dict(pair.split(':') for pair in pairs) | ||
|
||
wazuh_params['master'] = targets_dict.get('wazuh-1') | ||
wazuh_params['workers'] = [value for key, value in targets_dict.items() if key.startswith('wazuh-') and key != 'wazuh-1'] | ||
wazuh_params['agents'] = [value for key, value in targets_dict.items() if key.startswith('agent')] | ||
wazuh_params['indexers'] = [value for key, value in targets_dict.items() if key.startswith('node-')] | ||
wazuh_params['dashboard'] = targets_dict.get('dashboard', wazuh_params['master']) | ||
|
||
# If there are no indexers, we choose wazuh-1 by default | ||
if not wazuh_params['indexers']: | ||
wazuh_params['indexers'].append(wazuh_params['master']) | ||
wazuh_params['managers'] = {key: value for key, value in targets_dict.items() if key.startswith('wazuh-')} | ||
wazuh_params['agents'] = {key + '-' + re.findall(r'agent-(.*?)/', value)[0].replace('.',''): value for key, value in targets_dict.items() if key.startswith('agent')} | ||
|
||
updated_agents = {} | ||
for agent_name, agent_params in wazuh_params['agents'].items(): | ||
Utils.check_inventory_connection(agent_params) | ||
if GeneralComponentActions.isComponentActive(agent_params, 'wazuh-agent') and GeneralComponentActions.hasAgentClientKeys(agent_params): | ||
if HostInformation.get_client_keys(agent_params) != []: | ||
client_name = HostInformation.get_client_keys(agent_params)[0]['name'] | ||
updated_agents[client_name] = agent_params | ||
else: | ||
updated_agents[agent_name] = agent_params | ||
if updated_agents != {}: | ||
wazuh_params['agents'] = updated_agents | ||
|
||
|
||
def test_connection(wazuh_params): | ||
for agent_names, agent_params in wazuh_params['agents'].items(): | ||
WazuhAgent.set_protocol_agent_connection(agent_params, 'tcp') | ||
assert agent_names in WazuhManager.get_agent_control_info(wazuh_params['master']), f'The {agent_names} is not present in the master by command' | ||
wazuh_api = WazuhAPI(wazuh_params['master']) | ||
assert any(d.get('name') == agent_names for d in WazuhAgent.get_agents_information(wazuh_api)), logger.error(f'The {agent_names} is not present in the master by API') | ||
|
||
|
||
def test_status(wazuh_params): | ||
for agent in wazuh_params['agents'].values(): | ||
assert 'active' in GeneralComponentActions.get_component_status(agent, 'wazuh-agent'), logger.error(f'The {HostInformation.get_os_name_and_version_from_inventory(agent)} is not active') | ||
|
||
|
||
def test_service(wazuh_params): | ||
wazuh_api = WazuhAPI(wazuh_params['master']) | ||
for agent_names, agent_params in wazuh_params['agents'].items(): | ||
assert GeneralComponentActions.isComponentActive(agent_params, 'wazuh-agent'), logger.error(f'{agent_names} is not active by API') | ||
|
||
expected_condition_func = lambda: 'active' == WazuhAgent.get_agent_status(wazuh_api, agent_names) | ||
Waits.dynamic_wait(expected_condition_func, cycles=20, waiting_time=30) | ||
|
||
|
||
def test_clientKeys(wazuh_params): | ||
for agent_names, agent_params in wazuh_params['agents'].items(): | ||
assert GeneralComponentActions.hasAgentClientKeys(agent_params), logger.error(f'{agent_names} has not ClientKeys file') | ||
|
||
|
||
def test_port(wazuh_params): | ||
for agent_names, agent_params in wazuh_params['agents'].items(): | ||
assert WazuhAgent.isAgent_port_open(agent_params), logger.error('Port is closed') | ||
|
||
|
||
def test_processes(wazuh_params): | ||
for agent_names, agent_params in wazuh_params['agents'].items(): | ||
assert WazuhAgent.areAgent_processes_active(agent_params), logger.error('Agent processes are not active') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.