diff --git a/preupg/report_parser.py b/preupg/report_parser.py index 6ccb719..a391de9 100644 --- a/preupg/report_parser.py +++ b/preupg/report_parser.py @@ -147,34 +147,6 @@ def modify_result_path(self, result_dir, scenario, mode): self.write_xml() -<<<<<<< HEAD - def update_inplace_risk(self, scanning_progress, rule, res): - """Function updates inplace risk""" - inplace_risk = XccdfHelper.get_check_import_inplace_risk(rule) - if inplace_risk: - logger_report.debug("Update_inplace_risk '%s'", inplace_risk) - return_value = XccdfHelper.get_and_print_inplace_risk(0, inplace_risk) - logger_report.debug("Get and print inplace risk return code '%s'", return_value) - if int(return_value)/2 == 1: - res.text = ReportHelper.get_needs_inspection() - elif int(return_value)/2 == 2: - res.text = ReportHelper.get_needs_action() - for index, row in enumerate(scanning_progress.output_data): - if self.get_nodes_text(rule, "title") in row: - scanning_progress.output_data[index] = "{0}:{1}".format( - self.get_nodes_text(rule, "title"), - res.text) -======= - def modify_platform_tag(self, platform_tag): - """The function updates platform tag to the assessment system tag""" - for platform in self.filter_children(self.target_tree, "platform"): - if "cpe:/o:redhat:enterprise_linux:" in platform.get("idref"): - logger_report.debug("Update platform tag to '%s'", platform_tag) - platform.set("idref", "cpe:/o:redhat:enterprise_linux:"+platform_tag) - - self.write_xml() ->>>>>>> Refactor functions determining the return code - def replace_inplace_risk(self, scanning_results=None): """Replace result of a module: - from FAIL to NEEDS_INSPECTION if the module has SLIGHT or MEDIUM risk diff --git a/tests/__init__.py b/tests/__init__.py index 109c09d..89e7d6b 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -9,16 +9,12 @@ os.environ['CURRENT_DIRECTORY'] = dirname os.environ['XCCDF_VALUE_REPORT_DIR'] = dirname os.environ['XCCDF_VALUE_CURRENT_DIRECTORY'] = os.path.join(os.path.dirname(__file__), "..") -os.environ['XCCDF_RESULT_ERROR'] = "3" -os.environ['XCCDF_RESULT_FAILED'] = "2" -os.environ['XCCDF_RESULT_FAIL'] = "2" -os.environ['XCCDF_RESULT_FIXED'] = "1" -os.environ['XCCDF_RESULT_NEEDS_INSPECTION'] = "1" -os.environ['XCCDF_RESULT_NEEDS_ACTION'] = "1" -os.environ['XCCDF_RESULT_NOT_APPLICABLE'] = "10" +os.environ['XCCDF_RESULT_FAIL'] = "102" +os.environ['XCCDF_RESULT_ERROR'] = "103" +os.environ['XCCDF_RESULT_FIXED'] = "109" +os.environ['XCCDF_RESULT_NOT_APPLICABLE'] = "105" os.environ['XCCDF_VALUE_MODULE_PATH'] = "test_script_api" - def suite(): settings.log_dir = os.getcwd() settings.preupg_log = os.path.join(settings.log_dir, "preupg.log") diff --git a/tests/generated_results/inplace_combined_risk_test.xml b/tests/generated_results/inplace_combined_risk_test.xml index d92e91b..bd3c14b 100644 --- a/tests/generated_results/inplace_combined_risk_test.xml +++ b/tests/generated_results/inplace_combined_risk_test.xml @@ -30,7 +30,6 @@ - /root/preupgrade @@ -72,7 +71,7 @@ Dummy content - Dummy content + Dummy content solution @@ -132,33 +131,6 @@ - - Dummy content - - Dummy content - - Dummy content - - str1
str2
- - - - - - - - - - - - - - - - - -
-
@@ -229,24 +201,6 @@ - - dummy_result - - sample output - - - - - - - - - - - - - - 49.081196 40.000000 diff --git a/tests/generated_results/inplace_risk_test.xml b/tests/generated_results/inplace_risk_test.xml index 0c34f48..d4cc4de 100644 --- a/tests/generated_results/inplace_risk_test.xml +++ b/tests/generated_results/inplace_risk_test.xml @@ -28,8 +28,7 @@ This profile is designed for the Preupgrade Assistant tool. - - + /root/preupgrade @@ -51,54 +50,27 @@ DUMMY - + Dummy content - + dummy_preupg - + admin - + /root/preupgrade/FOOBAR6_7/dummy/preupg - + solution.txt - + Dummy content Dummy content - Dummy content - - - - - - - - - - - - - - - - - - - - - Dummy content - - Dummy content - - Dummy content - - str1
str2
+ HTML
solution
@@ -144,19 +116,19 @@ 1 1 /root/preupgrade/FOOBAR6_7 - dummy_preupg - admin - /root/preupgrade/FOOBAR6_7/dummy/preupg - solution.txt - - RESULT_VALUE + dummy_preupg + admin + /root/preupgrade/FOOBAR6_7/dummy/preupg + solution.txt + + RESULT_VALUE1 - INPLACE_TAG + INPLACE_TAG1 - - - - + + + + @@ -166,23 +138,6 @@ - - dummy_result - - sample output - - - - - - - - - - - - - 49.081196 40.000000 diff --git a/tests/test_inplace_risks.py b/tests/test_inplace_risks.py index b105cf3..0056f0e 100644 --- a/tests/test_inplace_risks.py +++ b/tests/test_inplace_risks.py @@ -6,7 +6,7 @@ from preupg.xccdf import XccdfHelper from preupg.utils import FileHelper -from preupg import settings +from preupg.report_parser import ReportParser from preupg.settings import ResultBasedReturnCodes try: @@ -15,112 +15,130 @@ import tests.base as base +def _update_xccdf_file(class_id, result_value, risk): + temp_file = class_id._copy_xccdf_file(result_value, risk) + ReportParser(temp_file).replace_inplace_risk() + return_code = XccdfHelper.check_inplace_risk(temp_file, 0) + shutil.rmtree(os.path.dirname(temp_file)) + return return_code + + class TestRiskCheck(base.TestCase): risks = ['SLIGHT', 'MEDIUM', 'HIGH', 'EXTREME'] - def _copy_xccdf_file(self, update_text=None, update_return_value=None): + @staticmethod + def _copy_xccdf_file(update_return_value=None, update_text=None): temp_dir = tempfile.mkdtemp() - xccdf_file = os.path.join(os.getcwd(), 'tests', 'generated_results', 'inplace_risk_test.xml') - temp_file = os.path.join(temp_dir, 'all-xccdf.xml') + xccdf_file = os.path.join(os.getcwd(), 'tests', 'generated_results', + 'inplace_risk_test.xml') + temp_file = os.path.join(temp_dir, 'inplace_risk_test_updated.xml') shutil.copyfile(xccdf_file, temp_file) - content = FileHelper.get_file_content(temp_file, 'rb', decode_flag=False) - new_text = b'preupg.risk.%s: Test %s Inplace risk' % (update_text, update_text) + content = FileHelper.get_file_content(temp_file, 'rb', + decode_flag=False) + content = content.replace(b'RESULT_VALUE1', update_return_value) + new_text = b'preupg.risk.%s: Test %s Inplace risk' % (update_text, + update_text) if update_text is not None: - content = content.replace(b'INPLACE_TAG', new_text) + content = content.replace(b'INPLACE_TAG1', new_text) else: - content = content.replace(b'INPLACE_TAG', "") - content = content.replace(b'RESULT_VALUE', update_return_value) + content = content.replace(b'INPLACE_TAG1', "") FileHelper.write_to_file(temp_file, 'wb', content) return temp_file - def _update_xccdf_file(self, return_value, risk): - temp_file = self._copy_xccdf_file(update_return_value=return_value, - update_text=risk) - return_value = XccdfHelper.check_inplace_risk(os.path.join(os.path.dirname(temp_file), 'all-xccdf.xml'), 0) - shutil.rmtree(os.path.dirname(temp_file)) - return return_value - def test_check_inplace_risk_high(self): - self.assertEqual(self._update_xccdf_file('needs_action', 'HIGH'), + self.assertEqual(_update_xccdf_file(TestRiskCheck, 'fail', 'HIGH'), ResultBasedReturnCodes.NEEDS_ACTION) def test_check_inplace_risk_medium(self): - self.assertEqual(self._update_xccdf_file('needs_inspection', 'MEDIUM'), + self.assertEqual(_update_xccdf_file(TestRiskCheck, 'fail', 'MEDIUM'), ResultBasedReturnCodes.NEEDS_INSPECTION) def test_check_inplace_risk_slight(self): - self.assertEqual(self._update_xccdf_file('needs_inspection', 'SLIGHT'), + self.assertEqual(_update_xccdf_file(TestRiskCheck, 'fail', 'SLIGHT'), ResultBasedReturnCodes.NEEDS_INSPECTION) def test_check_inplace_risk_extreme(self): - self.assertEqual(self._update_xccdf_file('fail', 'EXTREME'), + self.assertEqual(_update_xccdf_file(TestRiskCheck, 'fail', 'EXTREME'), ResultBasedReturnCodes.FAIL) def test_fail_return_value(self): - self.assertEqual(self._update_xccdf_file('fail', None), - ResultBasedReturnCodes.FAIL) + self.assertEqual(_update_xccdf_file(TestRiskCheck, 'fail', None), + ResultBasedReturnCodes.ERROR) def test_pass_return_values(self): expected_value = 'pass' - self.assertEqual(self._update_xccdf_file(expected_value, None), + self.assertEqual(_update_xccdf_file(TestRiskCheck, + expected_value, None), ResultBasedReturnCodes.PASS) for risk in self.risks: - self.assertEqual(self._update_xccdf_file(expected_value, risk), - ResultBasedReturnCodes.PASS) + self.assertEqual(_update_xccdf_file(TestRiskCheck, + expected_value, risk), + ResultBasedReturnCodes.ERROR) def test_fixed_return_values(self): expected_value = 'fixed' - self.assertEqual(self._update_xccdf_file(expected_value, None), + self.assertEqual(_update_xccdf_file(TestRiskCheck, + expected_value, None), ResultBasedReturnCodes.FIXED) for risk in self.risks: - self.assertEqual(self._update_xccdf_file(expected_value, risk), - ResultBasedReturnCodes.FIXED) + self.assertEqual(_update_xccdf_file(TestRiskCheck, + expected_value, risk), + ResultBasedReturnCodes.ERROR) def test_informational_return_values(self): expected_value = 'informational' - self.assertEqual(self._update_xccdf_file(expected_value, None), + self.assertEqual(_update_xccdf_file(TestRiskCheck, + expected_value, None), ResultBasedReturnCodes.INFORMATIONAL) for risk in self.risks: - self.assertEqual(self._update_xccdf_file(expected_value, risk), - ResultBasedReturnCodes.INFORMATIONAL) + self.assertEqual(_update_xccdf_file(TestRiskCheck, + expected_value, risk), + ResultBasedReturnCodes.ERROR) def test_not_applicable_return_values(self): - expected_value = 'not_applicable' - self.assertEqual(self._update_xccdf_file(expected_value, None), + expected_value = 'notapplicable' + self.assertEqual(_update_xccdf_file(TestRiskCheck, + expected_value, None), ResultBasedReturnCodes.NOT_ALL) for risk in self.risks: - self.assertEqual(self._update_xccdf_file(expected_value, risk), - ResultBasedReturnCodes.NOT_ALL) + self.assertEqual(_update_xccdf_file(TestRiskCheck, + expected_value, risk), + ResultBasedReturnCodes.ERROR) def test_error_return_values(self): expected_value = 'error' - self.assertEqual(self._update_xccdf_file(expected_value, None), + self.assertEqual(_update_xccdf_file(TestRiskCheck, + expected_value, None), ResultBasedReturnCodes.ERROR) for risk in self.risks: - self.assertEqual(self._update_xccdf_file(expected_value, risk), + self.assertEqual(_update_xccdf_file(TestRiskCheck, + expected_value, risk), ResultBasedReturnCodes.ERROR) class TestCombinedRiskCheck(base.TestCase): - risks = ['SLIGHT', 'MEDIUM', 'HIGH', 'EXTREME'] - - def _copy_xccdf_file(self, update_text=None, update_return_values=None): + @staticmethod + def _copy_xccdf_file(update_return_values=None, update_text=None): temp_dir = tempfile.mkdtemp() - xccdf_file = os.path.join(os.getcwd(), 'tests', 'generated_results', 'inplace_combined_risk_test.xml') + xccdf_file = os.path.join(os.getcwd(), 'tests', 'generated_results', + 'inplace_combined_risk_test.xml') temp_file = os.path.join(temp_dir, 'all-xccdf.xml') shutil.copyfile(xccdf_file, temp_file) - content = FileHelper.get_file_content(temp_file, 'rb', decode_flag=False) + content = FileHelper.get_file_content(temp_file, 'rb', + decode_flag=False) if update_text: if update_text[0] is not None: - new_text = b'preupg.risk.%s: Test %s Inplace risk' % (update_text[0], update_text[0]) + new_text = b'preupg.risk.%s: Test %s Inplace risk' % ( + update_text[0], update_text[0]) if update_text is not None: content = content.replace(b'INPLACE_TAG1', new_text) else: content = content.replace(b'INPLACE_TAG1', "") if update_text[1] is not None: - new_text = b'preupg.risk.%s: Test %s Inplace risk' % (update_text[1], update_text[1]) + new_text = b'preupg.risk.%s: Test %s Inplace risk' % ( + update_text[1], update_text[1]) if update_text is not None: content = content.replace(b'INPLACE_TAG2', new_text) else: @@ -130,76 +148,82 @@ def _copy_xccdf_file(self, update_text=None, update_return_values=None): FileHelper.write_to_file(temp_file, 'wb', content) return temp_file - def _update_xccdf_file(self, return_value, risk): - temp_file = self._copy_xccdf_file(update_return_values=return_value, - update_text=risk) - return_value = XccdfHelper.check_inplace_risk(os.path.join(os.path.dirname(temp_file), 'all-xccdf.xml'), 0) - shutil.rmtree(os.path.dirname(temp_file)) - return return_value - def test_error_pass(self): - self.assertEqual(self._update_xccdf_file(['error', 'pass'], - [None, None]), + self.assertEqual(_update_xccdf_file(TestCombinedRiskCheck, + ['error', 'pass'], + [None, None]), ResultBasedReturnCodes.ERROR) def test_error_failed(self): - self.assertEqual(self._update_xccdf_file(['error', 'fail'], - [None, None]), + self.assertEqual(_update_xccdf_file(TestCombinedRiskCheck, + ['error', 'fail'], + [None, None]), ResultBasedReturnCodes.ERROR) def test_error_informational(self): - self.assertEqual(self._update_xccdf_file(['error', 'informational'], - [None, None]), + self.assertEqual(_update_xccdf_file(TestCombinedRiskCheck, + ['error', 'informational'], + [None, None]), ResultBasedReturnCodes.ERROR) def test_needs_inspection_pass(self): - self.assertEqual(self._update_xccdf_file(['needs_inspection', 'pass'], - [None, None]), + self.assertEqual(_update_xccdf_file(TestCombinedRiskCheck, + ['needs_inspection', 'pass'], + [None, None]), ResultBasedReturnCodes.NEEDS_INSPECTION) def test_informational_pass(self): - self.assertEqual(self._update_xccdf_file(['informational', 'pass'], - [None, None]), + self.assertEqual(_update_xccdf_file(TestCombinedRiskCheck, + ['informational', 'pass'], + [None, None]), ResultBasedReturnCodes.INFORMATIONAL) def test_fixed_informational(self): - self.assertEqual(self._update_xccdf_file(['fixed', 'informational'], - [None, None]), + self.assertEqual(_update_xccdf_file(TestCombinedRiskCheck, + ['fixed', 'informational'], + [None, None]), ResultBasedReturnCodes.FIXED) def test_fixed_pass(self): - self.assertEqual(self._update_xccdf_file(['fixed', 'pass'], - [None, None]), + self.assertEqual(_update_xccdf_file(TestCombinedRiskCheck, + ['fixed', 'pass'], + [None, None]), ResultBasedReturnCodes.FIXED) def test_pass_pass(self): - self.assertEqual(self._update_xccdf_file(['pass', 'pass'], - [None, None]), + self.assertEqual(_update_xccdf_file(TestCombinedRiskCheck, + ['pass', 'pass'], + [None, None]), ResultBasedReturnCodes.PASS) def test_needs_action_failed(self): - self.assertEqual(self._update_xccdf_file(['needs_action', 'fail'], - ['HIGH', 'EXTREME']), + self.assertEqual(_update_xccdf_file(TestCombinedRiskCheck, + ['needs_action', 'fail'], + ['HIGH', 'EXTREME']), ResultBasedReturnCodes.FAIL) def test_fixed_failed(self): - self.assertEqual(self._update_xccdf_file(['fixed', 'fail'], - [None, 'EXTREME']), + self.assertEqual(_update_xccdf_file(TestCombinedRiskCheck, + ['fixed', 'fail'], + [None, 'EXTREME']), ResultBasedReturnCodes.FAIL) def test_fixed_failed_none(self): - self.assertEqual(self._update_xccdf_file(['fixed', 'fail'], - [None, None]), - ResultBasedReturnCodes.FAIL) + self.assertEqual(_update_xccdf_file(TestCombinedRiskCheck, + ['fixed', 'fail'], + [None, None]), + ResultBasedReturnCodes.ERROR) def test_fixed_information_risk(self): - self.assertEqual(self._update_xccdf_file(['fixed', 'informational'], - [None, 'HIGH']), - ResultBasedReturnCodes.FIXED) + self.assertEqual(_update_xccdf_file(TestCombinedRiskCheck, + ['fixed', 'informational'], + [None, 'HIGH']), + ResultBasedReturnCodes.ERROR) def test_not_applicable_pass(self): - self.assertEqual(self._update_xccdf_file(['not_applicable', 'pass'], - [None, None]), + self.assertEqual(_update_xccdf_file(TestCombinedRiskCheck, + ['notapplicable', 'pass'], + [None, None]), ResultBasedReturnCodes.NOT_ALL) diff --git a/tests/test_preupg_diff.py b/tests/test_preupg_diff.py index d9a4dc4..4e2708c 100644 --- a/tests/test_preupg_diff.py +++ b/tests/test_preupg_diff.py @@ -43,7 +43,7 @@ def test_xml_on_input(self): preupg_diff.run() - self.assertEqual(preupg_diff.print_difference_status.num_new_rules, 2) + self.assertEqual(preupg_diff.print_difference_status.num_new_rules, 1) self.assertEqual(preupg_diff.print_difference_status.num_diff_rules, 1) class stringify_children_mock(base.MockFunction): @@ -57,9 +57,9 @@ def test_stringify_solution_text(self): "generated_results", "inplace_risk_test.xml")) self.assertEqual(preupg_diff.stringify_children.children_as_str, - 'str1
' - 'str2') + 'solution') def suite():