forked from p15670423/monkey
Fix zero_trust_service tests (comparison order problems)
This commit is contained in:
parent
f2297de661
commit
ab348bb12a
|
@ -1,9 +1,151 @@
|
||||||
from monkey_island.cc.services.reporting.zero_trust_service import ZeroTrustService
|
|
||||||
|
|
||||||
from common.data.zero_trust_consts import *
|
from common.data.zero_trust_consts import *
|
||||||
from monkey_island.cc.models.zero_trust.finding import Finding
|
from monkey_island.cc.models.zero_trust.finding import Finding
|
||||||
|
from monkey_island.cc.services.reporting.zero_trust_service import ZeroTrustService
|
||||||
from monkey_island.cc.testing.IslandTestCase import IslandTestCase
|
from monkey_island.cc.testing.IslandTestCase import IslandTestCase
|
||||||
|
|
||||||
|
EXPECTED_DICT = {
|
||||||
|
AUTOMATION_ORCHESTRATION: [],
|
||||||
|
DATA: [
|
||||||
|
{
|
||||||
|
"principle": PRINCIPLES[PRINCIPLE_DATA_TRANSIT],
|
||||||
|
"status": STATUS_FAILED,
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"status": STATUS_FAILED,
|
||||||
|
"test": TESTS_MAP[TEST_DATA_ENDPOINT_HTTP][TEST_EXPLANATION_KEY]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"status": STATUS_UNEXECUTED,
|
||||||
|
"test": TESTS_MAP[TEST_DATA_ENDPOINT_ELASTIC][TEST_EXPLANATION_KEY]
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
DEVICES: [
|
||||||
|
{
|
||||||
|
"principle": PRINCIPLES[PRINCIPLE_ENDPOINT_SECURITY],
|
||||||
|
"status": STATUS_FAILED,
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"status": STATUS_UNEXECUTED,
|
||||||
|
"test": TESTS_MAP[TEST_MACHINE_EXPLOITED][TEST_EXPLANATION_KEY]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"status": STATUS_FAILED,
|
||||||
|
"test": TESTS_MAP[TEST_ENDPOINT_SECURITY_EXISTS][TEST_EXPLANATION_KEY]
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
NETWORKS: [
|
||||||
|
{
|
||||||
|
"principle": PRINCIPLES[PRINCIPLE_SEGMENTATION],
|
||||||
|
"status": STATUS_UNEXECUTED,
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"status": STATUS_UNEXECUTED,
|
||||||
|
"test": TESTS_MAP[TEST_SEGMENTATION][TEST_EXPLANATION_KEY]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"principle": PRINCIPLES[PRINCIPLE_USER_BEHAVIOUR],
|
||||||
|
"status": STATUS_VERIFY,
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"status": STATUS_VERIFY,
|
||||||
|
"test": TESTS_MAP[TEST_SCHEDULED_EXECUTION][TEST_EXPLANATION_KEY]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"principle": PRINCIPLES[PRINCIPLE_USERS_MAC_POLICIES],
|
||||||
|
"status": STATUS_UNEXECUTED,
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"status": STATUS_UNEXECUTED,
|
||||||
|
"test": TESTS_MAP[TEST_COMMUNICATE_AS_NEW_USER][TEST_EXPLANATION_KEY]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"principle": PRINCIPLES[PRINCIPLE_ANALYZE_NETWORK_TRAFFIC],
|
||||||
|
"status": STATUS_UNEXECUTED,
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"status": STATUS_UNEXECUTED,
|
||||||
|
"test": TESTS_MAP[TEST_MALICIOUS_ACTIVITY_TIMELINE][TEST_EXPLANATION_KEY]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"principle": PRINCIPLES[PRINCIPLE_RESTRICTIVE_NETWORK_POLICIES],
|
||||||
|
"status": STATUS_UNEXECUTED,
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"status": STATUS_UNEXECUTED,
|
||||||
|
"test": TESTS_MAP[TEST_TUNNELING][TEST_EXPLANATION_KEY]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
],
|
||||||
|
PEOPLE: [
|
||||||
|
{
|
||||||
|
"principle": PRINCIPLES[PRINCIPLE_USER_BEHAVIOUR],
|
||||||
|
"status": STATUS_VERIFY,
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"status": STATUS_VERIFY,
|
||||||
|
"test": TESTS_MAP[TEST_SCHEDULED_EXECUTION][TEST_EXPLANATION_KEY]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"principle": PRINCIPLES[PRINCIPLE_USERS_MAC_POLICIES],
|
||||||
|
"status": STATUS_UNEXECUTED,
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"status": STATUS_UNEXECUTED,
|
||||||
|
"test": TESTS_MAP[TEST_COMMUNICATE_AS_NEW_USER][TEST_EXPLANATION_KEY]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
VISIBILITY_ANALYTICS: [
|
||||||
|
{
|
||||||
|
"principle": PRINCIPLES[PRINCIPLE_USERS_MAC_POLICIES],
|
||||||
|
"status": STATUS_UNEXECUTED,
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"status": STATUS_UNEXECUTED,
|
||||||
|
"test": TESTS_MAP[TEST_COMMUNICATE_AS_NEW_USER][TEST_EXPLANATION_KEY]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"principle": PRINCIPLES[PRINCIPLE_ANALYZE_NETWORK_TRAFFIC],
|
||||||
|
"status": STATUS_UNEXECUTED,
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"status": STATUS_UNEXECUTED,
|
||||||
|
"test": TESTS_MAP[TEST_MALICIOUS_ACTIVITY_TIMELINE][TEST_EXPLANATION_KEY]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"principle": PRINCIPLES[PRINCIPLE_RESTRICTIVE_NETWORK_POLICIES],
|
||||||
|
"status": STATUS_UNEXECUTED,
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"status": STATUS_UNEXECUTED,
|
||||||
|
"test": TESTS_MAP[TEST_TUNNELING][TEST_EXPLANATION_KEY]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
],
|
||||||
|
WORKLOADS: []
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def save_example_findings():
|
def save_example_findings():
|
||||||
# arrange
|
# arrange
|
||||||
|
@ -106,151 +248,24 @@ class TestZeroTrustService(IslandTestCase):
|
||||||
|
|
||||||
save_example_findings()
|
save_example_findings()
|
||||||
|
|
||||||
expected = {
|
expected = dict(EXPECTED_DICT) # new mutable
|
||||||
AUTOMATION_ORCHESTRATION: [],
|
|
||||||
DATA: [
|
|
||||||
{
|
|
||||||
"principle": PRINCIPLES[PRINCIPLE_DATA_TRANSIT],
|
|
||||||
"status": STATUS_FAILED,
|
|
||||||
"tests": [
|
|
||||||
{
|
|
||||||
"status": STATUS_FAILED,
|
|
||||||
"test": TESTS_MAP[TEST_DATA_ENDPOINT_HTTP][TEST_EXPLANATION_KEY]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"status": STATUS_UNEXECUTED,
|
|
||||||
"test": TESTS_MAP[TEST_DATA_ENDPOINT_ELASTIC][TEST_EXPLANATION_KEY]
|
|
||||||
},
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
DEVICES: [
|
|
||||||
{
|
|
||||||
"principle": PRINCIPLES[PRINCIPLE_ENDPOINT_SECURITY],
|
|
||||||
"status": STATUS_FAILED,
|
|
||||||
"tests": [
|
|
||||||
{
|
|
||||||
"status": STATUS_UNEXECUTED,
|
|
||||||
"test": TESTS_MAP[TEST_MACHINE_EXPLOITED][TEST_EXPLANATION_KEY]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"status": STATUS_FAILED,
|
|
||||||
"test": TESTS_MAP[TEST_ENDPOINT_SECURITY_EXISTS][TEST_EXPLANATION_KEY]
|
|
||||||
},
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
NETWORKS: [
|
|
||||||
{
|
|
||||||
"principle": PRINCIPLES[PRINCIPLE_SEGMENTATION],
|
|
||||||
"status": STATUS_UNEXECUTED,
|
|
||||||
"tests": [
|
|
||||||
{
|
|
||||||
"status": STATUS_UNEXECUTED,
|
|
||||||
"test": TESTS_MAP[TEST_SEGMENTATION][TEST_EXPLANATION_KEY]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"principle": PRINCIPLES[PRINCIPLE_USER_BEHAVIOUR],
|
|
||||||
"status": STATUS_VERIFY,
|
|
||||||
"tests": [
|
|
||||||
{
|
|
||||||
"status": STATUS_VERIFY,
|
|
||||||
"test": TESTS_MAP[TEST_SCHEDULED_EXECUTION][TEST_EXPLANATION_KEY]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"principle": PRINCIPLES[PRINCIPLE_USERS_MAC_POLICIES],
|
|
||||||
"status": STATUS_UNEXECUTED,
|
|
||||||
"tests": [
|
|
||||||
{
|
|
||||||
"status": STATUS_UNEXECUTED,
|
|
||||||
"test": TESTS_MAP[TEST_COMMUNICATE_AS_NEW_USER][TEST_EXPLANATION_KEY]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"principle": PRINCIPLES[PRINCIPLE_ANALYZE_NETWORK_TRAFFIC],
|
|
||||||
"status": STATUS_UNEXECUTED,
|
|
||||||
"tests": [
|
|
||||||
{
|
|
||||||
"status": STATUS_UNEXECUTED,
|
|
||||||
"test": TESTS_MAP[TEST_MALICIOUS_ACTIVITY_TIMELINE][TEST_EXPLANATION_KEY]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"principle": PRINCIPLES[PRINCIPLE_RESTRICTIVE_NETWORK_POLICIES],
|
|
||||||
"status": STATUS_UNEXECUTED,
|
|
||||||
"tests": [
|
|
||||||
{
|
|
||||||
"status": STATUS_UNEXECUTED,
|
|
||||||
"test": TESTS_MAP[TEST_TUNNELING][TEST_EXPLANATION_KEY]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
],
|
|
||||||
PEOPLE: [
|
|
||||||
{
|
|
||||||
"principle": PRINCIPLES[PRINCIPLE_USER_BEHAVIOUR],
|
|
||||||
"status": STATUS_VERIFY,
|
|
||||||
"tests": [
|
|
||||||
{
|
|
||||||
"status": STATUS_VERIFY,
|
|
||||||
"test": TESTS_MAP[TEST_SCHEDULED_EXECUTION][TEST_EXPLANATION_KEY]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"principle": PRINCIPLES[PRINCIPLE_USERS_MAC_POLICIES],
|
|
||||||
"status": STATUS_UNEXECUTED,
|
|
||||||
"tests": [
|
|
||||||
{
|
|
||||||
"status": STATUS_UNEXECUTED,
|
|
||||||
"test": TESTS_MAP[TEST_COMMUNICATE_AS_NEW_USER][TEST_EXPLANATION_KEY]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
VISIBILITY_ANALYTICS: [
|
|
||||||
{
|
|
||||||
"principle": PRINCIPLES[PRINCIPLE_USERS_MAC_POLICIES],
|
|
||||||
"status": STATUS_UNEXECUTED,
|
|
||||||
"tests": [
|
|
||||||
{
|
|
||||||
"status": STATUS_UNEXECUTED,
|
|
||||||
"test": TESTS_MAP[TEST_COMMUNICATE_AS_NEW_USER][TEST_EXPLANATION_KEY]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"principle": PRINCIPLES[PRINCIPLE_ANALYZE_NETWORK_TRAFFIC],
|
|
||||||
"status": STATUS_UNEXECUTED,
|
|
||||||
"tests": [
|
|
||||||
{
|
|
||||||
"status": STATUS_UNEXECUTED,
|
|
||||||
"test": TESTS_MAP[TEST_MALICIOUS_ACTIVITY_TIMELINE][TEST_EXPLANATION_KEY]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"principle": PRINCIPLES[PRINCIPLE_RESTRICTIVE_NETWORK_POLICIES],
|
|
||||||
"status": STATUS_UNEXECUTED,
|
|
||||||
"tests": [
|
|
||||||
{
|
|
||||||
"status": STATUS_UNEXECUTED,
|
|
||||||
"test": TESTS_MAP[TEST_TUNNELING][TEST_EXPLANATION_KEY]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
],
|
|
||||||
WORKLOADS: []
|
|
||||||
}
|
|
||||||
|
|
||||||
result = ZeroTrustService.get_principles_status()
|
result = ZeroTrustService.get_principles_status()
|
||||||
self.assertEqual(result, expected)
|
# Compare expected and result, no order:
|
||||||
|
for pillar_name, pillar_principles_status_result in result.items():
|
||||||
|
for index, pillar_principle_status_expected in enumerate(expected.get(pillar_name)):
|
||||||
|
correct_one = None
|
||||||
|
for pillar_principle_status_result in pillar_principles_status_result:
|
||||||
|
if pillar_principle_status_result["principle"] == pillar_principle_status_expected["principle"]:
|
||||||
|
correct_one = pillar_principle_status_result
|
||||||
|
break
|
||||||
|
|
||||||
|
# Compare tests no order
|
||||||
|
self.assertTrue(compare_lists_no_order(correct_one["tests"], pillar_principle_status_expected["tests"]))
|
||||||
|
# Compare the rest
|
||||||
|
del pillar_principle_status_expected["tests"]
|
||||||
|
del correct_one["tests"]
|
||||||
|
self.assertEqual(sorted(correct_one), sorted(pillar_principle_status_expected))
|
||||||
|
|
||||||
def test_get_pillars_to_statuses(self):
|
def test_get_pillars_to_statuses(self):
|
||||||
self.fail_if_not_testing_env()
|
self.fail_if_not_testing_env()
|
||||||
|
@ -283,3 +298,13 @@ class TestZeroTrustService(IslandTestCase):
|
||||||
}
|
}
|
||||||
|
|
||||||
self.assertEqual(ZeroTrustService.get_pillars_to_statuses(), expected)
|
self.assertEqual(ZeroTrustService.get_pillars_to_statuses(), expected)
|
||||||
|
|
||||||
|
|
||||||
|
def compare_lists_no_order(s, t):
|
||||||
|
t = list(t) # make a mutable copy
|
||||||
|
try:
|
||||||
|
for elem in s:
|
||||||
|
t.remove(elem)
|
||||||
|
except ValueError:
|
||||||
|
return False
|
||||||
|
return not t
|
||||||
|
|
Loading…
Reference in New Issue