def test_destructive_mapping_control_to_existing_audit( self, new_program_rest, new_audit_rest, new_control_rest, selenium ): """Check if Control can be mapped to existing Audit and mapping between Control and Program of this Audit automatically created. Preconditions: - Audit and program, and different control created via REST API """ # 'actual_controls': created_at, updated_at, custom_attributes (None) expected_control = Representation.extract_objs_wo_excluded_attrs( [new_control_rest.repr_ui()], *Representation.tree_view_attrs_to_exclude)[0] controls_ui_service = webui_service.ControlsService(selenium) controls_ui_service.map_objs_via_tree_view( src_obj=new_audit_rest, dest_objs=[new_control_rest]) actual_controls_count_in_tab_audit = ( controls_ui_service.get_count_objs_from_tab(src_obj=new_audit_rest)) actual_controls_in_audit = ( controls_ui_service.get_list_objs_from_tree_view( src_obj=new_audit_rest)) actual_controls_count_in_tab_program = ( controls_ui_service.get_count_objs_from_tab(src_obj=new_program_rest)) actual_controls_in_program = ( controls_ui_service.get_list_objs_from_tree_view( src_obj=new_program_rest)) assert (len([expected_control]) == actual_controls_count_in_tab_audit == actual_controls_count_in_tab_program) assert ([expected_control] == actual_controls_in_audit == actual_controls_in_program), ( messages.AssertionMessages.format_err_msg_equal( messages.AssertionMessages.format_err_msg_equal( [expected_control], actual_controls_in_audit), messages.AssertionMessages.format_err_msg_equal( [expected_control], actual_controls_in_program)))
def _check_assessments_filtration(assessment, cavs, operator, audit, selenium): """Check that filtration of assessments works.""" # pylint: disable=too-many-locals cads = [Representation.repr_dict_to_obj(cad) for cad in assessment.custom_attribute_definitions] filter_exprs = FilterUtils().get_filter_exprs_by_cavs( cads, cavs, operator) assessment = Representation.extract_objs_wo_excluded_attrs( [assessment.repr_ui()], *(Representation.tree_view_attrs_to_exclude + ( "audit", "assessment_type", "modified_by")) )[0] expected_results = [{"filter": filter_expr, "objs": [assessment]} for filter_expr in filter_exprs] actual_results = [] for filter_expr in filter_exprs: result = { "filter": filter_expr, "objs": webui_service.AssessmentsService( selenium).filter_and_get_list_objs_from_tree_view(audit, filter_expr) } actual_results.append(result) error_message = messages.AssertionMessages.format_err_msg_equal( [{exp_res["filter"]: [exp_obj.title for exp_obj in exp_res["objs"]]} for exp_res in expected_results], [{act_res["filter"]: [act_obj.title for act_obj in act_res["objs"]]} for act_res in actual_results] ) + messages.AssertionMessages.format_err_msg_equal( StringMethods.convert_list_elements_to_list( [exp_res["objs"] for exp_res in expected_results]), StringMethods.convert_list_elements_to_list( [act_res["objs"] for act_res in actual_results])) assert expected_results == actual_results, error_message
def _check_assessments_filtration(assessment, cavs, operator, audit, selenium): """Check that filtration of assessments works.""" cads = [Representation.repr_dict_to_obj(cad) for cad in assessment.custom_attribute_definitions] filter_exprs = FilterUtils().get_filter_exprs_by_cavs( cads, cavs, operator) assessment = Representation.extract_objs_wo_excluded_attrs( [assessment.repr_ui()], *(Representation.tree_view_attrs_to_exclude + ( "audit", "assessment_type", "modified_by")) )[0] expected_results = [{"filter": filter_expr, "objs": [assessment]} for filter_expr in filter_exprs] actual_results = [] for filter_expr in filter_exprs: result = { "filter": filter_expr, "objs": webui_service.AssessmentsService(selenium) .filter_and_get_list_objs_from_tree_view(audit, filter_expr) } actual_results.append(result) error_message = messages.AssertionMessages.format_err_msg_equal( [{exp_res["filter"]: [exp_obj.title for exp_obj in exp_res["objs"]]} for exp_res in expected_results], [{act_res["filter"]: [act_obj.title for act_obj in act_res["objs"]]} for act_res in actual_results] ) + messages.AssertionMessages.format_err_msg_equal( StringMethods.convert_list_elements_to_list( [exp_res["objs"] for exp_res in expected_results]), StringMethods.convert_list_elements_to_list( [act_res["objs"] for act_res in actual_results])) assert expected_results == actual_results, error_message
def general_contain_assert(expected_obj, actual_objs, *exclude_attrs): """Perform general contain assert for deepcopy converted expected object and actual objects according to '*exclude_attrs' tuple of excluding attributes' names (compare objects' collections w/ attributes' values set to None). """ expected_obj_wo_excluded_attrs = ( Representation.extract_objs_wo_excluded_attrs( help_utils.convert_to_list(expected_obj), *exclude_attrs)[0]) actual_objs_wo_excluded_attrs = ( Representation.extract_objs_wo_excluded_attrs( help_utils.convert_to_list(actual_objs), *exclude_attrs)) assert (expected_obj_wo_excluded_attrs in actual_objs_wo_excluded_attrs), ( messages.AssertionMessages.format_err_msg_contains( expected_obj_wo_excluded_attrs, actual_objs_wo_excluded_attrs))
def test_destructive_mapping_control_to_existing_audit( self, program, audit, control, selenium): """Check if Control can be mapped to existing Audit and mapping between Control and Program of this Audit automatically created. Preconditions: - Audit and program, and different control created via REST API """ # 'actual_controls': created_at, updated_at, custom_attributes (None) expected_control = Representation.extract_objs_wo_excluded_attrs( [control.repr_ui()], *Representation.tree_view_attrs_to_exclude)[0] controls_ui_service = webui_service.ControlsService(selenium) controls_ui_service.map_objs_via_tree_view(src_obj=audit, dest_objs=[control]) actual_controls_count_in_tab_audit = ( controls_ui_service.get_count_objs_from_tab(src_obj=audit)) actual_controls_in_audit = ( controls_ui_service.get_list_objs_from_tree_view(src_obj=audit)) actual_controls_count_in_tab_program = ( controls_ui_service.get_count_objs_from_tab(src_obj=program)) actual_controls_in_program = ( controls_ui_service.get_list_objs_from_tree_view(src_obj=program)) assert (len([expected_control]) == actual_controls_count_in_tab_audit == actual_controls_count_in_tab_program) assert ([expected_control] == actual_controls_in_audit == actual_controls_in_program), ( messages.AssertionMessages.format_err_msg_equal( messages.AssertionMessages.format_err_msg_equal( [expected_control], actual_controls_in_audit), messages.AssertionMessages.format_err_msg_equal( [expected_control], actual_controls_in_program)))
def general_contain_assert(expected_obj, actual_objs, *exclude_attrs): """Perform general contain assert for deepcopy converted expected object and actual objects according to '*exclude_attrs' tuple of excluding attributes' names (compare objects' collections w/ attributes' values set to None). """ expected_obj_wo_excluded_attrs = ( Representation.extract_objs_wo_excluded_attrs( help_utils.convert_to_list(expected_obj), *exclude_attrs)[0]) actual_objs_wo_excluded_attrs = ( Representation.extract_objs_wo_excluded_attrs( help_utils.convert_to_list(actual_objs), *exclude_attrs)) assert (expected_obj_wo_excluded_attrs in actual_objs_wo_excluded_attrs), ( messages.AssertionMessages.format_err_msg_contains( expected_obj_wo_excluded_attrs, actual_objs_wo_excluded_attrs))
def test_asmts_gcas_filtering(self, new_program_rest, new_audit_rest, new_cas_for_assessments_rest, new_assessments_rest, operator, selenium): """Test for checking filtering of Assessment by Custom Attributes in audit scope. Preconditions: - Program created via REST API. - Audit created via REST API. - Assessments created via REST API. - Global Custom Attributes for Assessment created via REST API. - Set revers value of GCA with Checkbox type for second Assessment. """ # pylint: disable=too-many-locals custom_attr_values = ( CustomAttributeDefinitionsFactory().generate_ca_values( list_ca_def_objs=new_cas_for_assessments_rest)) checkbox_id = Representation.filter_objs_by_attrs( objs=new_cas_for_assessments_rest, attribute_type=element.AdminWidgetCustomAttributes.CHECKBOX).id expected_asmt = new_assessments_rest[0] asmts_rest_service = rest_service.AssessmentsService() asmts_rest_service.update_obj(obj=expected_asmt, custom_attributes=custom_attr_values) asmts_rest_service.update_obj(obj=new_assessments_rest[1], custom_attributes={ checkbox_id: not custom_attr_values[checkbox_id] }) filter_exprs = FilterUtils().get_filter_exprs_by_cas( expected_asmt.custom_attribute_definitions, custom_attr_values, operator) # 'expected_asmt': updated_at (outdated) # 'actual_asmts': created_at, updated_at, custom_attributes, audit # assessment_type, modified_by (None) expected_asmt = Representation.extract_objs_wo_excluded_attrs( [expected_asmt.repr_ui()], *(Representation.tree_view_attrs_to_exclude + ("audit", "assessment_type", "modified_by")))[0] expected_results = [{ "filter": filter_expr, "objs": [expected_asmt] } for filter_expr in filter_exprs] actual_results = [{ "filter": filter_expr, "objs": webui_service.AssessmentsService( selenium).filter_and_get_list_objs_from_tree_view( new_audit_rest, filter_expr) } for filter_expr in filter_exprs] assert expected_results == actual_results, ( messages.AssertionMessages.format_err_msg_equal([{ exp_res["filter"]: [exp_obj.title for exp_obj in exp_res["objs"]] } for exp_res in expected_results], [{ act_res["filter"]: [act_obj.title for act_obj in act_res["objs"]] } for act_res in actual_results]) + messages.AssertionMessages.format_err_msg_equal( StringMethods.convert_list_elements_to_list( [exp_res["objs"] for exp_res in expected_results]), StringMethods.convert_list_elements_to_list( [act_res["objs"] for act_res in actual_results])))