From 9217581e1cfa4dee120c605d35773f9150524ba6 Mon Sep 17 00:00:00 2001 From: Shreya Date: Sat, 18 Jul 2020 23:43:47 +0530 Subject: [PATCH] Add optional parameter 'configuration' in _check_status() --- .../attack/technique_reports/__init__.py | 11 ++-- .../attack_technique_test.py | 54 ++++++++++--------- 2 files changed, 36 insertions(+), 29 deletions(-) diff --git a/monkey/monkey_island/cc/services/attack/technique_reports/__init__.py b/monkey/monkey_island/cc/services/attack/technique_reports/__init__.py index 64b6a13f7..14bd1012e 100644 --- a/monkey/monkey_island/cc/services/attack/technique_reports/__init__.py +++ b/monkey/monkey_island/cc/services/attack/technique_reports/__init__.py @@ -63,7 +63,7 @@ class AttackTechnique(object, metaclass=abc.ABCMeta): Gets the status of a certain attack technique. :return: ScanStatus numeric value """ - if cls._is_disabled_in_config(): + if not cls._is_enabled_in_config(): return ScanStatus.DISABLED.value elif mongo.db.telemetry.find_one({'telem_category': 'attack', 'data.status': ScanStatus.USED.value, @@ -143,11 +143,12 @@ class AttackTechnique(object, metaclass=abc.ABCMeta): return {} @classmethod - def _check_status(cls, status): - if status == ScanStatus.UNSCANNED.value and cls._is_disabled_in_config(): + def _check_status(cls, status, *args): + enabled_in_config = args[0] if args else cls._is_enabled_in_config() + if status == ScanStatus.UNSCANNED.value and not enabled_in_config: return ScanStatus.DISABLED.value return status @classmethod - def _is_disabled_in_config(cls): - return not AttackConfig.get_technique_values()[cls.tech_id] + def _is_enabled_in_config(cls): + return AttackConfig.get_technique_values()[cls.tech_id] diff --git a/monkey/monkey_island/cc/services/attack/technique_reports/attack_technique_test.py b/monkey/monkey_island/cc/services/attack/technique_reports/attack_technique_test.py index 43c312e3f..94facd1b9 100644 --- a/monkey/monkey_island/cc/services/attack/technique_reports/attack_technique_test.py +++ b/monkey/monkey_island/cc/services/attack/technique_reports/attack_technique_test.py @@ -13,27 +13,27 @@ class T9999(PostBreachTechnique): pba_names = ["PBA Name"] -config =\ - { - 'category': { - 'link': '', - 'properties': { - 'T9999': { - 'description': '', - 'link': '', - 'necessary': False, - 'title': '', - 'type': 'bool', - 'value': False # this field denotes whether technique is enabled or disabled in config - } - } - } - } +# config =\ +# { +# 'category': { +# 'link': '', +# 'properties': { +# 'T9999': { +# 'description': '', +# 'link': '', +# 'necessary': False, +# 'title': '', +# 'type': 'bool', +# 'value': False # this field denotes whether technique is enabled or disabled in config +# } +# } +# } +# } -def set_config(value: bool): - config['category']['properties']['T9999']['value'] = value - return config +# def set_config(value: bool): +# config['category']['properties']['T9999']['value'] = value +# return config param_list = [ @@ -45,7 +45,8 @@ param_list = [ 'status': 0, 'title': 'Unscanned technique' }, - set_config(True), # configuration + # set_config(True), # configuration + True, # configuration ScanStatus.UNSCANNED.value # expected status ), @@ -57,7 +58,8 @@ param_list = [ 'status': 1, 'title': 'Scanned technique' }, - set_config(True), # configuration + # set_config(True), # configuration + True, # configuration ScanStatus.SCANNED.value # expected status ), @@ -69,7 +71,8 @@ param_list = [ 'status': 2, 'title': 'Used technique' }, - set_config(True), # configuration + # set_config(True), # configuration + True, # configuration ScanStatus.USED.value # expected status ), @@ -81,7 +84,8 @@ param_list = [ 'status': 0, 'title': 'Disabled technique' }, - set_config(False), # configuration + # set_config(False), # configuration + False, # configuration ScanStatus.DISABLED.value # expected status ) ] @@ -91,4 +95,6 @@ class TestAttackTechnique(TestCase): def test__check_status(self): for telem_data, config, expected_status in param_list: with self.subTest(msg=f"Checking if correct status is returned (status: {telem_data['message']})"): - self.assertEqual(T9999._check_status(telem_data['status']), expected_status) + # self.assertEqual(T9999._check_status(telem_data['status']), expected_status) + self.assertEqual(T9999._check_status(telem_data['status'], config), + expected_status)