Пример #1
0
def mapped_obj(request, obj):
  """Fixture calls other fixture to create an object and map it to
  object from 'obj' fixture."""
  if hasattr(request, "param") and request.param and obj:
    obj_to_map = request.getfixturevalue(request.param)
    rest_facade.map_objs(obj_to_map, obj)
    return obj_to_map
Пример #2
0
 def test_related_asmts_in_different_audits_mapped_to_mapped_controls(
         self, program, selenium):
     """Objects structure:
 Program
 -> Control-1
 -> Control-2
 Control-1 and Control-2 are mapped.
 -> Audit-1 -> Asmt-1 mapped to Control-1
 -> Audit-2 -> Asmt-2 mapped to Control-2
 As a result, assessments are related."""
     controls = [rest_facade.create_control(program) for _ in xrange(2)]
     rest_facade.map_objs(controls[0], controls[1])
     audits = [rest_facade.create_audit(program) for _ in xrange(2)]
     assessments = [
         _create_mapped_asmt(audit=audit,
                             assessment_type="Control",
                             objs_to_map=[control])
         for control, audit in zip(controls, audits)
     ]
     related_asmts_titles = [(assessments[1].title, controls[1].title,
                              audits[1].title)]
     self._assert_asmt_with_related_asmts(
         checked_asmt=assessments[0],
         related_asmts_titles=related_asmts_titles,
         selenium=selenium)
Пример #3
0
 def _create_asmt_mapped_to_control_mapped_to_issue(self, asmt_type, audit,
                                                    control, issue):
     """Map 'control' to 'issue'.
 Return create assessment with 'asmt_type' and map to 'control'."""
     rest_facade.map_objs(control, issue)
     return _create_mapped_asmt(audit=audit,
                                assessment_type=asmt_type,
                                objs_to_map=[control])
Пример #4
0
def audit_w_manually_mapped_control_and_obj_mapped_to_control(
        program, control_mapped_to_program, obj_mapped_to_control):
    """"Create an audit within program and manually map it to control and
  object mapped to control."""
    audit = rest_facade.create_audit(program=program, manual_snapshots=True)
    rest_facade.map_objs(audit, control_mapped_to_program)
    rest_facade.map_objs(obj_mapped_to_control, audit)
    return audit
Пример #5
0
 def _create_asmt_mapped_to_control_mapped_to_issue(
     self, asmt_type, audit, control, issue
 ):
   """Map 'control' to 'issue'.
   Return create assessment with 'asmt_type' and map to 'control'."""
   rest_facade.map_objs(control, issue)
   return _create_mapped_asmt(
       audit=audit, assessment_type=asmt_type,
       objs_to_map=[control])
Пример #6
0
def programs_with_audit_and_techenv(mapped_programs, technology_environment):
  """Creates 2 programs (the second program is a child of the first one)
  and 1 technology environment objects, then creates an Audit
  in scope of program 2 and finally maps Technology Environment object
  to Audit."""
  audit = rest_facade.create_audit(mapped_programs[1])
  rest_facade.map_objs(audit, technology_environment)
  return {'programs': mapped_programs,
          'audit': audit,
          'techenv': technology_environment}
Пример #7
0
def programs_with_audit_and_techenv(programs, technology_environment):
    """Creates 2 programs and 1 technology environment objects, then maps second
  program to first as a child, then creates an Audit in scope of program 2
  and finally maps Technology Environment object to Audit."""
    first_program, second_program = programs
    rest_facade.map_objs(first_program, second_program)
    audit = rest_facade.create_audit(second_program)
    rest_facade.map_objs(audit, technology_environment)
    return {
        'programs': programs,
        'audit': audit,
        'techenv': technology_environment
    }
Пример #8
0
 def test_mapping_objectives_to_control_via_rest(
     self, control, obj, is_map_again, selenium
 ):
   """Check if Objectives can be mapped to Control via REST."""
   # pylint: disable=too-many-arguments
   expected_status_code = RestClient.STATUS_CODES["OK"]
   mapping_responses = rest_facade.map_objs(control, obj)
   assert all(expected_status_code == response.status_code
              for response in mapping_responses)
   assert (rest_facade.map_objs(control, obj)[0].status_code ==
           expected_status_code) if is_map_again else True
   actual_objectives_tab_count = (
       webui_service.ObjectivesService(selenium).get_count_objs_from_tab(
           src_obj=control))
   assert (len(help_utils.convert_to_list(obj)) ==
           actual_objectives_tab_count)
Пример #9
0
  def test_availability_mapping_of_objects_via_mapper_and_add_widget(
      self, create_audit_with_control_and_update_control, obj, 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 obj.type == objects.get_obj_type(objects.ISSUES):
      rest_facade.map_objs(
          create_audit_with_control_and_update_control["audit"], obj)
      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["audit"]
    obj_ui_service = get_cls_webui_service(
        objects.get_plural(obj.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=obj))
    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))
Пример #10
0
 def test_related_asmts_in_different_audits_mapped_to_mapped_controls(
     self, program, selenium
 ):
   """Objects structure:
   Program
   -> Control-1
   -> Control-2
   Control-1 and Control-2 are mapped.
   -> Audit-1 -> Asmt-1 mapped to Control-1
   -> Audit-2 -> Asmt-2 mapped to Control-2
   As a result, assessments are related."""
   controls = [rest_facade.create_control(program) for _ in xrange(2)]
   rest_facade.map_objs(controls[0], controls[1])
   audits = [rest_facade.create_audit(program) for _ in xrange(2)]
   assessments = [_create_mapped_asmt(
       audit=audit, assessment_type="Control", objs_to_map=[control])
       for control, audit in zip(controls, audits)]
   related_asmts_titles = [
       (assessments[1].title, controls[1].title, audits[1].title)]
   self._assert_asmt_with_related_asmts(
       checked_asmt=assessments[0],
       related_asmts_titles=related_asmts_titles,
       selenium=selenium)
Пример #11
0
def controls_mapped_to_program(program):
    """Create 2 controls mapped to the program"""
    controls = [rest_facade.create_control() for _ in xrange(2)]
    for control in controls:
        rest_facade.map_objs(program, control)
    return controls
Пример #12
0
def standard_mapped_to_control(control, standard):
    """Creates a Standard mapped to Control."""
    rest_facade.map_objs(standard, control)
    return standard
Пример #13
0
def product_mapped_to_control(control, product):
    """Creates a product mapped to control."""
    rest_facade.map_objs(product, control)
    return product
Пример #14
0
def control_mapped_to_program(program):
    """Create a control mapped to the program"""
    control = rest_facade.create_control()
    rest_facade.map_objs(program, control)
    return control
Пример #15
0
    def tested_events(self, selenium):
        """Create events to verify events functionality:
    0. Save event log count before test data creation,
    1. Create objective editor role, create 2 users with global creator role
    under admin
    2. Create objective#1 under global creator#1 and set global creator#2 to
    newly created objective editor role
    3. Create objective#2 under global objective#2 and map it objective#1
    """
        if not self.__class__._data:
            # generate enough data, so test can be executed independently
            for _ in xrange(6):
                rest_facade.create_user_with_role(roles.READER)

            initial_count = self.get_event_tab().tab_events.count
            objctv1_creator = rest_facade.create_user_with_role(roles.CREATOR)
            objctv2_creator = rest_facade.create_user_with_role(roles.CREATOR)
            objctv_editor_role = rest_facade.create_access_control_role(
                object_type="Objective", read=True, update=True, delete=True)
            admin = users.current_user()
            users.set_current_user(objctv1_creator)
            objctv_custom_roles = [(objctv_editor_role.name,
                                    objctv_editor_role.id, [objctv2_creator])]
            objctv1 = rest_facade.create_objective(
                custom_roles=objctv_custom_roles)
            # wait until notification and acl will assigned by background task
            rest_facade.get_obj(objctv1_creator)

            users.set_current_user(objctv2_creator)
            objctv2 = rest_facade.create_objective()
            rest_facade.map_objs(objctv1, objctv2)

            users.set_current_user(admin)
            # generate expected event data
            from lib.constants.roles import ACLRolesIDs
            # 3 predefined program roles and 1 predefined reviewer role
            acl_roles_len = len(ACLRolesIDs.object_roles(objctv1.type)) - 4
            exp_event_data = [{
                "actions":
                sorted([
                    objctv1_creator.email + " created",
                    u"PersonProfile created"
                ]),
                "user_email":
                admin.email,
                "time":
                date_utils.iso8601_to_local_datetime(
                    objctv1_creator.updated_at)
            }, {
                "actions": ["Creator linked to " + objctv1_creator.email],
                "user_email":
                admin.email,
                "time":
                date_utils.iso8601_to_local_datetime(
                    objctv1_creator.updated_at)
            }, {
                "actions":
                sorted([
                    objctv2_creator.email + " created",
                    u"PersonProfile created"
                ]),
                "user_email":
                admin.email,
                "time":
                date_utils.iso8601_to_local_datetime(
                    objctv2_creator.updated_at)
            }, {
                "actions": ["Creator linked to " + objctv2_creator.email],
                "user_email":
                admin.email,
                "time":
                date_utils.iso8601_to_local_datetime(
                    objctv2_creator.updated_at)
            }, {
                "actions": [objctv_editor_role.name + " created"],
                "user_email":
                admin.email,
                "time":
                date_utils.iso8601_to_local_datetime(
                    objctv_editor_role.updated_at)
            }, {
                "actions": [u"AccessControlList created"] * acl_roles_len +
                [u"AccessControlPerson created"] * 2 +
                [objctv1.title + " created"],
                "user_email":
                objctv1_creator.email,
                "time":
                date_utils.iso8601_to_local_datetime(objctv1.updated_at)
            }, {
                "actions": [u"AccessControlList created"] * acl_roles_len +
                [u"AccessControlPerson created", objctv2.title + " created"],
                "user_email":
                objctv2_creator.email,
                "time":
                date_utils.iso8601_to_local_datetime(objctv2.updated_at)
            }, {
                "actions": [
                    u"{type2}:{id2} linked to {type1}:{id1}".format(
                        id1=objctv1.id,
                        id2=objctv2.id,
                        type1=objctv1.type,
                        type2=objctv2.type)
                ],
                "user_email":
                objctv2_creator.email,
                "time":
                date_utils.iso8601_to_local_datetime(objctv2.updated_at)
            }]
            exp_event_data.reverse()
            self.__class__._data = {
                "objctv1_creator": objctv1_creator,
                "objctv2_creator": objctv2_creator,
                "objctv_editor_role": objctv_editor_role,
                "objctv1": objctv1,
                "objctv2": objctv2,
                "exp_added_events": exp_event_data,
                "initial_count": initial_count
            }
        return self.__class__._data
Пример #16
0
def map_new_assessment_rest_to_new_control_rest_snapshot(
        assessment, control_mapped_to_program):
    """Map Assessment to Control object via REST API return response from server.
  """
    return rest_facade.map_objs(assessment, control_mapped_to_program)
Пример #17
0
def controls_mapped_to_program(program):
  """Create 2 controls mapped to the program"""
  controls = [rest_facade.create_control() for _ in xrange(2)]
  for control in controls:
    rest_facade.map_objs(program, control)
  return controls
Пример #18
0
  def tested_events(self, selenium):
    """Create events to verify events functionality:
    0. Save event log count before test data creation,
    1. Create objective editor role, create 2 users with global creator role
    under admin
    2. Create objective#1 under global creator#1 and set global creator#2 to
    newly created objective editor role
    3. Create objective#2 under global objective#2 and map it objective#1
    """
    if not self.__class__._data:
      # generate enough data, so test can be executed independently
      for _ in xrange(6):
        rest_facade.create_user_with_role(roles.READER)

      initial_count = self.get_event_tab().tab_events.count
      objctv1_creator = rest_facade.create_user_with_role(roles.CREATOR)
      objctv2_creator = rest_facade.create_user_with_role(roles.CREATOR)
      objctv_editor_role = rest_facade.create_access_control_role(
          object_type="Objective", read=True, update=True, delete=True)
      admin = users.current_user()
      users.set_current_user(objctv1_creator)
      objctv_custom_roles = [
          (objctv_editor_role.name, objctv_editor_role.id, [objctv2_creator])
      ]
      objctv1 = rest_facade.create_objective(custom_roles=objctv_custom_roles)
      # wait until notification and acl will assigned by background task
      rest_facade.get_obj(objctv1_creator)

      users.set_current_user(objctv2_creator)
      objctv2 = rest_facade.create_objective()
      rest_facade.map_objs(objctv1, objctv2)

      users.set_current_user(admin)
      # generate expected event data
      from lib.constants.roles import ACLRolesIDs
      # 3 predefined program roles and 1 predefined reviewer role
      acl_roles_len = len(ACLRolesIDs.object_roles(objctv1.type)) - 4
      exp_event_data = [
          {"actions": sorted(
              [objctv1_creator.email + " created", u"PersonProfile created"]),
           "user_email": admin.email,
           "time": date_utils.iso8601_to_local_datetime(
              objctv1_creator.updated_at)},
          {"actions": ["Creator linked to " + objctv1_creator.email],
           "user_email": admin.email,
           "time": date_utils.iso8601_to_local_datetime(
              objctv1_creator.updated_at)},
          {"actions": sorted(
              [objctv2_creator.email + " created", u"PersonProfile created"]),
           "user_email": admin.email,
           "time": date_utils.iso8601_to_local_datetime(
              objctv2_creator.updated_at)},
          {"actions": ["Creator linked to " + objctv2_creator.email],
           "user_email": admin.email,
           "time": date_utils.iso8601_to_local_datetime(
              objctv2_creator.updated_at)},
          {"actions": [objctv_editor_role.name + " created"],
           "user_email": admin.email,
           "time": date_utils.iso8601_to_local_datetime(
              objctv_editor_role.updated_at)},
          {"actions": [u"AccessControlList created"] * acl_roles_len +
                      [u"AccessControlPerson created"] * 2 +
                      [objctv1.title + " created"],
           "user_email": objctv1_creator.email,
           "time": date_utils.iso8601_to_local_datetime(objctv1.updated_at)},
          {"actions": [u"AccessControlList created"] * acl_roles_len +
                      [u"AccessControlPerson created",
                       objctv2.title + " created"],
           "user_email": objctv2_creator.email,
           "time": date_utils.iso8601_to_local_datetime(objctv2.updated_at)},
          {"actions": [u"{type2}:{id2} linked to {type1}:{id1}".format(
              id1=objctv1.id, id2=objctv2.id, type1=objctv1.type,
              type2=objctv2.type)],
           "user_email": objctv2_creator.email,
           "time": date_utils.iso8601_to_local_datetime(objctv2.updated_at)}
      ]
      exp_event_data.reverse()
      self.__class__._data = {
          "objctv1_creator": objctv1_creator,
          "objctv2_creator": objctv2_creator,
          "objctv_editor_role": objctv_editor_role,
          "objctv1": objctv1,
          "objctv2": objctv2,
          "exp_added_events": exp_event_data,
          "initial_count": initial_count
      }
    return self.__class__._data
Пример #19
0
def obj_mapped_to_control(request, control_mapped_to_program):
    """Fixture calls other fixture to create an object and map the object to
  Control."""
    obj = request.getfixturevalue(request.param)
    rest_facade.map_objs(obj, control_mapped_to_program)
    return obj
Пример #20
0
def map_new_assessment_rest_to_new_control_rest_snapshot(
    assessment, control_mapped_to_program
):
  """Map Assessment to Control object via REST API return response from server.
  """
  return rest_facade.map_objs(assessment, control_mapped_to_program)
Пример #21
0
def control_mapped_to_program(program):
  """Create a control mapped to the program"""
  control = rest_facade.create_control()
  rest_facade.map_objs(program, control)
  return control
    def tested_events(self, selenium):
        """Create events to verify events functionality:
    0. Save event log count before test data creation,
    1. Create control editor role, create 2 users with global creator role
    under admin
    2. Create control#1 under global creator#1 and set global creator#2 to
    newly created control editor role
    3. Create control#2 under global creator#2 and map it control#1
    """
        if not self.__class__._data:
            # generate enough data, so test can be executed independently
            for _ in xrange(6):
                rest_facade.create_user_with_role(roles.READER)

            initial_count = self.get_event_tab().tab_events.count
            ctrl1_creator = rest_facade.create_user_with_role(roles.CREATOR)
            ctrl2_creator = rest_facade.create_user_with_role(roles.CREATOR)
            ctrl_editor_role = rest_facade.create_access_control_role(
                object_type="Control", read=True, update=True, delete=True)
            admin = users.current_user()
            users.set_current_user(ctrl1_creator)
            ctrl_custom_roles = [(ctrl_editor_role.name, ctrl_editor_role.id,
                                  [ctrl2_creator])]
            ctrl1 = rest_facade.create_control(custom_roles=ctrl_custom_roles)
            # wait until notification and acl will assigned by background task
            rest_facade.get_obj(ctrl1)

            users.set_current_user(ctrl2_creator)
            ctrl2 = rest_facade.create_control()
            rest_facade.map_objs(ctrl1, ctrl2)

            users.set_current_user(admin)
            # generate expected event data
            acl_roles_len = 7
            exp_event_data = [{
                "actions":
                sorted([
                    ctrl1_creator.email + " created", u"PersonProfile created"
                ]),
                "user_email":
                admin.email,
                "time":
                date_utils.iso8601_to_local_datetime(ctrl1_creator.updated_at)
            }, {
                "actions": ["Creator linked to " + ctrl1_creator.email],
                "user_email":
                admin.email,
                "time":
                date_utils.iso8601_to_local_datetime(ctrl1_creator.updated_at)
            }, {
                "actions":
                sorted([
                    ctrl2_creator.email + " created", u"PersonProfile created"
                ]),
                "user_email":
                admin.email,
                "time":
                date_utils.iso8601_to_local_datetime(ctrl2_creator.updated_at)
            }, {
                "actions": ["Creator linked to " + ctrl2_creator.email],
                "user_email":
                admin.email,
                "time":
                date_utils.iso8601_to_local_datetime(ctrl2_creator.updated_at)
            }, {
                "actions": [ctrl_editor_role.name + " created"],
                "user_email":
                admin.email,
                "time":
                date_utils.iso8601_to_local_datetime(
                    ctrl_editor_role.updated_at)
            }, {
                "actions": [u"AccessControlList created"] * acl_roles_len +
                [u"AccessControlPerson created"] * 2 +
                [ctrl1.title + " created", u"Security created"],
                "user_email":
                ctrl1_creator.email,
                "time":
                date_utils.iso8601_to_local_datetime(ctrl1.updated_at)
            }, {
                "actions": [u"AccessControlList created"] * acl_roles_len + [
                    u"AccessControlPerson created", ctrl2.title + " created",
                    u"Security created"
                ],
                "user_email":
                ctrl2_creator.email,
                "time":
                date_utils.iso8601_to_local_datetime(ctrl2.updated_at)
            }, {
                "actions": [
                    u"Control:{id2} linked to Control:{id1}".format(
                        id1=ctrl1.id, id2=ctrl2.id)
                ],
                "user_email":
                ctrl2_creator.email,
                "time":
                date_utils.iso8601_to_local_datetime(ctrl2.updated_at)
            }]
            exp_event_data.reverse()
            self.__class__._data = {
                "ctrl1_creator": ctrl1_creator,
                "ctrl2_creator": ctrl2_creator,
                "ctrl_editor_role": ctrl_editor_role,
                "ctrl1": ctrl1,
                "ctrl2": ctrl2,
                "exp_added_events": exp_event_data,
                "initial_count": initial_count
            }
        return self.__class__._data
Пример #23
0
def mapped_programs(programs):
  """Creates 2 programs and maps the second program to the first
  one as a child"""
  rest_facade.map_objs(*programs)
  return programs