forked from p15670423/monkey
UT: Fix new pydantic configuration class names
This commit is contained in:
parent
0d6e3809d7
commit
430885ebd4
|
@ -26,31 +26,31 @@ from tests.common.example_agent_configuration import (
|
||||||
)
|
)
|
||||||
|
|
||||||
from common.agent_configuration import InvalidConfigurationError
|
from common.agent_configuration import InvalidConfigurationError
|
||||||
from common.agent_configuration.agent_configuration import Pydantic___AgentConfiguration
|
from common.agent_configuration.agent_configuration import AgentConfiguration
|
||||||
from common.agent_configuration.agent_sub_configurations import (
|
from common.agent_configuration.agent_sub_configurations import (
|
||||||
Pydantic___CustomPBAConfiguration,
|
CustomPBAConfiguration,
|
||||||
Pydantic___ExploitationConfiguration,
|
ExploitationConfiguration,
|
||||||
Pydantic___ExploitationOptionsConfiguration,
|
ExploitationOptionsConfiguration,
|
||||||
Pydantic___ICMPScanConfiguration,
|
ICMPScanConfiguration,
|
||||||
Pydantic___NetworkScanConfiguration,
|
NetworkScanConfiguration,
|
||||||
Pydantic___PluginConfiguration,
|
PluginConfiguration,
|
||||||
Pydantic___PropagationConfiguration,
|
PropagationConfiguration,
|
||||||
Pydantic___ScanTargetConfiguration,
|
ScanTargetConfiguration,
|
||||||
Pydantic___TCPScanConfiguration,
|
TCPScanConfiguration,
|
||||||
)
|
)
|
||||||
|
|
||||||
INVALID_PORTS = [[-1, 1, 2], [1, 2, 99999]]
|
INVALID_PORTS = [[-1, 1, 2], [1, 2, 99999]]
|
||||||
|
|
||||||
|
|
||||||
def test_build_plugin_configuration():
|
def test_build_plugin_configuration():
|
||||||
config = Pydantic___PluginConfiguration(**PLUGIN_CONFIGURATION)
|
config = PluginConfiguration(**PLUGIN_CONFIGURATION)
|
||||||
|
|
||||||
assert config.name == PLUGIN_NAME
|
assert config.name == PLUGIN_NAME
|
||||||
assert config.options == PLUGIN_OPTIONS
|
assert config.options == PLUGIN_OPTIONS
|
||||||
|
|
||||||
|
|
||||||
def test_custom_pba_configuration_schema():
|
def test_custom_pba_configuration_schema():
|
||||||
config = Pydantic___CustomPBAConfiguration(**CUSTOM_PBA_CONFIGURATION)
|
config = CustomPBAConfiguration(**CUSTOM_PBA_CONFIGURATION)
|
||||||
|
|
||||||
assert config.linux_command == LINUX_COMMAND
|
assert config.linux_command == LINUX_COMMAND
|
||||||
assert config.linux_filename == LINUX_FILENAME
|
assert config.linux_filename == LINUX_FILENAME
|
||||||
|
@ -62,7 +62,7 @@ def test_custom_pba_configuration_schema__empty_filenames_allowed():
|
||||||
empty_filename_configuration = CUSTOM_PBA_CONFIGURATION.copy()
|
empty_filename_configuration = CUSTOM_PBA_CONFIGURATION.copy()
|
||||||
empty_filename_configuration.update({"linux_filename": "", "windows_filename": ""})
|
empty_filename_configuration.update({"linux_filename": "", "windows_filename": ""})
|
||||||
|
|
||||||
config = Pydantic___CustomPBAConfiguration(**empty_filename_configuration)
|
config = CustomPBAConfiguration(**empty_filename_configuration)
|
||||||
|
|
||||||
assert config.linux_command == LINUX_COMMAND
|
assert config.linux_command == LINUX_COMMAND
|
||||||
assert config.linux_filename == ""
|
assert config.linux_filename == ""
|
||||||
|
@ -76,7 +76,7 @@ def test_custom_pba_configuration_schema__invalid_linux_filename(linux_filename)
|
||||||
invalid_filename_configuration["linux_filename"] = linux_filename
|
invalid_filename_configuration["linux_filename"] = linux_filename
|
||||||
|
|
||||||
with pytest.raises(ValidationError):
|
with pytest.raises(ValidationError):
|
||||||
Pydantic___CustomPBAConfiguration(**invalid_filename_configuration)
|
CustomPBAConfiguration(**invalid_filename_configuration)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
|
@ -87,11 +87,11 @@ def test_custom_pba_configuration_schema__invalid_windows_filename(windows_filen
|
||||||
invalid_filename_configuration["windows_filename"] = windows_filename
|
invalid_filename_configuration["windows_filename"] = windows_filename
|
||||||
|
|
||||||
with pytest.raises(ValidationError):
|
with pytest.raises(ValidationError):
|
||||||
Pydantic___CustomPBAConfiguration(**invalid_filename_configuration)
|
CustomPBAConfiguration(**invalid_filename_configuration)
|
||||||
|
|
||||||
|
|
||||||
def test_scan_target_configuration():
|
def test_scan_target_configuration():
|
||||||
config = Pydantic___ScanTargetConfiguration(**SCAN_TARGET_CONFIGURATION)
|
config = ScanTargetConfiguration(**SCAN_TARGET_CONFIGURATION)
|
||||||
|
|
||||||
assert config.blocked_ips == tuple(BLOCKED_IPS)
|
assert config.blocked_ips == tuple(BLOCKED_IPS)
|
||||||
assert config.inaccessible_subnets == tuple(INACCESSIBLE_SUBNETS)
|
assert config.inaccessible_subnets == tuple(INACCESSIBLE_SUBNETS)
|
||||||
|
@ -100,7 +100,7 @@ def test_scan_target_configuration():
|
||||||
|
|
||||||
|
|
||||||
def test_icmp_scan_configuration_schema():
|
def test_icmp_scan_configuration_schema():
|
||||||
config = Pydantic___ICMPScanConfiguration(**ICMP_CONFIGURATION)
|
config = ICMPScanConfiguration(**ICMP_CONFIGURATION)
|
||||||
|
|
||||||
assert config.timeout == TIMEOUT
|
assert config.timeout == TIMEOUT
|
||||||
|
|
||||||
|
@ -110,11 +110,11 @@ def test_icmp_scan_configuration_schema__negative_timeout():
|
||||||
negative_timeout_configuration["timeout"] = -1
|
negative_timeout_configuration["timeout"] = -1
|
||||||
|
|
||||||
with pytest.raises(ValidationError):
|
with pytest.raises(ValidationError):
|
||||||
Pydantic___ICMPScanConfiguration(**negative_timeout_configuration)
|
ICMPScanConfiguration(**negative_timeout_configuration)
|
||||||
|
|
||||||
|
|
||||||
def test_tcp_scan_configuration_schema():
|
def test_tcp_scan_configuration_schema():
|
||||||
config = Pydantic___TCPScanConfiguration(**TCP_SCAN_CONFIGURATION)
|
config = TCPScanConfiguration(**TCP_SCAN_CONFIGURATION)
|
||||||
|
|
||||||
assert config.timeout == TIMEOUT
|
assert config.timeout == TIMEOUT
|
||||||
assert config.ports == tuple(PORTS)
|
assert config.ports == tuple(PORTS)
|
||||||
|
@ -126,7 +126,7 @@ def test_tcp_scan_configuration_schema__ports_out_of_range(ports):
|
||||||
invalid_ports_configuration["ports"] = ports
|
invalid_ports_configuration["ports"] = ports
|
||||||
|
|
||||||
with pytest.raises(ValidationError):
|
with pytest.raises(ValidationError):
|
||||||
Pydantic___TCPScanConfiguration(**invalid_ports_configuration)
|
TCPScanConfiguration(**invalid_ports_configuration)
|
||||||
|
|
||||||
|
|
||||||
def test_tcp_scan_configuration_schema__negative_timeout():
|
def test_tcp_scan_configuration_schema__negative_timeout():
|
||||||
|
@ -134,11 +134,11 @@ def test_tcp_scan_configuration_schema__negative_timeout():
|
||||||
negative_timeout_configuration["timeout"] = -1
|
negative_timeout_configuration["timeout"] = -1
|
||||||
|
|
||||||
with pytest.raises(ValidationError):
|
with pytest.raises(ValidationError):
|
||||||
Pydantic___TCPScanConfiguration(**negative_timeout_configuration)
|
TCPScanConfiguration(**negative_timeout_configuration)
|
||||||
|
|
||||||
|
|
||||||
def test_network_scan_configuration():
|
def test_network_scan_configuration():
|
||||||
config = Pydantic___NetworkScanConfiguration(**NETWORK_SCAN_CONFIGURATION)
|
config = NetworkScanConfiguration(**NETWORK_SCAN_CONFIGURATION)
|
||||||
|
|
||||||
assert config.tcp.ports == tuple(TCP_SCAN_CONFIGURATION["ports"])
|
assert config.tcp.ports == tuple(TCP_SCAN_CONFIGURATION["ports"])
|
||||||
assert config.tcp.timeout == TCP_SCAN_CONFIGURATION["timeout"]
|
assert config.tcp.timeout == TCP_SCAN_CONFIGURATION["timeout"]
|
||||||
|
@ -154,7 +154,7 @@ def test_network_scan_configuration():
|
||||||
def test_exploitation_options_configuration_schema():
|
def test_exploitation_options_configuration_schema():
|
||||||
ports = [1, 2, 3]
|
ports = [1, 2, 3]
|
||||||
|
|
||||||
config = Pydantic___ExploitationOptionsConfiguration(**{"http_ports": ports})
|
config = ExploitationOptionsConfiguration(**{"http_ports": ports})
|
||||||
|
|
||||||
assert config.http_ports == tuple(ports)
|
assert config.http_ports == tuple(ports)
|
||||||
|
|
||||||
|
@ -164,34 +164,34 @@ def test_exploitation_options_configuration_schema__ports_out_of_range(ports):
|
||||||
invalid_ports_configuration = {"http_ports": ports}
|
invalid_ports_configuration = {"http_ports": ports}
|
||||||
|
|
||||||
with pytest.raises(ValidationError):
|
with pytest.raises(ValidationError):
|
||||||
Pydantic___ExploitationOptionsConfiguration(**invalid_ports_configuration)
|
ExploitationOptionsConfiguration(**invalid_ports_configuration)
|
||||||
|
|
||||||
|
|
||||||
def test_exploiter_configuration_schema():
|
def test_exploiter_configuration_schema():
|
||||||
name = "bond"
|
name = "bond"
|
||||||
options = {"gun": "Walther PPK", "car": "Aston Martin DB5"}
|
options = {"gun": "Walther PPK", "car": "Aston Martin DB5"}
|
||||||
|
|
||||||
config = Pydantic___PluginConfiguration(**{"name": name, "options": options})
|
config = PluginConfiguration(**{"name": name, "options": options})
|
||||||
|
|
||||||
assert config.name == name
|
assert config.name == name
|
||||||
assert config.options == options
|
assert config.options == options
|
||||||
|
|
||||||
|
|
||||||
def test_exploitation_configuration():
|
def test_exploitation_configuration():
|
||||||
config = Pydantic___ExploitationConfiguration(**EXPLOITATION_CONFIGURATION)
|
config = ExploitationConfiguration(**EXPLOITATION_CONFIGURATION)
|
||||||
config_dict = config.dict()
|
config_dict = config.dict()
|
||||||
|
|
||||||
assert isinstance(config, Pydantic___ExploitationConfiguration)
|
assert isinstance(config, ExploitationConfiguration)
|
||||||
assert config_dict == EXPLOITATION_CONFIGURATION
|
assert config_dict == EXPLOITATION_CONFIGURATION
|
||||||
|
|
||||||
|
|
||||||
def test_propagation_configuration():
|
def test_propagation_configuration():
|
||||||
config = Pydantic___PropagationConfiguration(**PROPAGATION_CONFIGURATION)
|
config = PropagationConfiguration(**PROPAGATION_CONFIGURATION)
|
||||||
config_dict = config.dict()
|
config_dict = config.dict()
|
||||||
|
|
||||||
assert isinstance(config, Pydantic___PropagationConfiguration)
|
assert isinstance(config, PropagationConfiguration)
|
||||||
assert isinstance(config.network_scan, Pydantic___NetworkScanConfiguration)
|
assert isinstance(config.network_scan, NetworkScanConfiguration)
|
||||||
assert isinstance(config.exploitation, Pydantic___ExploitationConfiguration)
|
assert isinstance(config.exploitation, ExploitationConfiguration)
|
||||||
assert config.maximum_depth == 5
|
assert config.maximum_depth == 5
|
||||||
assert config_dict == PROPAGATION_CONFIGURATION
|
assert config_dict == PROPAGATION_CONFIGURATION
|
||||||
|
|
||||||
|
@ -201,20 +201,20 @@ def test_propagation_configuration__invalid_maximum_depth():
|
||||||
negative_maximum_depth_configuration["maximum_depth"] = -1
|
negative_maximum_depth_configuration["maximum_depth"] = -1
|
||||||
|
|
||||||
with pytest.raises(ValidationError):
|
with pytest.raises(ValidationError):
|
||||||
Pydantic___PropagationConfiguration(**negative_maximum_depth_configuration)
|
PropagationConfiguration(**negative_maximum_depth_configuration)
|
||||||
|
|
||||||
|
|
||||||
def test_agent_configuration():
|
def test_agent_configuration():
|
||||||
config = Pydantic___AgentConfiguration(**AGENT_CONFIGURATION)
|
config = AgentConfiguration(**AGENT_CONFIGURATION)
|
||||||
config_dict = config.dict()
|
config_dict = config.dict()
|
||||||
|
|
||||||
assert isinstance(config, Pydantic___AgentConfiguration)
|
assert isinstance(config, AgentConfiguration)
|
||||||
assert config.keep_tunnel_open_time == 30
|
assert config.keep_tunnel_open_time == 30
|
||||||
assert isinstance(config.custom_pbas, Pydantic___CustomPBAConfiguration)
|
assert isinstance(config.custom_pbas, CustomPBAConfiguration)
|
||||||
assert isinstance(config.post_breach_actions[0], Pydantic___PluginConfiguration)
|
assert isinstance(config.post_breach_actions[0], PluginConfiguration)
|
||||||
assert isinstance(config.credential_collectors[0], Pydantic___PluginConfiguration)
|
assert isinstance(config.credential_collectors[0], PluginConfiguration)
|
||||||
assert isinstance(config.payloads[0], Pydantic___PluginConfiguration)
|
assert isinstance(config.payloads[0], PluginConfiguration)
|
||||||
assert isinstance(config.propagation, Pydantic___PropagationConfiguration)
|
assert isinstance(config.propagation, PropagationConfiguration)
|
||||||
assert config_dict == AGENT_CONFIGURATION
|
assert config_dict == AGENT_CONFIGURATION
|
||||||
|
|
||||||
|
|
||||||
|
@ -223,12 +223,12 @@ def test_agent_configuration__negative_keep_tunnel_open_time():
|
||||||
negative_keep_tunnel_open_time_configuration["keep_tunnel_open_time"] = -1
|
negative_keep_tunnel_open_time_configuration["keep_tunnel_open_time"] = -1
|
||||||
|
|
||||||
with pytest.raises(InvalidConfigurationError):
|
with pytest.raises(InvalidConfigurationError):
|
||||||
Pydantic___AgentConfiguration(**negative_keep_tunnel_open_time_configuration)
|
AgentConfiguration(**negative_keep_tunnel_open_time_configuration)
|
||||||
|
|
||||||
|
|
||||||
def test_incorrect_type():
|
def test_incorrect_type():
|
||||||
valid_config = Pydantic___AgentConfiguration(**AGENT_CONFIGURATION)
|
valid_config = AgentConfiguration(**AGENT_CONFIGURATION)
|
||||||
with pytest.raises(InvalidConfigurationError):
|
with pytest.raises(InvalidConfigurationError):
|
||||||
valid_config_dict = valid_config.__dict__
|
valid_config_dict = valid_config.__dict__
|
||||||
valid_config_dict["keep_tunnel_open_time"] = "not_a_float"
|
valid_config_dict["keep_tunnel_open_time"] = "not_a_float"
|
||||||
Pydantic___AgentConfiguration(**valid_config_dict)
|
AgentConfiguration(**valid_config_dict)
|
||||||
|
|
Loading…
Reference in New Issue