tests: Add unit tests for `get_message_by_status()` in

monkey_island\cc\services\attack\technique_reports\__init__.py
This commit is contained in:
Shreya Malviya 2021-09-24 16:33:57 +05:30
parent f2470bb0e9
commit 90f3cff3cd
1 changed files with 174 additions and 0 deletions

View File

@ -0,0 +1,174 @@
from common.utils.attack_utils import ScanStatus
from monkey_island.cc.services.attack.technique_reports.__init__ import (
AttackTechnique,
disabled_msg,
)
FAKE_CONFIG_SCHEMA_PER_ATTACK_TECHNIQUE = {
"T0000": {
"Definition Type 1": ["Config Option 1", "Config Option 2"],
"Definition Type 2": ["Config Option 5", "Config Option 6"],
},
"T0001": {
"Definition Type 1": ["Config Option 1"],
"Definition Type 2": ["Config Option 5"],
},
}
class FakeAttackTechnique(AttackTechnique):
tech_id = "T0001"
relevant_systems = ["System 1", "System 2"]
unscanned_msg = "UNSCANNED"
scanned_msg = "SCANNED"
used_msg = "USED"
def get_report_data():
pass
EXPECTED_UNSCANNED_MSG = (
"UNSCANNED due to one of the following reasons:\n"
"- The following configuration options were disabled:<br/>"
"- Definition Type 1 — Config Option 1<br/>"
"- Definition Type 2 — Config Option 5<br/>"
)
EXPECTED_SCANNED_MSG = "SCANNED"
EXPECTED_USED_MSG = "USED"
def test_get_message_by_status_disabled(monkeypatch):
monkeypatch.setattr(
(
"monkey_island.cc.services.attack.technique_reports."
"__init__.CONFIG_SCHEMA_PER_ATTACK_TECHNIQUE"
),
FAKE_CONFIG_SCHEMA_PER_ATTACK_TECHNIQUE,
)
technique_msg = FakeAttackTechnique.get_message_by_status(ScanStatus.DISABLED.value)
assert technique_msg == disabled_msg
def test_get_message_by_status_unscanned(monkeypatch):
monkeypatch.setattr(
(
"monkey_island.cc.services.attack.technique_reports."
"__init__.CONFIG_SCHEMA_PER_ATTACK_TECHNIQUE"
),
FAKE_CONFIG_SCHEMA_PER_ATTACK_TECHNIQUE,
)
technique_msg = FakeAttackTechnique.get_message_by_status(ScanStatus.UNSCANNED.value)
assert technique_msg == EXPECTED_UNSCANNED_MSG
def test_get_message_by_status_scanned(monkeypatch):
monkeypatch.setattr(
(
"monkey_island.cc.services.attack.technique_reports."
"__init__.CONFIG_SCHEMA_PER_ATTACK_TECHNIQUE"
),
FAKE_CONFIG_SCHEMA_PER_ATTACK_TECHNIQUE,
)
technique_msg = FakeAttackTechnique.get_message_by_status(ScanStatus.SCANNED.value)
assert technique_msg == EXPECTED_SCANNED_MSG
def test_get_message_by_status_used(monkeypatch):
monkeypatch.setattr(
(
"monkey_island.cc.services.attack.technique_reports."
"__init__.CONFIG_SCHEMA_PER_ATTACK_TECHNIQUE"
),
FAKE_CONFIG_SCHEMA_PER_ATTACK_TECHNIQUE,
)
technique_msg = FakeAttackTechnique.get_message_by_status(ScanStatus.USED.value)
assert technique_msg == EXPECTED_USED_MSG
###
class FakeAttackTechnique_OneRelevantSystem(AttackTechnique):
tech_id = "T0001"
relevant_systems = ["System 1"]
unscanned_msg = "UNSCANNED"
scanned_msg = "SCANNED"
used_msg = "USED"
def get_report_data():
pass
EXPECTED_UNSCANNED_MSG_ONE_RELEVANT_SYSTEM = (
"UNSCANNED due to one of the following reasons:\n"
"- The Monkey did not run on any System 1 systems.\n"
"- The following configuration options were disabled:<br/>"
"- Definition Type 1 — Config Option 1<br/>"
"- Definition Type 2 — Config Option 5<br/>"
)
EXPECTED_SCANNED_MSG_ONE_RELEVANT_SYSTEM = "SCANNED"
EXPECTED_USED_MSG_ONE_RELEVANT_SYSTEM = "USED"
def test_get_message_by_status_disabled_one_relevant_system(monkeypatch):
monkeypatch.setattr(
(
"monkey_island.cc.services.attack.technique_reports."
"__init__.CONFIG_SCHEMA_PER_ATTACK_TECHNIQUE"
),
FAKE_CONFIG_SCHEMA_PER_ATTACK_TECHNIQUE,
)
technique_msg = FakeAttackTechnique_OneRelevantSystem.get_message_by_status(
ScanStatus.DISABLED.value
)
assert technique_msg == disabled_msg
def test_get_message_by_status_unscanned_one_relevant_system(monkeypatch):
monkeypatch.setattr(
(
"monkey_island.cc.services.attack.technique_reports."
"__init__.CONFIG_SCHEMA_PER_ATTACK_TECHNIQUE"
),
FAKE_CONFIG_SCHEMA_PER_ATTACK_TECHNIQUE,
)
technique_msg = FakeAttackTechnique_OneRelevantSystem.get_message_by_status(
ScanStatus.UNSCANNED.value
)
assert technique_msg == EXPECTED_UNSCANNED_MSG_ONE_RELEVANT_SYSTEM
def test_get_message_by_status_scanned_one_relevant_system(monkeypatch):
monkeypatch.setattr(
(
"monkey_island.cc.services.attack.technique_reports."
"__init__.CONFIG_SCHEMA_PER_ATTACK_TECHNIQUE"
),
FAKE_CONFIG_SCHEMA_PER_ATTACK_TECHNIQUE,
)
technique_msg = FakeAttackTechnique_OneRelevantSystem.get_message_by_status(
ScanStatus.SCANNED.value
)
assert technique_msg == EXPECTED_SCANNED_MSG_ONE_RELEVANT_SYSTEM
def test_get_message_by_status_used_one_relevant_system(monkeypatch):
monkeypatch.setattr(
(
"monkey_island.cc.services.attack.technique_reports."
"__init__.CONFIG_SCHEMA_PER_ATTACK_TECHNIQUE"
),
FAKE_CONFIG_SCHEMA_PER_ATTACK_TECHNIQUE,
)
technique_msg = FakeAttackTechnique_OneRelevantSystem.get_message_by_status(
ScanStatus.USED.value
)
assert technique_msg == EXPECTED_USED_MSG_ONE_RELEVANT_SYSTEM