def asmts_to_include_by_bulk_verify_filter(self, control_mapped_to_program, audit, audit_w_auditor, second_creator): """Creates assessment with 'In Review' state, map a comment, evidence url and control snapshot to it. Returns created assessment.""" expected_asmnt = rest_facade.create_asmt(audit, verifiers=second_creator) rest_facade.map_to_snapshot(expected_asmnt, obj=control_mapped_to_program, parent_obj=audit) comment = rest_service.CommentsService().create_obj() evidence = rest_service.EvidencesService().create_obj() rest_facade.update_object( expected_asmnt, status=object_states.READY_FOR_REVIEW, actions={ "add_related": [comment.repr_min_dict(), evidence.repr_min_dict()] }) comment.modified_by = users.current_person().email expected_asmnt.update_attrs(evidence_urls=[evidence.title], comments=[comment.repr_ui()], mapped_objects=[control_mapped_to_program], status=object_states.READY_FOR_REVIEW, custom_attribute_definitions=[]) return expected_asmnt.repr_ui()
def test_add_evidence_url( self, program, login_role, obj, obj_role, selenium ): """Test that various users have possibility to add an evidence url into assessment. """ # pylint: disable=too-many-arguments login_user = rest_facade.create_user_with_role(login_role) obj_args = {obj_role: [login_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(login_user) url = string_utils.StringMethods.random_string() asmt_service = webui_service.AssessmentsService(selenium) asmt_service.add_evidence_urls(asmt, [url]) actual_asmt = asmt_service.get_obj_from_info_page(obj=asmt) rest_asmt_obj = rest_facade.get_obj(asmt) asmt.update_attrs( updated_at=rest_asmt_obj.updated_at, modified_by=rest_asmt_obj.modified_by, status=object_states.IN_PROGRESS, evidence_urls=[url]).repr_ui() self.general_equal_assert(asmt, actual_asmt, "audit")
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)
def asmt_w_control_snapshot(obj, control_mapped_to_program): """Creates an assessment with control snapshot.""" asmt = rest_facade.create_asmt(obj) rest_facade.map_to_snapshot(asmt, obj=control_mapped_to_program, parent_obj=obj) return asmt
def _create_mapped_asmt(audit, assessment_type, objs_to_map): """Create assessment with assessment type=`assessment_type` and map it to snapshots of `objs_to_map`""" assessment = rest_facade.create_asmt(audit, assessment_type=assessment_type) for obj in objs_to_map: rest_facade.map_to_snapshot(assessment, obj=obj, parent_obj=audit) assessment.update_attrs(mapped_objects=objs_to_map) return assessment
def asmts_w_verifier(second_creator, audit_w_auditor): """Creates 7 assessments, set global creator as a verifier. Returns: List of created assessments. """ return [ rest_facade.create_asmt(audit_w_auditor, verifiers=second_creator) for _ in xrange(7) ]
def asmts_to_exclude_by_bulk_verify_filter(self, audit, audit_w_auditor, second_creator): """Creates assessments, one for each of possible status, within one audit. Create assessment with 'In Review' status within second audit. Set global creator as a verifier for all assessments where applicable. Returns list of created assessments.""" asmts_not_for_bulk_verify_filter = [] asmts_not_for_bulk_verify_filter.append( rest_facade.create_asmt(audit_w_auditor, verifiers=second_creator, status=object_states.READY_FOR_REVIEW)) for status in object_states.ASSESSMENT_STATUSES_NOT_READY_FOR_REVIEW: asmts_not_for_bulk_verify_filter.append( rest_facade.create_asmt( audit, status=status, verifiers=second_creator # assessment cannot be in completed state if it has verifiers # GGRC-7802: validation should be added on backend side if status != object_states.COMPLETED else [])) return asmts_not_for_bulk_verify_filter
def test_auditor_can_edit_asmt(self, selenium, test_data): """Preconditions: Global editor creates program with mapped control. Global editor creates audit and assigns Global Creator user as an auditor - log in as GC - navigate to audit page => Assessments tab Test that GC can edit new asmt in audit.""" creator = test_data["creator"] users.set_current_user(creator) audit = test_data["audit"] expected_asmt = rest_facade.create_asmt(audit) webui_facade.assert_can_edit_asmt(selenium, expected_asmt)
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_asmt(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")
def test_auditor_can_edit_asmt( self, selenium, test_data ): """Preconditions: Global editor creates program with mapped control. Global editor creates audit and assigns Global Creator user as an auditor - log in as GC - navigate to audit page => Assessments tab Test that GC can edit new asmt in audit.""" creator = test_data["creator"] users.set_current_user(creator) audit = test_data["audit"] expected_asmt = rest_facade.create_asmt(audit) webui_facade.assert_can_edit_asmt( selenium, expected_asmt)
def test_view_evidence_urls_as_verifier(self, program, audit, selenium): """Test that an assessment verifier can see evidence urls on assessment page """ verifier = rest_facade.create_user_with_role(roles.CREATOR) asmt = rest_facade.create_asmt(audit, verifiers=[verifier]) asmt_service = webui_service.AssessmentsService(selenium) url = string_utils.StringMethods.random_string() asmt_service.add_evidence_urls(asmt, [url]) users.set_current_user(verifier) actual_asmt = asmt_service.get_obj_from_info_page(asmt) asmt.update_attrs( status=object_states.IN_PROGRESS, updated_at=self.info_service().get_obj(obj=asmt).updated_at, evidence_urls=[url]).repr_ui() self.general_equal_assert(asmt, actual_asmt, "audit")
def test_change_asmt_state_as_verifier( self, program, audit, initial_state, action, end_state, selenium ): """Tests for changing assessment state as assessment verifier""" verifier = rest_facade.create_user_with_role(roles.CREATOR) asmt = rest_facade.create_asmt(audit, status=initial_state, verifiers=[verifier]) users.set_current_user(verifier) asmt_service = webui_service.AssessmentsService(selenium) getattr(asmt_service, action)(asmt) actual_asmt = asmt_service.get_obj_from_info_page(asmt) asmt.update_attrs( updated_at=rest_facade.get_obj(asmt).updated_at, status=end_state, verified=(True if action == "verify_assessment" else False)).repr_ui() self.general_equal_assert(asmt, actual_asmt, "audit")
def test_auditor_can_assign_user_to_asmt(self, selenium, test_data): """Preconditions: Global editor creates program with mapped control. Global editor creates audit and assigns Global Creator user as an auditor - log in as GC - navigate to audit page => Assessments tab Test that GC can assign user to new asmt in audit.""" # pylint: disable=invalid-name creator = test_data["creator"] users.set_current_user(creator) audit = test_data["audit"] expected_asmt = rest_facade.create_asmt(audit) asmt_service = webui_service.AssessmentsService(selenium) asmt_service.add_asignee(expected_asmt, test_data["editor"]) expected_asmt.update_attrs( updated_at=rest_facade.get_obj(expected_asmt).updated_at, assignees=[creator.email, test_data["editor"].email], modified_by=users.current_user().email) webui_facade.assert_can_view(selenium, expected_asmt)
def test_auditor_can_assign_user_to_asmt( self, selenium, test_data ): """Preconditions: Global editor creates program with mapped control. Global editor creates audit and assigns Global Creator user as an auditor - log in as GC - navigate to audit page => Assessments tab Test that GC can assign user to new asmt in audit.""" # pylint: disable=invalid-name creator = test_data["creator"] users.set_current_user(creator) audit = test_data["audit"] expected_asmt = rest_facade.create_asmt(audit) asmt_service = webui_service.AssessmentsService(selenium) asmt_service.add_asignee(expected_asmt, test_data["editor"]) expected_asmt.update_attrs( updated_at=rest_facade.get_obj(expected_asmt).updated_at, assignees=[creator.email, test_data["editor"].email], modified_by=users.current_user().email) webui_facade.assert_can_view(selenium, expected_asmt)
def test_add_evidence_url(self, program, login_role, obj, obj_role, selenium): """Test that various users have possibility to add an evidence url into assessment. """ # pylint: disable=too-many-arguments login_user = rest_facade.create_user_with_role(login_role) obj_args = {obj_role: [login_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(login_user) url = string_utils.StringMethods.random_string() asmt_service = webui_service.AssessmentsService(selenium) asmt_service.add_evidence_urls(asmt, [url]) actual_asmt = asmt_service.get_obj_from_info_page(obj=asmt) asmt.update_attrs(updated_at=rest_facade.get_obj(asmt).updated_at, status=object_states.IN_PROGRESS, evidence_urls=[url]).repr_ui() self.general_equal_assert(asmt, actual_asmt, "audit")
def assessment(audit): """Creates an assessment within audit.""" return rest_facade.create_asmt(audit)
def assessments(audit): """Creates an assessment within audit.""" return [rest_facade.create_asmt(audit) for _ in xrange(2)]
def assessment(audit): """Creates an assessment within audit.""" return rest_facade.create_asmt(audit)
def assessments(audit): """Creates an assessment within audit.""" return [rest_facade.create_asmt(audit) for _ in xrange(2)]
def deprecated_asmts(self, audit): """Returns 5 assessments in 'Deprecated' status.""" return [ rest_facade.create_asmt(audit, status=object_states.DEPRECATED) for _ in xrange(5) ]