Merge pull request #2127 from guardicore/2004-exploitation-options-configuration-validation

ExploitationOptionsConfiguration docstring + validation
This commit is contained in:
Mike Salvatore 2022-07-27 08:53:47 -04:00 committed by GitHub
commit e7b806c288
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 2 deletions

View File

@ -115,7 +115,7 @@ class NetworkScanConfigurationSchema(Schema):
class ExploitationOptionsConfigurationSchema(Schema):
http_ports = fields.List(fields.Int())
http_ports = fields.List(fields.Int(validate=validate.Range(min=0, max=65535)))
@post_load
@freeze_lists

View File

@ -106,6 +106,13 @@ class NetworkScanConfiguration:
@dataclass(frozen=True)
class ExploitationOptionsConfiguration:
"""
A configuration for exploitation options
Attributes:
:param http_ports: HTTP ports to exploit
"""
http_ports: Tuple[int, ...]

View File

@ -48,6 +48,8 @@ from common.agent_configuration.agent_sub_configurations import (
PropagationConfiguration,
)
INVALID_PORTS = [[-1, 1, 2], [1, 2, 99999]]
def test_build_plugin_configuration():
schema = PluginConfigurationSchema()
@ -145,7 +147,7 @@ def test_tcp_scan_configuration_schema():
assert config.ports == tuple(PORTS)
@pytest.mark.parametrize("ports", [[-1, 1, 2], [1, 2, 99999]])
@pytest.mark.parametrize("ports", INVALID_PORTS)
def test_tcp_scan_configuration_schema__ports_out_of_range(ports):
schema = TCPScanConfigurationSchema()
@ -191,6 +193,16 @@ def test_exploitation_options_configuration_schema():
assert config.http_ports == tuple(ports)
@pytest.mark.parametrize("ports", INVALID_PORTS)
def test_exploitation_options_configuration_schema__ports_out_of_range(ports):
schema = ExploitationOptionsConfigurationSchema()
invalid_ports_configuration = {"http_ports": ports}
with pytest.raises(ValidationError):
schema.load(invalid_ports_configuration)
def test_exploiter_configuration_schema():
name = "bond"
options = {"gun": "Walther PPK", "car": "Aston Martin DB5"}