def _create_random_obj(self, is_add_rest_attrs): """Create Assessment Template entity with randomly and predictably filled fields, if 'is_add_rest_attrs' then add attributes for REST.""" asmt_tmpl_obj = self.obj_inst().update_attrs( title=self.obj_title, slug=self.obj_slug, assignees=unicode(roles.PRINCIPAL_ASSIGNEES), verifiers=unicode(roles.AUDITORS), status=unicode(object_states.DRAFT), template_object_type=objects.get_obj_type(objects.CONTROLS)) if is_add_rest_attrs: elements = element.CommonAudit asmt_tmpl_obj.update_attrs( default_people={ "assignees": asmt_tmpl_obj.assignees, "verifiers": asmt_tmpl_obj.verifiers }, people_values=[{ "value": v, "title": t } for v, t in [( roles.ADMIN, elements.OBJECT_ADMINS ), (roles.AUDIT_LEAD, elements.AUDIT_CAPTAIN), (roles.AUDITORS, elements.AUDITORS), (roles.PRINCIPAL_ASSIGNEES, elements.PRINCIPAL_ASSIGNEES), (roles.SECONDARY_ASSIGNEES, elements.SECONDARY_ASSIGNEES), (roles.PRIMARY_CONTACTS, elements.PRIMARY_CONTACTS), (roles.SECONDARY_CONTACTS, elements.SECONDARY_CONTACTS ), (roles.OTHER, elements.OTHERS)]]) return asmt_tmpl_obj
def _create_random_obj(self, is_add_rest_attrs): """Create Assessment Template entity with randomly and predictably filled fields, if 'is_add_rest_attrs' then add attributes for REST.""" asmt_tmpl_obj = self.obj_inst().update_attrs( title=self.obj_title, slug=self.obj_slug, assignees=unicode(roles.PRINCIPAL_ASSIGNEES), verifiers=unicode(roles.AUDITORS), status=unicode(object_states.DRAFT), template_object_type=objects.get_obj_type(objects.CONTROLS)) if is_add_rest_attrs: elements = element.CommonAudit asmt_tmpl_obj.update_attrs( default_people={ "assignees": asmt_tmpl_obj.assignees, "verifiers": asmt_tmpl_obj.verifiers}, people_values=[{"value": v, "title": t} for v, t in [ (roles.ADMIN, elements.OBJECT_ADMINS), (roles.AUDIT_LEAD, elements.AUDIT_CAPTAIN), (roles.AUDITORS, elements.AUDITORS), (roles.PRINCIPAL_ASSIGNEES, elements.PRINCIPAL_ASSIGNEES), (roles.SECONDARY_ASSIGNEES, elements.SECONDARY_ASSIGNEES), (roles.PRIMARY_CONTACTS, elements.PRIMARY_CONTACTS), (roles.SECONDARY_CONTACTS, elements.SECONDARY_CONTACTS), (roles.OTHER, elements.OTHERS)]]) return asmt_tmpl_obj
def __init__(self, obj_name): self.obj_name = obj_name self.obj_type = objects.get_obj_type(self.obj_name) self.obj_title = self.generate_string(self.obj_type) self.obj_entity_cls = factory.get_cls_obj_entity(object_name=self.obj_name) self.obj_slug = None self._acl_roles = []
def get_snapshoted_obj_response_values(): """Get values fom response.""" # pylint: disable=invalid-name filters = query.Query.expression_get_snapshoted_obj( obj_type=origin_obj.type, obj_id=origin_obj.id, parent_type=paren_obj.type, parent_id=paren_obj.id) return self.get_obj_dict( objects.get_obj_type(objects.SNAPSHOTS), filters=filters)
def __init__(self, obj_name): self.obj_name = obj_name self.obj_type = objects.get_obj_type(self.obj_name) self.obj_title = self.generate_string(self.obj_type) self.obj_entity_cls = factory.get_cls_obj_entity(object_name=self.obj_name) if self.__class__ not in [CustomAttributeDefinitionEntity, PersonEntity, CommentEntity]: self.obj_slug = self.generate_slug()
def get_response(): """Get response from query.""" return self.client.create_object( type=self.endpoint, object_name=objects.get_obj_type(objects.SNAPSHOTS), filters=query.Query.expression_get_snapshoted_obj( obj_type=origin_obj.type, obj_id=origin_obj.id, parent_type=paren_obj.type, parent_id=paren_obj.id))
def get_obj_comment_response_values(): """Get values fom response.""" # pylint: disable=invalid-name filters = query.Query.expression_get_comment_by_desc( parent_type=paren_obj.type, parent_id=paren_obj.id, comment_desc=comment_description) order_by = [{"name": "created_at", "desc": True}] return self.get_obj_dict(objects.get_obj_type(objects.COMMENTS), filters=filters, order_by=order_by)
def get_snapshoted_obj_response_values(): """Get values fom response.""" # pylint: disable=invalid-name filters = query.Query.expression_get_snapshoted_obj( obj_type=origin_obj.type, obj_id=origin_obj.id, parent_type=paren_obj.type, parent_id=paren_obj.id) return self.get_obj_dict(objects.get_obj_type(objects.SNAPSHOTS), filters=filters)
def get_person(self, email): """Get and return person object by email""" attrs = ( BaseRestService.get_items_from_resp(self.client.create_object( type=self.endpoint, object_name=objects.get_obj_type(objects.PEOPLE), filters=query.Query.expression_get_person_by_email( email=email))).get("values")[0]) person = PeopleFactory().create() person.__dict__.update({k: v for k, v in attrs.iteritems() if v and k not in ["type", ]}) return person
def get_obj_proposals(self, obj): """Get and return object proposals according to obj type and id.""" # double waiting for this rest method return rest_service.BaseRestService.get_items_from_resp( self.client.create_object( type=self.endpoint, object_name=objects.get_obj_type(objects.PROPOSALS), filters=query.Query.expression_get_obj_proposals(obj.type, obj.id), order_by=[ {"name": "status", "desc": True}, {"name": "created_at", "desc": True}]), timeout=constants.ux.TWO_MIN_USER_WAIT)
def get_obj_proposals(self, obj): """Get and return object proposals according to obj type and id.""" # double waiting for this rest method return rest_service.BaseRestService.get_items_from_resp( self.client.create_object( type=self.endpoint, object_name=objects.get_obj_type(objects.PROPOSALS), filters=query.Query.expression_get_obj_proposals(obj.type, obj.id), order_by=[ {"name": "status", "desc": True}, {"name": "created_at", "desc": True}]), timeout=constants.ux.TWO_MIN_USER_WAIT).get("values")
def get_snapshoted_obj(self, origin_obj, paren_obj): """Get and return snapshoted object according to 'origin_obj' and 'paren_obj'. """ snapshoted_obj_dict = ( BaseRestService.get_items_from_resp(self.client.create_object( type=self.endpoint, object_name=objects.get_obj_type(objects.SNAPSHOTS), filters=query.Query.expression_get_snapshoted_obj( obj_type=origin_obj.type, obj_id=origin_obj.id, parent_type=paren_obj.type, parent_id=paren_obj.id))).get("values")[0]) return Representation.repr_dict_to_obj(snapshoted_obj_dict)
def _create_random_obj(self, is_add_rest_attrs): """Create Assessment entity with randomly and predictably filled fields, if 'is_add_rest_attrs' then add attributes for REST.""" asmt_obj = self.obj_inst().update_attrs( title=self.obj_title, slug=self.obj_slug, status=unicode(object_states.NOT_STARTED), assessment_type=objects.get_obj_type(objects.CONTROLS), verified=False) if is_add_rest_attrs: asmt_obj.update_attrs( recipients=",".join(( unicode(roles.ASSIGNEES), unicode(roles.CREATORS), unicode(roles.VERIFIERS)))) return asmt_obj
def _create_random_obj(self, is_add_rest_attrs): """Create Assessment entity with randomly and predictably filled fields, if 'is_add_rest_attrs' then add attributes for REST.""" asmt_obj = self.obj_inst().update_attrs( title=self.obj_title, status=unicode(object_states.NOT_STARTED), assessment_type=objects.get_obj_type(objects.CONTROLS), verified=False) if is_add_rest_attrs: asmt_obj.update_attrs( recipients=",".join(( unicode(roles.ASSIGNEES), unicode(roles.CREATORS), unicode(roles.VERIFIERS)))) return asmt_obj
def get_obj_proposals(self, obj): """Get and return object proposals according to obj type and id.""" return rest_service.BaseRestService.get_items_from_resp( self.client.create_object( type=self.endpoint, object_name=objects.get_obj_type(objects.PROPOSALS), filters=query.Query.expression_get_obj_proposals( obj.type, obj.id), order_by=[{ "name": "status", "desc": True }, { "name": "created_at", "desc": True }])).get("values")
def get_comment_obj(self, paren_obj, comment_description): """Get and return comment object according to 'paren_obj' type) and comment_description 'paren_obj'. As default 'is_sort_by_created_at' and if even comments have the same descriptions query return selection w/ latest created datetime. """ comment_obj_dict = ( BaseRestService.get_items_from_resp(self.client.create_object( type=self.endpoint, object_name=objects.get_obj_type(objects.COMMENTS), filters=query.Query.expression_get_comment_by_desc( parent_type=paren_obj.type, parent_id=paren_obj.id, comment_desc=comment_description), order_by=[{"name": "created_at", "desc": True}])).get("values")[0]) return Representation.repr_dict_to_obj(comment_obj_dict)
def test_availability_mapping_of_objects_via_mapper_and_add_widget( self, create_audit_with_control_and_update_control, dynamic_objects, dynamic_relationships, selenium ): """Check availability mapping of objects to Assessment and Issue via UI using Unified Mapper functionality and AddWidget button on Horizontal Nav Bar. Steps: - Get list of available objects from Unified Mapper; - Get list of available objects from HNB; - Compare their with constant of expected objects accordingly. """ expected_objs_names_from_mapper = ( objects.ALL_SNAPSHOTABLE_OBJS + (objects.ISSUES, )) if dynamic_objects.type == objects.get_obj_type(objects.ISSUES): expected_objs_names_from_mapper = expected_objs_names_from_mapper + ( objects.PROGRAMS, objects.PROJECTS, objects.DOCUMENTS) expected_objs_names_from_add_widget = expected_objs_names_from_mapper expected_objs_types_from_mapper = sorted( objects.get_normal_form(obj_name) for obj_name in expected_objs_names_from_mapper) expected_objs_types_from_add_widget = sorted( objects.get_normal_form(obj_name) for obj_name in expected_objs_names_from_add_widget) mapped_audit = create_audit_with_control_and_update_control[ "new_audit_rest"][0] obj_ui_service = get_cls_webui_service( objects.get_plural(dynamic_objects.type))(selenium) actual_objs_types_from_mapper = ( obj_ui_service.get_objs_available_to_map_via_mapper( src_obj=mapped_audit)) actual_objs_types_from_add_widget = ( obj_ui_service.get_objs_available_to_map_via_add_widget( src_obj=dynamic_objects)) assert (expected_objs_types_from_mapper == actual_objs_types_from_mapper), ( messages.AssertionMessages.format_err_msg_equal( expected_objs_types_from_mapper, actual_objs_types_from_mapper)) assert (expected_objs_types_from_add_widget == actual_objs_types_from_add_widget), ( messages.AssertionMessages.format_err_msg_equal( expected_objs_types_from_add_widget, actual_objs_types_from_add_widget))
def _create_random_obj(self, is_add_rest_attrs): """Create Assessment entity with randomly and predictably filled fields, if 'is_add_rest_attrs' then add attributes for REST.""" asmt_obj = self.obj_inst().update_attrs( title=self.obj_title, slug=self.obj_slug, status=unicode(element.AssessmentStates.NOT_STARTED), creators=PeopleFactory.extract_people_emails(self.admins), assignees=PeopleFactory.extract_people_emails(self.assignees), assessment_type=objects.get_obj_type(objects.CONTROLS), verified=False) if is_add_rest_attrs: asmt_obj.update_attrs( recipients=",".join(( unicode(roles.ASSIGNEES), unicode(roles.CREATORS), unicode(roles.VERIFIERS))), access_control_list=string_utils.StringMethods. convert_list_elements_to_list( [PeopleFactory.get_acl_members( roles.ACLRolesIDs.ASSESSMENT_CREATORS, self.admins), PeopleFactory.get_acl_members( roles.ACLRolesIDs.ASSESSMENT_ASSIGNEES, self.assignees)])) return asmt_obj
def __init__(self, driver): super(Assessments, self).__init__(driver) self.is_verified_lbl_txt = self._elements.VERIFIED.upper() self.is_verified = selenium_utils.is_element_exist( self.info_widget_elem, self._locators.ICON_VERIFIED) self.asmt_type_lbl_txt = self._elements.ASMT_TYPE.upper() self.asmt_type = base.Label(self.info_widget_elem, self._locators.ASMT_TYPE_CSS) self.asmt_type_txt = objects.get_obj_type(self.asmt_type.text) self.mapped_objects_lbl_txt = self._elements.MAPPED_OBJECTS.upper() self.mapped_objects_titles_txt = self._get_mapped_objs_titles_txt() self.lcas_scope_txt = self.get_headers_and_values_dict_from_cas_scopes( is_gcas_not_lcas=False) self.creators_lbl_txt, self.creators_txt = ( self.get_header_and_value_txt_from_people_scopes( self._elements.CREATORS.upper())) self.assignees_lbl_txt, self.assignees_txt = ( self.get_header_and_value_txt_from_people_scopes( self._elements.ASSIGNEES.upper())) self.verifiers_lbl_txt, self.verifiers_txt = ( self.get_header_and_value_txt_from_people_scopes( self._elements.VERIFIERS.upper())) self.comments_panel = base.CommentsPanel(self.info_widget_elem, self._locators.COMMENTS_CSS) self.comments_lbl_txt = self.comments_panel.header_lbl.text self.comments_scopes_txt = self.comments_panel.scopes self._assessment_tab_name = "Assessment" self._other_attributes_tab_name = "Other Attributes" # todo: implement separate add lcas and gcas # todo: implement separate add mapped ctrls and mapped other objs self._extend_list_all_scopes([ self.is_verified_lbl_txt, self.creators_lbl_txt, self.assignees_lbl_txt, self.verifiers_lbl_txt, self.mapped_objects_lbl_txt, self.comments_lbl_txt, self.asmt_type_lbl_txt ], [ self.is_verified, self.creators_txt, self.assignees_txt, self.verifiers_txt, self.mapped_objects_titles_txt, self.comments_scopes_txt, self.asmt_type_txt ])
def __init__(self, driver): super(Assessments, self).__init__(driver) self.is_verified_lbl_txt = self._elements.VERIFIED.upper() self.is_verified = selenium_utils.is_element_exist( self.info_widget_elem, self._locators.ICON_VERIFIED) self.asmt_type_lbl_txt = self._elements.ASMT_TYPE.upper() self.asmt_type = base.Label( self.info_widget_elem, self._locators.ASMT_TYPE_CSS) self.asmt_type_txt = objects.get_obj_type(self.asmt_type.text) self.mapped_objects_lbl_txt = self._elements.MAPPED_OBJECTS.upper() self.mapped_objects_titles_txt = self._get_mapped_objs_titles_txt() self.lcas_scope_txt = self.get_headers_and_values_dict_from_cas_scopes( is_gcas_not_lcas=False) self.creators_lbl_txt, self.creators_txt = ( self.get_header_and_value_txt_from_people_scopes( self._elements.CREATORS.upper())) self.assignees_lbl_txt, self.assignees_txt = ( self.get_header_and_value_txt_from_people_scopes( self._elements.ASSIGNEES.upper())) self.verifiers_lbl_txt, self.verifiers_txt = ( self.get_header_and_value_txt_from_people_scopes( self._elements.VERIFIERS.upper())) self.comments_panel = base.CommentsPanel( self.info_widget_elem, self._locators.COMMENTS_CSS) self.comments_lbl_txt = self.comments_panel.header_lbl.text self.comments_scopes_txt = self.comments_panel.scopes self._assessment_tab_name = "Assessment" self._other_attributes_tab_name = "Other Attributes" # todo: implement separate add lcas and gcas # todo: implement separate add mapped ctrls and mapped other objs self._extend_list_all_scopes( [self.is_verified_lbl_txt, self.creators_lbl_txt, self.assignees_lbl_txt, self.verifiers_lbl_txt, self.mapped_objects_lbl_txt, self.comments_lbl_txt, self.asmt_type_lbl_txt], [self.is_verified, self.creators_txt, self.assignees_txt, self.verifiers_txt, self.mapped_objects_titles_txt, self.comments_scopes_txt, self.asmt_type_txt])
def REQUIREMENT_ADMINS(cls): return cls.id_of_role(object_type=objects.get_obj_type( objects.REQUIREMENTS), name=ADMIN)
def REGULATION_ADMINS(cls): return cls.id_of_role(object_type=objects.get_obj_type( objects.REGULATIONS), name=ADMIN)
def STANDARD_ADMINS(cls): return cls.id_of_role(object_type=objects.get_obj_type( objects.STANDARDS), name=ADMIN)
def person_attrs(): """Get values fom response.""" filters = query.Query.expression_get_person_by_email(email=email) return self.get_obj_dict( objects.get_obj_type(objects.PEOPLE), filters=filters)
def PRODUCT_MANAGERS(cls): return cls.id_of_role(object_type=objects.get_obj_type( objects.PRODUCTS), name=PRODUCT_MANAGERS)
def AUDITORS(cls): return cls.id_of_role(object_type=objects.get_obj_type(objects.AUDITS), name=AUDITORS)
def ASSESSMENT_CREATORS(cls): return cls.id_of_role(object_type=objects.get_obj_type( objects.ASSESSMENTS), name=CREATORS)
def ORG_GROUPS_ADMINS(cls): return cls.id_of_role(object_type=objects.get_obj_type( objects.ORG_GROUPS), name=ADMIN)
def TECHNOLOGY_ENVIRONMENT_ADMINS(cls): return cls.id_of_role(object_type=objects.get_obj_type( objects.TECHNOLOGY_ENVIRONMENTS), name=ADMIN)
def REVIEWERS(cls): return cls.id_of_role(object_type=objects.get_obj_type( objects.REVIEWS), name=REVIEWERS)
def ASSESSMENT_ASSIGNEES(cls): return cls.id_of_role(object_type=objects.get_obj_type( objects.ASSESSMENTS), name=ASSIGNEES)
def ISSUE_ADMINS(cls): return cls.id_of_role(object_type=objects.get_obj_type(objects.ISSUES), name=ADMIN)
def OBJECTIVE_ADMINS(cls): return cls.id_of_role(objects.get_obj_type(objects.OBJECTIVES), name=ADMIN)
def ASSESSMENT_VERIFIERS(cls): return cls.id_of_role(object_type=objects.get_obj_type( objects.ASSESSMENTS), name=VERIFIERS)
def person_attrs(): """Get values fom response.""" filters = query.Query.expression_get_person_by_email(email=email) return self.get_obj_dict(objects.get_obj_type(objects.PEOPLE), filters=filters)
def RISK_ADMINS(cls): return cls.id_of_role(object_type=objects.get_obj_type(objects.RISKS), name=ADMIN)