Beispiel #1
0
  def build_create_issue_tracker_params(self, obj, issue_tracker_info):
    """Build create issue query for issue tracker."""
    all_emails = {acl.person.email for acl in obj.access_control_list}

    # Add the person who triggered the event.
    all_emails |= {obj.modified_by.email}
    allowed_emails = integration_utils.exclude_auditor_emails(all_emails)

    # Don't turn on integration if 'reporter' is auditor.
    reporter_email = obj.modified_by.email
    if reporter_email not in allowed_emails:
      obj.add_warning(self.EXCLUDE_REPORTER_EMAIL_ERROR_MSG)
      return self.params

    self.params.status = self.ASSIGNED_ISSUE_STATUS
    self.params.add_comment(self.INITIAL_COMMENT_TMPL.format(
        model=self.MODEL_NAME,
        link=self.get_ggrc_object_url(obj)
    ))

    self.handle_issue_tracker_info(obj, issue_tracker_info)
    self._handle_people_emails(obj, allowed_emails)
    self._handle_issue_comment_attributes(obj)

    return self.params
Beispiel #2
0
  def test_exclude_auditor(self):
    """Test 'exclude_auditor_emails' util."""
    audit = factories.AuditFactory()
    person = factories.PersonFactory(email="*****@*****.**")
    audit.add_person_with_role_name(person, "Auditors")
    db.session.commit()

    result = integration_utils.exclude_auditor_emails(["*****@*****.**",
                                                       "*****@*****.**"])
    self.assertEqual(result, {"*****@*****.**", })
Beispiel #3
0
  def test_exclude_auditor(self):
    """Test 'exclude_auditor_emails' util."""
    audit = factories.AuditFactory()
    person = factories.PersonFactory(email="*****@*****.**")
    audit.add_person_with_role_name(person, "Auditors")
    db.session.commit()

    result = integration_utils.exclude_auditor_emails(["*****@*****.**",
                                                       "*****@*****.**"])
    self.assertEqual(result, {"*****@*****.**", })
  def test_exclude_auditor(self):
    """Test 'exclude_auditor_emails' util."""
    audit = factories.AuditFactory()
    factories.AccessControlListFactory(
        ac_role=factories.AccessControlRoleFactory(name="Auditors"),
        person=factories.PersonFactory(email="*****@*****.**"),
        object_id=audit.id,
        object_type="Audit"
    )

    result = integration_utils.exclude_auditor_emails(["*****@*****.**",
                                                       "*****@*****.**"])
    self.assertEqual(result, {"*****@*****.**", })
  def test_exclude_auditor(self):
    """Test 'exclude_auditor_emails' util."""
    audit = factories.AuditFactory()
    factories.AccessControlListFactory(
        ac_role=factories.AccessControlRoleFactory(name="Auditors"),
        person=factories.PersonFactory(email="*****@*****.**"),
        object_id=audit.id,
        object_type="Audit"
    )

    result = integration_utils.exclude_auditor_emails(["*****@*****.**",
                                                       "*****@*****.**"])
    self.assertEqual(result, {"*****@*****.**", })
  def _build_allowed_emails(self, obj):
    """Handle emails from object.

    Excludes auditors from emails list because no contact field should contain
             global auditors.
    Args: obj - object to collect emails
    Return: A tuple (reporter_email, allowed_emails).
    """
    all_emails = {person.email for person, _ in obj.access_control_list}

    # Add the person who triggered the event.
    all_emails |= {obj.modified_by.email}
    allowed_emails = integration_utils.exclude_auditor_emails(all_emails)

    # Don't turn on integration if 'reporter' is auditor.
    reporter_email = obj.modified_by.email
    if reporter_email not in allowed_emails:
      obj.add_warning(self.EXCLUDE_REPORTER_EMAIL_ERROR_MSG)
      return None
    return allowed_emails