From 724586c60c442f0fc0acbdcdb657289992fd9c8d Mon Sep 17 00:00:00 2001 From: Thorsten Sick Date: Thu, 11 Nov 2021 08:52:19 +0100 Subject: [PATCH] All auto tests work. Integration tests not yet run ! --- app/config_verifier.py | 4 +- tests/test_config.py | 492 +++++++++++++++++------------------ tests/test_machinecontrol.py | 220 ++++++++-------- tox.ini | 3 +- 4 files changed, 360 insertions(+), 359 deletions(-) diff --git a/app/config_verifier.py b/app/config_verifier.py index 60622a6..46d731c 100644 --- a/app/config_verifier.py +++ b/app/config_verifier.py @@ -4,7 +4,7 @@ from pydantic.dataclasses import dataclass from pydantic import conlist -from typing import Literal, Optional, TypedDict, Union +from typing import Optional from enum import Enum @@ -140,4 +140,4 @@ class MainConfig: return False -# TODO: Check for name duplication \ No newline at end of file +# TODO: Check for name duplication diff --git a/tests/test_config.py b/tests/test_config.py index 0c52171..f1cd69f 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -23,316 +23,316 @@ class TestMachineConfig(unittest.TestCase): def test_basic_init(self): """ The init is basic and working """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1"})) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1"})) self.assertEqual(mc.raw_config["root"], "systems/attacker1") self.assertEqual(mc.raw_config.vm_controller.vm_type, "vagrant") def test_use_existing_machine_is_true(self): """ Testing use_existing:machine setting """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1", - "use_existing_machine": True})) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1", + "use_existing_machine": True})) self.assertEqual(mc.use_existing_machine(), True) def test_use_existing_machine_is_false(self): """ Testing use_existing:machine setting """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1", - "use_existing_machine": False})) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1", + "use_existing_machine": False})) self.assertEqual(mc.use_existing_machine(), False) def test_use_existing_machine_is_default(self): """ Testing use_existing:machine setting """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1"})) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1"})) self.assertEqual(mc.use_existing_machine(), False) def test_windows_is_valid_os(self): """ Testing if windows is valid os """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "windows", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1"})) + "os": "windows", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1"})) self.assertEqual(mc.os(), "windows") def test_windows_is_valid_os_casefix(self): """ Testing if windows is valid os - using lowercase fix""" mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "WINDOWS", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1"})) + "os": "WINDOWS", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1"})) self.assertEqual(mc.os(), "windows") def test_linux_is_valid_os(self): """ Testing if windows is valid os """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1"})) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1"})) self.assertEqual(mc.os(), "linux") def test_vagrant_is_valid_vmcontroller(self): """ Testing if vagrant is valid vmcontroller """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1"})) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1"})) self.assertEqual(mc.vmcontroller(), "vagrant") def test_vagrant_is_valid_vmcontroller_casefix(self): """ Testing if vagrant is valid vmcontroller case fixxed""" mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "VAGRANT", - "vagrantfilepath": "systems", - }, - "vm_name": "target1"})) + "os": "linux", + "vm_controller": { + "vm_type": "VAGRANT", + "vagrantfilepath": "systems", + }, + "vm_name": "target1"})) self.assertEqual(mc.vmcontroller(), "vagrant") def test_vagrant_is_valid_vmip(self): """ Testing if vagrant is valid ip/url """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "ip": "kali", - "vagrantfilepath": "systems", - }, - "vm_name": "target1"})) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "ip": "kali", + "vagrantfilepath": "systems", + }, + "vm_name": "target1"})) self.assertEqual(mc.vm_ip(), "kali") def test_missing_vmip(self): """ Testing if missing vm ip is handled""" vm_name = "target1" mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": vm_name})) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": vm_name})) self.assertEqual(mc.vm_ip(), vm_name) def test_machinepath(self): """ Testing machinepath setting """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1", - "use_existing_machine": False, - "machinepath": "foo"})) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1", + "use_existing_machine": False, + "machinepath": "foo"})) self.assertEqual(mc.machinepath(), "foo") def test_machinepath_fallback(self): """ Testing machinepath setting fallback to vmname""" mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1", - "use_existing_machine": False})) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1", + "use_existing_machine": False})) self.assertEqual(mc.machinepath(), "target1") def test_paw(self): """ Testing for caldera paw """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "paw": "Bar", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1", - "use_existing_machine": False})) + "os": "linux", + "paw": "Bar", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1", + "use_existing_machine": False})) self.assertEqual(mc.caldera_paw(), "Bar") def test_paw_fallback(self): """ Testing for caldera paw fallback """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1", - "use_existing_machine": False})) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1", + "use_existing_machine": False})) self.assertEqual(mc.caldera_paw(), None) def test_group(self): """ Testing for caldera group """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "group": "Bar", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1", - "use_existing_machine": False})) + "os": "linux", + "group": "Bar", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1", + "use_existing_machine": False})) self.assertEqual(mc.caldera_group(), "Bar") def test_group_fallback(self): """ Testing for caldera group fallback """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1", - "use_existing_machine": False})) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1", + "use_existing_machine": False})) self.assertEqual(mc.caldera_group(), None) def test_ssh_keyfile(self): """ Testing keyfile config """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "ssh_keyfile": "Bar", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1", - "use_existing_machine": False})) + "os": "linux", + "ssh_keyfile": "Bar", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1", + "use_existing_machine": False})) self.assertEqual(mc.ssh_keyfile(), "Bar") def test_ssh_keyfile_default(self): """ Testing keyfile config default """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1", - "use_existing_machine": False})) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1", + "use_existing_machine": False})) self.assertEqual(mc.ssh_keyfile(), None) def test_ssh_user(self): """ Testing ssh user config """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "ssh_user": "Bob", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1", - "use_existing_machine": False})) + "os": "linux", + "ssh_user": "Bob", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1", + "use_existing_machine": False})) self.assertEqual(mc.ssh_user(), "Bob") def test_ssh_user_default(self): """ Testing ssh user default config """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1", - "use_existing_machine": False})) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1", + "use_existing_machine": False})) self.assertEqual(mc.ssh_user(), "vagrant") def test_ssh_password(self): """ Testing ssh password config """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "ssh_user": "Bob", - "ssh_password": "Ross", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1", - "use_existing_machine": False})) + "os": "linux", + "ssh_user": "Bob", + "ssh_password": "Ross", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1", + "use_existing_machine": False})) self.assertEqual(mc.ssh_password(), "Ross") def test_ssh_password_default(self): """ Testing ssh password default config """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1", - "use_existing_machine": False})) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1", + "use_existing_machine": False})) self.assertIsNone(mc.ssh_password()) def test_halt_needs_force_default(self): """ Testing 'halt needs force' default config """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1", - "use_existing_machine": False})) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1", + "use_existing_machine": False})) self.assertEqual(mc.halt_needs_force(), False) def test_halt_needs_force(self): """ Testing 'halt needs force' config """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "halt_needs_force": True, - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1", - "use_existing_machine": False})) + "os": "linux", + "halt_needs_force": True, + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1", + "use_existing_machine": False})) self.assertEqual(mc.halt_needs_force(), True) def test_vagrantfilepath(self): """ Testing vagrantfilepath config """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "halt_needs_force": True, - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target1", - "use_existing_machine": False})) + "os": "linux", + "halt_needs_force": True, + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target1", + "use_existing_machine": False})) self.assertEqual(mc.vagrantfilepath(), "systems") def test_vagrantfilepath_missing(self): @@ -340,111 +340,111 @@ class TestMachineConfig(unittest.TestCase): with self.assertRaises(ConfigurationError): mc = MachineConfig(DotMap(DotMap({"root": "systems/attacker1", - "os": "linux", - "halt_needs_force": True, - "vm_controller": { - "vm_type": "vagrant", - }, - "vm_name": "target1", - "use_existing_machine": False}))) + "os": "linux", + "halt_needs_force": True, + "vm_controller": { + "vm_type": "vagrant", + }, + "vm_name": "target1", + "use_existing_machine": False}))) mc.vagrantfilepath() def test_sensors_empty(self): """ Testing empty sensor config """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "halt_needs_force": True, - "vm_controller": { - "vm_type": "vagrant", - }, - "vm_name": "target1", - "use_existing_machine": False})) + "os": "linux", + "halt_needs_force": True, + "vm_controller": { + "vm_type": "vagrant", + }, + "vm_name": "target1", + "use_existing_machine": False})) self.assertEqual(mc.sensors(), []) def test_sensors_set(self): """ Testing empty sensor config """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "halt_needs_force": True, - "vm_controller": { - "vm_type": "vagrant", - }, - "vm_name": "target1", - "use_existing_machine": False, - "sensors": ["linux_idp", "test_sensor"]})) + "os": "linux", + "halt_needs_force": True, + "vm_controller": { + "vm_type": "vagrant", + }, + "vm_name": "target1", + "use_existing_machine": False, + "sensors": ["linux_idp", "test_sensor"]})) self.assertEqual(mc.sensors(), ["linux_idp", "test_sensor"]) def test_vulnerabilities_empty(self): """ Testing empty vulnerabilities config """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "halt_needs_force": True, - "vm_controller": { - "vm_type": "vagrant", - }, - "vm_name": "target1", - "use_existing_machine": False})) + "os": "linux", + "halt_needs_force": True, + "vm_controller": { + "vm_type": "vagrant", + }, + "vm_name": "target1", + "use_existing_machine": False})) self.assertEqual(mc.vulnerabilities(), []) def test_vulnerabilities_set(self): """ Testing empty vulnerabilities config """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "halt_needs_force": True, - "vm_controller": { - "vm_type": "vagrant", - }, - "vm_name": "target1", - "use_existing_machine": False, - "vulnerabilities": ["PEBKAC", "USER"]})) + "os": "linux", + "halt_needs_force": True, + "vm_controller": { + "vm_type": "vagrant", + }, + "vm_name": "target1", + "use_existing_machine": False, + "vulnerabilities": ["PEBKAC", "USER"]})) self.assertEqual(mc.vulnerabilities(), ["PEBKAC", "USER"]) def test_active_not_set(self): """ machine active not set """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "halt_needs_force": True, - "vm_controller": { - "vm_type": "vagrant", - }, - "vm_name": "target1", - "use_existing_machine": False, - "sensors": ["linux_idp", "test_sensor"]})) + "os": "linux", + "halt_needs_force": True, + "vm_controller": { + "vm_type": "vagrant", + }, + "vm_name": "target1", + "use_existing_machine": False, + "sensors": ["linux_idp", "test_sensor"]})) self.assertEqual(mc.is_active(), True) def test_active_is_false(self): """ machine active is set to false """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "halt_needs_force": True, - "vm_controller": { - "vm_type": "vagrant", - }, - "vm_name": "target1", - "use_existing_machine": False, - "active": False, - "sensors": ["linux_idp", "test_sensor"]})) + "os": "linux", + "halt_needs_force": True, + "vm_controller": { + "vm_type": "vagrant", + }, + "vm_name": "target1", + "use_existing_machine": False, + "active": False, + "sensors": ["linux_idp", "test_sensor"]})) self.assertEqual(mc.is_active(), False) def test_active_is_true(self): """ machine active is set to true """ mc = MachineConfig(DotMap({"root": "systems/attacker1", - "os": "linux", - "halt_needs_force": True, - "vm_controller": { - "vm_type": "vagrant", - }, - "vm_name": "target1", - "use_existing_machine": False, - "active": True, - "sensors": ["linux_idp", "test_sensor"]})) + "os": "linux", + "halt_needs_force": True, + "vm_controller": { + "vm_type": "vagrant", + }, + "vm_name": "target1", + "use_existing_machine": False, + "active": True, + "sensors": ["linux_idp", "test_sensor"]})) self.assertEqual(mc.is_active(), True) diff --git a/tests/test_machinecontrol.py b/tests/test_machinecontrol.py index e7d9cab..c2f749e 100644 --- a/tests/test_machinecontrol.py +++ b/tests/test_machinecontrol.py @@ -17,136 +17,136 @@ class TestMachineControl(unittest.TestCase): def test_get_os_linux_machine(self): m = Machine(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target3"}), self.attack_logger) - self.assertEqual(m.get_os(), "linux") - - def test_get_os_linux_machine_with_config_class(self): - mc = MachineConfig(DotMap({"root": "systems/attacker1", "os": "linux", "vm_controller": { "vm_type": "vagrant", "vagrantfilepath": "systems", }, - "vm_name": "target3"})) + "vm_name": "target3"}), self.attack_logger) + self.assertEqual(m.get_os(), "linux") + + def test_get_os_linux_machine_with_config_class(self): + mc = MachineConfig(DotMap({"root": "systems/attacker1", + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target3"})) m = Machine(mc, self.attack_logger) self.assertEqual(m.get_os(), "linux") def test_get_paw_good(self): m = Machine(DotMap({"root": "systems/attacker1", - "os": "linux", - "paw": "testme", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target3"}), self.attack_logger) + "os": "linux", + "paw": "testme", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target3"}), self.attack_logger) self.assertEqual(m.get_paw(), "testme") def test_get_paw_missing(self): m = Machine(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target3" - }), self.attack_logger) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target3" + }), self.attack_logger) self.assertEqual(m.get_paw(), None) def test_get_group_good(self): m = Machine(DotMap({"root": "systems/attacker1", - "os": "linux", - "group": "testme", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target3"}), self.attack_logger) + "os": "linux", + "group": "testme", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target3"}), self.attack_logger) self.assertEqual(m.get_group(), "testme") def test_get_group_missing(self): m = Machine(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target3" - }), self.attack_logger) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target3" + }), self.attack_logger) self.assertEqual(m.get_group(), None) def test_vagrantfilepath_missing(self): with self.assertRaises(ConfigurationError): Machine(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - }, - "vm_name": "target3" - }), self.attack_logger) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + }, + "vm_name": "target3" + }), self.attack_logger) def test_vagrantfile_missing(self): with self.assertRaises(ConfigurationError): Machine(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "non_existing", - }, - "vm_name": "target3" - }), self.attack_logger) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "non_existing", + }, + "vm_name": "target3" + }), self.attack_logger) def test_vagrantfile_existing(self): m = Machine(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target3" - }), self.attack_logger) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target3" + }), self.attack_logger) self.assertIsNotNone(m) # test: auto generated, dir missing def test_auto_generated_machinepath_with_path_missing(self): with self.assertRaises(ConfigurationError): Machine(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "missing" - }), self.attack_logger) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "missing" + }), self.attack_logger) # test manual config, dir missing def test_configured_machinepath_with_path_missing(self): with self.assertRaises(ConfigurationError): Machine(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target3", - "machinepath": "missing" - }), self.attack_logger) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target3", + "machinepath": "missing" + }), self.attack_logger) # test auto generated, dir there (external/internal dirs must work !) def test_auto_generated_machinepath_with_good_config(self): m = Machine(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target3" - }), self.attack_logger) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target3" + }), self.attack_logger) vagrantfilepath = os.path.abspath("systems") ext = os.path.join(vagrantfilepath, "target3") internal = os.path.join("/vagrant/", "target3") @@ -157,14 +157,14 @@ class TestMachineControl(unittest.TestCase): # test: manual config, dir there (external/internal dirs must work !) def test_configured_machinepath_with_good_config(self): m = Machine(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "missing", - "machinepath": "target3" - }), self.attack_logger) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "missing", + "machinepath": "target3" + }), self.attack_logger) vagrantfilepath = os.path.abspath("systems") ext = os.path.join(vagrantfilepath, "target3") internal = os.path.join("/vagrant/", "target3") @@ -176,22 +176,22 @@ class TestMachineControl(unittest.TestCase): def test_configured_vm_controller_missing(self): with self.assertRaises(ConfigurationError): Machine(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_name": "missing", - "machinepath": "target3" - }), self.attack_logger) + "os": "linux", + "vm_name": "missing", + "machinepath": "target3" + }), self.attack_logger) # Create caldera start command and verify it def test_get_linux_caldera_start_cmd(self): m = Machine(DotMap({"root": "systems/attacker1", - "os": "linux", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target3", - "group": "testgroup", - "paw": "testpaw"}), self.attack_logger) + "os": "linux", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target3", + "group": "testgroup", + "paw": "testpaw"}), self.attack_logger) m.set_caldera_server("http://www.test.test") with patch.object(m.vm_manager, "get_playground", return_value="/vagrant/target3"): cmd = m.create_start_caldera_client_cmd() @@ -200,15 +200,15 @@ class TestMachineControl(unittest.TestCase): # Create caldera start command and verify it (windows) def test_get_windows_caldera_start_cmd(self): m = Machine(DotMap({"root": "systems/attacker1", - "os": "windows", - "vm_controller": { - "vm_type": "vagrant", - "vagrantfilepath": "systems", - }, - "vm_name": "target3", - "group": "testgroup", - "paw": "testpaw", - "machinepath": "target2w"}), self.attack_logger) + "os": "windows", + "vm_controller": { + "vm_type": "vagrant", + "vagrantfilepath": "systems", + }, + "vm_name": "target3", + "group": "testgroup", + "paw": "testpaw", + "machinepath": "target2w"}), self.attack_logger) m.set_caldera_server("www.test.test") cmd = m.create_start_caldera_client_cmd() self.maxDiff = None diff --git a/tox.ini b/tox.ini index 8558e0c..24cbb81 100644 --- a/tox.ini +++ b/tox.ini @@ -44,7 +44,8 @@ commands = # Ignoring: # C901 complex code. Reduce complexitiy. But this thing is over-reacting # E501: line too long. Please: Still keep it short. But 80 chars is just incredibly short nowadays - flake8 --ignore C901,E501 + # W601: TODO: has_key in config_verifier.py should be replaced by an iterator + flake8 --ignore C901,E501,W601 # Check if dependencies are vulnerable safety check -r requirements.txt # Check for common vulnerabilities