Ejemplo n.º 1
0
 def test_asmts_generation(self, new_program_rest, new_controls_rest,
                           map_new_program_rest_to_new_controls_rest,
                           new_audit_rest, dynamic_new_assessment_template,
                           selenium):
     """Check if Assessments can be generated from Audit page via Assessments
 widget using Assessment template and Controls.
 Preconditions:
 - Program, Controls created via REST API.
 - Controls mapped to Program via REST API.
 - Audit created under Program via REST API.
 - Assessment Template with CAs created under Audit via REST API.
 """
     expected_asmts = (AssessmentsFactory().generate(
         objs_under_asmt=new_controls_rest,
         audit=new_audit_rest,
         asmt_tmpl=dynamic_new_assessment_template))
     (webui_service.AssessmentsService(
         selenium).generate_objs_via_tree_view(
             src_obj=new_audit_rest,
             objs_under_asmt=new_controls_rest,
             asmt_tmpl_obj=dynamic_new_assessment_template))
     actual_asmts_tab_count = (
         webui_service.AssessmentsService(selenium).get_count_objs_from_tab(
             src_obj=new_audit_rest))
     assert len(expected_asmts) == actual_asmts_tab_count
     actual_asmts = [
         webui_service.AssessmentsService(selenium).get_obj_from_info_panel(
             src_obj=new_audit_rest, obj=expected_asmt)
         for expected_asmt in expected_asmts
     ]
     assert expected_asmts == actual_asmts, (messages.ERR_MSG_FORMAT.format(
         expected_asmts, actual_asmts))
Ejemplo n.º 2
0
 def test_add_comment_to_asmt_via_info_panel(self, new_program_rest,
                                             new_audit_rest,
                                             new_assessment_rest, selenium):
     """Check via UI of possibility to correctly add comment to Assessment via
 Info Panel.
 Preconditions:
 - Program created via REST API.
 - Audit created under Program via REST API.
 - Assessment created under Audit via REST API.
 Test parameters: None
 """
     expected_asmt = new_assessment_rest
     expected_asmt_comments = [
         entities_factory.CommentsFactory().create().repr_ui()
     ]
     # due to 'actual_asmt.updated_at = None'
     (expected_asmt.update_attrs(comments=expected_asmt_comments,
                                 updated_at=None).repr_ui())
     assessments_service = webui_service.AssessmentsService(selenium)
     asmt_comments_panel = assessments_service.add_comments(
         src_obj=new_audit_rest,
         obj=expected_asmt,
         comment_objs=expected_asmt_comments)
     assert asmt_comments_panel.is_input_empty is True
     actual_asmt = (webui_service.AssessmentsService(
         selenium).get_list_objs_from_info_panels(
             src_obj=new_audit_rest,
             objs=expected_asmt).update_attrs(comments={"created_at": None},
                                              is_replace_dicts_values=True))
     assert expected_asmt == actual_asmt, (
         messages.AssertionMessages.format_err_msg_equal(
             expected_asmt, actual_asmt))
Ejemplo n.º 3
0
 def test_asmt_creation(self, new_program_rest, new_audit_rest, selenium):
     """Check if Assessment can be created from Audit page via
 Assessments widget.
 Preconditions:
 - Audit created under Program via REST API.
 """
     expected_asmt = (
         entities_factory.AssessmentsFactory().create().repr_ui())
     (webui_service.AssessmentsService(selenium).create_obj_via_tree_view(
         src_obj=new_audit_rest, obj=expected_asmt))
     actual_asmts_tab_count = (
         webui_service.AssessmentsService(selenium).get_count_objs_from_tab(
             src_obj=new_audit_rest))
     assert len([expected_asmt]) == actual_asmts_tab_count
     actual_asmts = (webui_service.AssessmentsService(
         selenium).get_list_objs_from_tree_view(src_obj=new_audit_rest))
     # due to 'expected_asmt.updated_at = None'
     actual_asmts = [
         actual_asmt.update_attrs(updated_at=None)
         for actual_asmt in actual_asmts
     ]
     assert [
         expected_asmt
     ] == actual_asmts, (messages.AssertionMessages.format_err_msg_equal(
         [expected_asmt], actual_asmts))
Ejemplo n.º 4
0
 def test_asmt_creation_with_mapping(
     self, new_program_rest, dynamic_objects, dynamic_relationships,
     new_audit_rest, selenium
 ):
   """Check if Assessment can be created with mapped snapshot via
   Modal Create on Assessments TreeView. Additional check existing of
   mapped objs Titles on Modal Create.
   Preconditions:
   - Program, dynamic_objects created via REST API.
   - dynamic_objects mapped to Program via REST API.
   - Audit created under Program via REST API.
   Test parameters:
   - 'dynamic_objects'.
   - 'dynamic_relationships'.
   """
   expected_asmt = (
       entities_factory.AssessmentsFactory().create(
           mapped_objects=[dynamic_objects]))
   expected_titles = [dynamic_objects.title]
   asmts_ui_service = webui_service.AssessmentsService(selenium)
   actual_titles = (
       asmts_ui_service.create_obj_and_get_mapped_titles_from_modal(
           src_obj=new_audit_rest, obj=expected_asmt))
   assert expected_titles == actual_titles
   actual_asmt = asmts_ui_service.get_list_objs_from_info_panels(
       src_obj=new_audit_rest, objs=expected_asmt)
   expected_asmt = expected_asmt.repr_ui()
   # 'expected_asmt': custom_attributes (None) *factory
   self.general_equal_assert(
       expected_asmt, actual_asmt, "custom_attributes")
Ejemplo n.º 5
0
 def test_add_comment_to_asmt_via_info_panel(
     self, new_program_rest, new_audit_rest, new_assessment_rest, selenium
 ):
   """Check via UI of possibility to correctly add comment to Assessment via
   Info Panel.
   Preconditions:
   - Program created via REST API.
   - Audit created under Program via REST API.
   - Assessment created under Audit via REST API.
   Test parameters: None
   """
   expected_asmt_comments = [entities_factory.CommentsFactory().create()]
   expected_asmt = new_assessment_rest
   asmts_ui_service = webui_service.AssessmentsService(selenium)
   asmt_comments_panel = asmts_ui_service.add_comments(
       src_obj=new_audit_rest, obj=expected_asmt,
       comment_objs=expected_asmt_comments)
   assert asmt_comments_panel.is_input_empty is True
   # 'expected_asmt_comments': created_at (None) *factory
   expected_asmt_comments = [expected_comment.update_attrs(
       created_at=self.info_service.get_comment_obj(
           paren_obj=expected_asmt,
           comment_description=expected_comment.description).created_at
   ).repr_ui() for expected_comment in expected_asmt_comments]
   # 'expected_asmt': updated_at (outdated)
   expected_asmt = expected_asmt.update_attrs(
       updated_at=self.info_service.get_obj(obj=expected_asmt).updated_at,
       comments=expected_asmt_comments).repr_ui()
   actual_asmt = asmts_ui_service.get_obj_from_info_page(obj=expected_asmt)
   self.general_equal_assert(expected_asmt, actual_asmt, "comments")
   self.xfail_equal_assert(
       expected_asmt, actual_asmt, "Issue in app GGRC-3094", "comments")
Ejemplo n.º 6
0
 def test_add_comment_to_asmt_via_info_panel(self, program, audit,
                                             assessment, selenium):
     """Check via UI of possibility to correctly add comment to Assessment via
 Info Panel.
 Preconditions:
 - Program created via REST API.
 - Audit created under Program via REST API.
 - Assessment created under Audit via REST API.
 Test parameters: None
 """
     expected_asmt_comments = [entities_factory.CommentsFactory().create()]
     expected_asmt = assessment
     asmts_ui_service = webui_service.AssessmentsService(selenium)
     asmt_comments_panel = asmts_ui_service.add_comments(
         src_obj=audit,
         obj=expected_asmt,
         comment_objs=expected_asmt_comments)
     assert asmt_comments_panel.comment_input.is_empty is True
     # 'expected_asmt_comments': created_at (None) *factory
     expected_asmt_comments = [
         expected_comment.update_attrs(created_at=self.info_service(
         ).get_comment_obj(paren_obj=expected_asmt,
                           comment_description=expected_comment.description
                           ).created_at).repr_ui()
         for expected_comment in expected_asmt_comments
     ]
     # 'expected_asmt': updated_at (outdated)
     expected_asmt.update_attrs(updated_at=self.info_service().get_obj(
         obj=expected_asmt).updated_at,
                                comments=expected_asmt_comments,
                                status=object_states.IN_PROGRESS).repr_ui()
     actual_asmt = asmts_ui_service.get_obj_from_info_page(
         obj=expected_asmt)
     # 'actual_asmt': audit (None)
     self.general_equal_assert(expected_asmt, actual_asmt, "audit")
Ejemplo n.º 7
0
 def test_asmt_from_template_w_dropdown_url(self, program,
                                            control_mapped_to_program,
                                            audit, selenium):
     """Check evidence url could be filled in
 via Assessment dropdown.
 Objects structure:
 Program.
 -> Control mapped to program.
 -> Audit.
   -> Asmt template with evidence url dropdown.
     -> Autogenerated asmt.
 """
     asmt_template_w_dropdown = rest_facade.create_asmt_template_w_dropdown(
         audit, ["url"])
     expected_asmt = rest_facade.create_asmt_from_template_rest(
         audit, control_mapped_to_program, asmt_template_w_dropdown)
     dropdown = CustomAttributeDefinitionsFactory().create(
         **expected_asmt.cads_from_template()[0])
     asmt_service = webui_service.AssessmentsService(selenium)
     exp_url = StringMethods.random_string(
         size=StringMethods.RANDOM_STR_LENGTH)
     expected_asmt = asmt_service.choose_and_fill_dropdown_lca(
         expected_asmt, dropdown, url=exp_url)
     expected_asmt_urls = [exp_url]
     expected_asmt.update_attrs(
         updated_at=self.info_service().get_obj(
             obj=expected_asmt).updated_at,
         evidence_urls=expected_asmt_urls,
         mapped_objects=[control_mapped_to_program.title],
         status=object_states.IN_PROGRESS).repr_ui()
     actual_asmt = asmt_service.get_obj_from_info_page(obj=expected_asmt)
     self.general_equal_assert(expected_asmt, actual_asmt, "audit")
Ejemplo n.º 8
0
 def test_fill_asmt_gcas_in_popup(
     self, program, gcads_for_asmt, obj, obj_role, selenium
 ):
   """Test for checking population of GCA from UI Edit popup.
   Preconditions:
   - Program created via REST API.
   - Audit created via REST API.
   - Global Custom Attributes for Assessment created via REST API.
   - Assessment created via REST API.
   """
   user = rest_facade.create_user_with_role(roles.CREATOR)
   obj_args = {obj_role: [user]}
   audit = rest_facade.create_audit(
       program, **obj_args if obj == "audit" else {})
   asmt = rest_facade.create_asmt(
       audit, **obj_args if obj == "assessment" else {})
   users.set_current_user(user)
   custom_attributes = CustomAttributeDefinitionsFactory(
   ).generate_custom_attributes(gcads_for_asmt)
   asmts_ui_service = webui_service.AssessmentsService(selenium)
   asmts_ui_service.fill_obj_gcas_in_popup(asmt, custom_attributes)
   act_asmt = rest_facade.get_obj(asmt)
   asmt.update_attrs(
       updated_at=act_asmt.updated_at, status=act_asmt.status,
       custom_attributes=custom_attributes)
   _assert_asmt(asmts_ui_service, asmt)
Ejemplo n.º 9
0
 def test_fill_asmt_lcas(self, control_mapped_to_program, audit,
                         attr_type, selenium):
   """
   1. Create a program via REST
   2. Create a control within a program via REST
   3. Create an audit within a program via REST
   4. Create an assessment template with each type of
    local custom attribute within audit via REST
   5. Generate an assessment from assessment template and control
    snapshot via REST
   6. Open this assessment in UI
   7. Fill local custom attribute
   8. Reload page and check that object built from the page looks as expected
   """
   asmt_template = rest_facade.create_asmt_template(
       audit=audit, assessment_type="Control", cad_type=attr_type)
   cas = CustomAttributeDefinitionsFactory().generate_custom_attributes([
       Representation.repr_dict_to_obj(cad)
       for cad in asmt_template.custom_attribute_definitions])
   exp_asmt = rest_facade.create_asmt_from_template(
       audit, asmt_template, control_mapped_to_program)
   asmts_ui_service = webui_service.AssessmentsService(selenium)
   asmts_ui_service.fill_asmt_lcas(exp_asmt, cas)
   selenium.refresh()
   act_asmt = self.info_service().get_obj(obj=exp_asmt)
   exp_asmt.update_attrs(updated_at=act_asmt.updated_at,
                         status=unicode(object_states.IN_PROGRESS),
                         mapped_objects=[control_mapped_to_program],
                         custom_attributes=cas)
   _assert_asmt(asmts_ui_service, exp_asmt)
Ejemplo n.º 10
0
 def test_asmts_gcas_filtering(
     self, new_program_rest, new_audit_rest, new_cas_for_assessments_rest,
     new_assessments_rest, selenium, operator
 ):
   """Test for checking filtering of Assessment by Custom Attributes in
   audit scope.
   Preconditions:
   - Program created via REST API.
   - Audit created via REST API.
   - Assessment created via REST API.
   - Global Custom Attributes for Assessment created via REST API.
   """
   custom_attr_values = (
       CustomAttributeDefinitionsFactory().generate_ca_values(
           list_ca_def_objs=new_cas_for_assessments_rest))
   expected_asmt = new_assessments_rest[0]
   (rest_service.AssessmentsService().update_obj(
       obj=expected_asmt, custom_attributes=custom_attr_values))
   filter_exprs = FilterUtils().get_filter_exprs_by_cas(
       expected_asmt.custom_attribute_definitions, custom_attr_values,
       operator)
   # due to 'actual_asmt.custom_attributes = {None: None}'
   expected_asmt = expected_asmt.repr_ui().update_attrs(
       custom_attributes={None: None}, status=AssessmentStates.IN_PROGRESS)
   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(expected_results,
                                                       actual_results))
Ejemplo n.º 11
0
 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
Ejemplo n.º 12
0
 def test_asmts_generation(self, program, controls_mapped_to_program, audit,
                           obj, selenium):
     """Check if Assessments can be generated from Audit page via Assessments
 widget using Assessment template and Controls.
 Preconditions:
 - Program, Controls created via REST API.
 - Controls mapped to Program via REST API.
 - Audit created under Program via REST API.
 Test parameters:
 - 'dynamic_objects'.
 """
     expected_asmts = (entities_factory.AssessmentsFactory().generate(
         mapped_objects=controls_mapped_to_program,
         audit=audit,
         asmt_tmpl=obj))
     expected_asmts = [
         expected_asmt.repr_ui() for expected_asmt in expected_asmts
     ]
     asmts_ui_service = webui_service.AssessmentsService(selenium)
     asmts_ui_service.generate_objs_via_tree_view(
         src_obj=audit,
         objs_under_asmt=controls_mapped_to_program,
         asmt_tmpl_obj=obj)
     actual_asmts_tab_count = asmts_ui_service.get_count_objs_from_tab(
         src_obj=audit)
     assert len(expected_asmts) == actual_asmts_tab_count
     actual_asmts = asmts_ui_service.get_list_objs_from_info_panels(
         src_obj=audit, objs=expected_asmts)
     # 'expected_asmt': slug, custom_attributes (None) *factory
     # 'actual_asmt': audit (None)
     self.general_equal_assert(expected_asmts, actual_asmts, "slug",
                               "custom_attributes", "audit",
                               "custom_attributes")
 def test_check_asmt_state_change(
     self, new_program_rest, new_audit_rest, dynamic_objects_w_factory_params,
     action, expected_final_state, expected_verified, selenium
 ):
   """Check Assessment workflow status change to correct state.
   Preconditions:
   - Program created via REST API.
   - Audit created under Program via REST API.
   - Assessment created and updated under Audit via REST API.
   """
   expected_asmt = dynamic_objects_w_factory_params
   asmts_ui_service = webui_service.AssessmentsService(selenium)
   # UI part of preparing pre-requirements (due to REST doesn't allow it)
   if action in ("verify_assessment", "reject_assessment"):
     getattr(asmts_ui_service, "complete_assessment")(expected_asmt)
   getattr(asmts_ui_service, action)(expected_asmt)
   # 'expected_asmt': updated_at (outdated)
   expected_asmt.update_attrs(
       title=(element.AssessmentInfoWidget.TITLE_EDITED_PART +
              expected_asmt.title if "edit" in action
              else expected_asmt.title),
       status=expected_final_state.title(), verified=expected_verified,
       updated_at=self.info_service().get_obj(
           obj=expected_asmt).updated_at).repr_ui()
   actual_asmt = asmts_ui_service.get_obj_from_info_page(expected_asmt)
   # 'actual_asmt': audit (None)
   self.general_equal_assert(expected_asmt, actual_asmt, "audit")
Ejemplo n.º 14
0
 def test_check_asmt_state_change(
     self, new_program_rest, new_audit_rest, dynamic_objects_w_factory_params,
     action, expected_initial_state, expected_final_state, expected_verified,
     selenium
 ):
   """Check Assessment workflow status change to correct state.
   Preconditions:
   - Program created via REST API.
   - Audit created under Program via REST API.
   - Assessment created and updated under Audit via REST API.
   """
   expected_asmt = dynamic_objects_w_factory_params
   if expected_initial_state:
     (rest_service.AssessmentsService().
      update_obj(expected_asmt, status=expected_initial_state))
   asmts_ui_service = webui_service.AssessmentsService(selenium)
   getattr(asmts_ui_service, action)(expected_asmt)
   # 'expected_asmt': updated_at (outdated)
   expected_asmt = (expected_asmt.update_attrs(
       title=(element.AssessmentInfoWidget.TITLE_EDITED_PART +
              expected_asmt.title if "edit" in action
              else expected_asmt.title),
       status=expected_final_state.title(), verified=expected_verified,
       updated_at=self.info_service.get_obj(
           obj=expected_asmt).updated_at).repr_ui())
   actual_asmt = asmts_ui_service.get_obj_from_info_page(expected_asmt)
   self.general_equal_assert(expected_asmt, actual_asmt)
Ejemplo n.º 15
0
    def test_asmt_from_template_w_date(self, control_mapped_to_program, audit,
                                       selenium):
        """
    1. Create a program via REST
    2. Create a control within a program via REST
    3. Create an audit within a program via REST
    4. Create an assessment template with Date local custom attribute
     within audit via REST
    5. Generate an assessment from assessment template and control
     snapshot via REST
    6. Open this assessment in UI
    7. Fill Date local custom attribute
    8. Reload page and check that object built from the page looks as expected
    """
        cad = CustomAttributeDefinitionsFactory().create(
            is_add_rest_attrs=True,
            attribute_type=AdminWidgetCustomAttributes.DATE)
        assessment_template = _create_asmt_template(audit=audit,
                                                    assessment_type="Control",
                                                    custom_attributes=[cad])
        exp_asmt = rest_facade.create_assessment_from_template(
            audit=audit,
            template=assessment_template,
            control_snapshots=[control_mapped_to_program])
        asmts_ui_service = webui_service.AssessmentsService(selenium)
        asmts_ui_service.open_info_page_of_obj_fill_lca(exp_asmt)

        act_asmt = self.info_service().get_obj(obj=exp_asmt)
        exp_asmt.update_attrs(updated_at=act_asmt.updated_at,
                              status=act_asmt.status)
        _assert_asmt(asmts_ui_service, exp_asmt, True)
Ejemplo n.º 16
0
 def test_map_snapsots_to_asmt_via_edit_modal(
     self, new_program_rest, dynamic_objects, dynamic_relationships,
     new_audit_rest, new_assessment_rest, selenium
 ):
   """Check Assessment can be mapped with snapshot via Modal Edit
   on Assessments Info Page. Additional check existing of mapped obj Titles
   on Modal Edit.
   Preconditions:
   - Program, dynamic_objects created via REST API.
   - dynamic_objects mapped to Program via REST API.
   - Audit created under Program via REST API.
   - Assessment created under audit via REST API.
   Test parameters:
   - 'dynamic_objects'.
   - 'dynamic_relationships'.
   """
   expected_asmt = (new_assessment_rest.update_attrs(
       objects_under_assessment=[dynamic_objects],
       status=AssessmentStates.IN_PROGRESS))
   expected_titles = [dynamic_objects.title]
   asmts_ui_service = webui_service.AssessmentsService(selenium)
   actual_titles = (
       asmts_ui_service.map_objs_and_get_mapped_titles_from_edit_modal(
           expected_asmt, expected_asmt.objects_under_assessment))
   assert expected_titles == actual_titles
   # 'expected_asmt': updated_at (outdated)
   expected_asmt = (
       expected_asmt.update_attrs(updated_at=self.info_service.get_obj(
           obj=expected_asmt).updated_at).repr_ui())
   actual_asmt = asmts_ui_service.get_obj_from_info_page(expected_asmt)
   self.general_equal_assert(expected_asmt, actual_asmt)
Ejemplo n.º 17
0
 def test_asmt_creation(self, new_audit_rest, selenium):
   """Check if Assessment can be created from Audit page via
   Assessments widget.
   Preconditions:
   - Audit created under Program via REST API.
   """
   audit = new_audit_rest[0]
   expected_asmt = AssessmentsFactory().create()
   (webui_service.AssessmentsService(selenium).
    create_via_tree_view(source_obj=audit, asmt_obj=expected_asmt))
   actual_asmts_tab_count = (webui_service.AssessmentsService(selenium).
                             get_count_from_tab(source_obj=audit))
   assert len([expected_asmt]) == actual_asmts_tab_count
   actual_asmts = (webui_service.AssessmentsService(selenium).
                   get_objs_from_tree_view(source_obj=audit))
   assert [expected_asmt] == actual_asmts, (
       messages.ERR_MSG_FORMAT.format([expected_asmt], actual_asmts))
Ejemplo n.º 18
0
 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 = entity.Entity.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 (None)
   expected_asmt = entity.Entity.extract_objs_wo_excluded_attrs(
       [expected_asmt.update_attrs(
           status=AssessmentStates.IN_PROGRESS).repr_ui()],
       *Representation.tree_view_attrs_to_exclude)[0]
   expected_results = [{"filter": filter_expr,
                        "objs": [expected_asmt]}
                       for filter_expr in filter_exprs]
   actual_results = [
       {"filter": filter_expr,
        "objs": entity.Entity.extract_objs_wo_excluded_attrs(
            webui_service.AssessmentsService(
                selenium).filter_and_get_list_objs_from_tree_view(
                new_audit_rest, filter_expr),
            *("updated_at", "custom_attributes"))
        } 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(
           string_utils.convert_list_elements_to_list(
               [exp_res["objs"] for exp_res in expected_results]),
           string_utils.convert_list_elements_to_list(
               [act_res["objs"] for act_res in actual_results])))
Ejemplo n.º 19
0
 def test_mapped_obj_title_in_edit_modal(
     self, program, control_mapped_to_program, audit, assessment, selenium
 ):
   """Test that mapped objects appear in modal after mapping."""
   webui_service.AssessmentsService(selenium).open_info_page_of_obj(
       assessment).three_bbs.select_edit()
   edit_asmt_modal = object_modal.AssessmentModal(selenium)
   edit_asmt_modal.map_objects([control_mapped_to_program])
   actual_titles = edit_asmt_modal.get_mapped_snapshots_titles()
   assert actual_titles == [control_mapped_to_program.title]
Ejemplo n.º 20
0
 def test_asmts_generation(self, new_program_rest, new_controls_rest,
                           map_new_program_rest_to_new_controls_rest,
                           new_audit_rest, dynamic_new_assessment_template,
                           selenium):
     """Check if Assessments can be generated from Audit page via Assessments
 widget using Assessment template and Controls.
 Preconditions:
 - Program, Controls created via REST API.
 - Controls mapped to Program via REST API.
 - Audit created under Program via REST API.
 - Assessment Template with CAs created under Audit via REST API.
 """
     expected_asmts = (entities_factory.AssessmentsFactory().generate(
         objs_under_asmt=new_controls_rest,
         audit=new_audit_rest,
         asmt_tmpl=dynamic_new_assessment_template))
     expected_asmts = [
         expected_asmt.repr_ui() for expected_asmt in expected_asmts
     ]
     (webui_service.AssessmentsService(
         selenium).generate_objs_via_tree_view(
             src_obj=new_audit_rest,
             objs_under_asmt=new_controls_rest,
             asmt_tmpl_obj=dynamic_new_assessment_template))
     actual_asmts_tab_count = (
         webui_service.AssessmentsService(selenium).get_count_objs_from_tab(
             src_obj=new_audit_rest))
     assert len(expected_asmts) == actual_asmts_tab_count
     actual_asmts = (webui_service.AssessmentsService(
         selenium).get_list_objs_from_info_panels(src_obj=new_audit_rest,
                                                  objs=expected_asmts))
     # due to 'expected_asmt.updated_at = None',
     #        'expected_asmt.custom_attributes = {None: None}'
     actual_asmts = [
         actual_asmt.update_attrs(is_replace_attrs=True,
                                  slug=None).update_attrs(
                                      is_replace_attrs=False,
                                      custom_attributes={None: None})
         for actual_asmt in actual_asmts
     ]
     assert expected_asmts == actual_asmts, (
         messages.AssertionMessages.format_err_msg_equal(
             expected_asmts, actual_asmts))
Ejemplo n.º 21
0
 def _assert_asmt_with_related_asmts(self, checked_asmt,
                                     related_asmts_titles, selenium):
     """Assert that assessment `checked_asmt` on UI is the same as in
 `checked_asmt`.
 Also assert that `Asessment title`, `Related objects`, `Audit title` on
 "Related Assessments" tab are the same as in `related_asmts_titles`."""
     asmts_ui_service = webui_service.AssessmentsService(selenium)
     _assert_asmt(asmts_ui_service, checked_asmt)
     assert asmts_ui_service.get_asmt_related_asmts_titles(checked_asmt) == \
         related_asmts_titles
Ejemplo n.º 22
0
 def test_mapped_objs_titles_in_create_modal(self, program,
                                             control_mapped_to_program,
                                             audit, selenium):
     """Test that mapped objects appear in modal after mapping."""
     webui_service.AssessmentsService(selenium).open_widget_of_mapped_objs(
         audit).tree_view.open_create()
     create_asmt_modal = object_modal.AssessmentModal(selenium)
     create_asmt_modal.map_objects([control_mapped_to_program])
     actual_titles = create_asmt_modal.get_mapped_snapshots_titles()
     assert actual_titles == [control_mapped_to_program.title]
Ejemplo n.º 23
0
 def test_asmt_related_asmts(self, new_programs_rest, new_control_rest,
                             map_new_control_rest_to_new_programs_rest,
                             new_audits_rest, new_assessments_rest,
                             selenium):
     """Test for checking Related Assessments. Map two Assessments to one
 snapshot of control. And check second Assessment contains in "Related
 Assessments" Tab of first Assessment. 3 Titles will be compared:
 Assessment, Audit of Assessment, generic Control
 """
     expected_titles = [(new_assessments_rest[1].title,
                         new_control_rest.title, new_audits_rest[1].title)]
     asmt_service = webui_service.AssessmentsService(selenium)
     asmt_service.map_objs_via_tree_view_item(src_obj=new_audits_rest[0],
                                              dest_objs=[new_control_rest])
     asmt_service.map_objs_via_tree_view_item(src_obj=new_audits_rest[1],
                                              dest_objs=[new_control_rest])
     related_asmts_objs = (webui_service.AssessmentsService(
         selenium).get_related_asmts_titles(obj=new_assessments_rest[0]))
     assert expected_titles == related_asmts_objs
Ejemplo n.º 24
0
 def _assert_asmt_with_related_issues(self, checked_asmt,
                                      related_issues_titles, selenium):
     """Assert that assessment `checked_asmt` on UI is the same as in
 `checked_asmt`.
 Also assert that `Issues title` on "Related Issues" tab are
 the same as in `related_issues_titles`."""
     asmts_ui_service = webui_service.AssessmentsService(selenium)
     _assert_asmt(asmts_ui_service, checked_asmt)
     assert asmts_ui_service.get_related_issues_titles(
         checked_asmt) == related_issues_titles
Ejemplo n.º 25
0
def soft_assert_verified_state_after_bulk_verify(page, src_obj, soft_assert):
  """Soft assert that assessments statuses actually have been updated after
  bulk verify has been completed."""
  bulk_verify_all(page)
  # reload page to see actual assessments state
  browsers.get_browser().refresh()
  asmts_from_ui = (webui_service.AssessmentsService()
                   .get_list_objs_from_tree_view(src_obj))
  soft_assert.expect(
      all([asmt.status == object_states.COMPLETED and asmt.verified is True
           for asmt in asmts_from_ui]),
      "All assessments should be verified and have 'Completed' state.")
Ejemplo n.º 26
0
 def test_raise_issue(self, program, audit, assessment, selenium):
     """Test for checking raising Issues in Related Issues Tab. Open
 Related Issues tab on Assessments Info page. Raise Issue with pre-defined
 attributes via "raise issue" button. Compare expected Issue title and
 actual issue_titles.
 """
     expected_issue = (entities_factory.IssuesFactory().create().repr_ui())
     asmts_ui_service = webui_service.AssessmentsService(selenium)
     asmts_ui_service.raise_issue(assessment, expected_issue)
     related_issues_titles = asmts_ui_service.get_related_issues_titles(
         obj=assessment)
     assert related_issues_titles == [expected_issue.title]
Ejemplo n.º 27
0
 def test_non_clonable_objs_donot_move_to_cloned_audit(
         self, create_and_clone_audit, selenium):
     """Check via UI that non clonable objects
 Assessment, Issue do not move to cloned Audit.
 Preconditions:
 - Execution and return of fixture 'create_and_clone_audit'.
 """
     actual_audit = create_and_clone_audit["actual_audit"]
     actual_asmts_tab_count = (
         webui_service.AssessmentsService(selenium).get_count_objs_from_tab(
             src_obj=actual_audit))
     actual_asmts = (webui_service.AssessmentsService(
         selenium).get_list_objs_from_tree_view(src_obj=actual_audit))
     actual_issues_tab_count = (
         webui_service.IssuesService(selenium).get_count_objs_from_tab(
             src_obj=actual_audit))
     actual_issues = (
         webui_service.IssuesService(selenium).get_list_objs_from_tree_view(
             src_obj=actual_audit))
     assert actual_asmts_tab_count == actual_issues_tab_count == 0
     assert bool(actual_asmts) == bool(actual_issues) == 0
Ejemplo n.º 28
0
 def test_asmt_logs(
     self, new_program_rest, new_audit_rest, new_assessment_rest, selenium
 ):
   """Test for validation of Assessment log pane.
   Acceptance criteria:
     1) 3 log items at the log pane
     2) all items return 'True' for all attrs.
   """
   log_items_validation = webui_service.AssessmentsService(
       selenium).get_log_pane_validation_result(obj=new_assessment_rest)
   log_validation_results = [all(item_result.values()) for item_result in
                             log_items_validation]
   assert ([True] * 3) == log_validation_results, str(log_items_validation)
Ejemplo n.º 29
0
 def test_add_person_to_acl_list(self, program, audit, selenium):
     """Test that an assessment assignee can add a person to ACL"""
     assignee = rest_facade.create_user_with_role(roles.CREATOR)
     primary_contact = rest_facade.create_user_with_role(roles.CREATOR)
     asmt = rest_facade.create_assessment(audit, assignees=[assignee])
     users.set_current_user(assignee)
     asmt_service = webui_service.AssessmentsService(selenium)
     asmt_service.add_primary_contact(asmt, primary_contact)
     selenium.refresh()
     actual_asmt = asmt_service.get_obj_from_info_page(asmt)
     asmt.update_attrs(updated_at=rest_facade.get_obj(asmt).updated_at,
                       primary_contacts=[primary_contact],
                       modified_by=assignee).repr_ui()
     self.general_equal_assert(asmt, actual_asmt, "audit")
Ejemplo n.º 30
0
 def test_asmts_generation(self, map_controls_to_program_rest,
                           new_controls_rest, new_asmt_tmpl_rest, selenium):
   """Check if Assessments can be generated from Audit page via Assessments
   widget using Assessment template and Controls.
   Preconditions:
   - Program, Controls created via REST API.
   - Controls mapped to Program via REST API.
   - Audit created under Program via REST API.
   - Assessment Template created under Audit via REST API.
   """
   asmt_tmpl, audit, _ = new_asmt_tmpl_rest
   expected_asmts = (AssessmentsFactory().generate(
       objs_under_asmt_tmpl=new_controls_rest, audit=audit))
   (webui_service.AssessmentsService(selenium).
    generate_via_tree_view(source_obj=audit, asmt_tmpl_obj=asmt_tmpl,
                           objs_under_asmt=new_controls_rest))
   actual_asmts_tab_count = (webui_service.AssessmentsService(selenium).
                             get_count_from_tab(source_obj=audit))
   assert len(expected_asmts) == actual_asmts_tab_count
   actual_asmts = (webui_service.AssessmentsService(selenium).
                   get_objs_from_tree_view(source_obj=audit))
   assert expected_asmts == actual_asmts, (
       messages.ERR_MSG_FORMAT.format(expected_asmts, actual_asmts))