def test_new_assessment_people(self, client_mock, _):
    """External Issue for Assessment contains correct people."""
    client_instance = client_mock.return_value
    client_instance.create_issue.return_value = {'issueId': 42}

    self.setup_audit_people({
        role_name: people for role_name, people in self.people.items()
        if role_name in ('Audit Captains', 'Auditors')
    })

    component_id = hash('Component id')
    hotlist_id = hash('Hotlist id')
    issue_type = 'Issue type'
    issue_priority = 'Issue priority'
    issue_severity = 'Issue severity'

    asmt = self.create_asmt_with_issue_tracker(
        role_name_to_people={
            role_name: people for role_name, people in self.people.items()
            if role_name in self.ROLE_NAMES
        },
        issue_tracker={
            'component_id': component_id,
            'hotlist_id': hotlist_id,
            'issue_type': issue_type,
            'issue_priority': issue_priority,
            'issue_severity': issue_severity,
        },
    )

    expected_cc_list = list(
        self.EMAILS['Assignees'] - {min(self.EMAILS['Assignees'])}
    )

    # pylint: disable=protected-access; we assert by non-exported constants
    client_instance.create_issue.assert_called_once_with({
        # common fields
        'comment': (issue_tracker._INITIAL_COMMENT_TMPL %
                    issue_tracker._get_assessment_url(asmt)),
        'component_id': component_id,
        'hotlist_ids': [hotlist_id],
        'priority': issue_priority,
        'severity': issue_severity,
        'status': 'ASSIGNED',
        'title': asmt.title,
        'type': issue_type,

        # person-related fields
        'reporter': min(self.EMAILS['Audit Captains']),
        'assignee': min(self.EMAILS['Assignees']),
        'verifier': min(self.EMAILS['Assignees']),
        'ccs': expected_cc_list,
    })
示例#2
0
  def test_new_assessment_people(self, client_mock, _):
    """External Issue for Assessment contains correct people."""
    client_instance = client_mock.return_value
    client_instance.create_issue.return_value = {'issueId': 42}

    self.setup_audit_people({
        role_name: people for role_name, people in self.people.items()
        if role_name in ('Audit Captains', 'Auditors')
    })

    component_id = hash('Component id')
    hotlist_id = hash('Hotlist id')
    issue_type = 'Issue type'
    issue_priority = 'Issue priority'
    issue_severity = 'Issue severity'

    asmt = self.create_asmt_with_issue_tracker(
        role_name_to_people={
            role_name: people for role_name, people in self.people.items()
            if role_name in self.ROLE_NAMES
        },
        issue_tracker={
            'component_id': component_id,
            'hotlist_id': hotlist_id,
            'issue_type': issue_type,
            'issue_priority': issue_priority,
            'issue_severity': issue_severity,
        },
    )

    expected_cc_list = list(
        self.EMAILS['Assignees'] - {min(self.EMAILS['Assignees'])}
    )

    # pylint: disable=protected-access; we assert by non-exported constants
    client_instance.create_issue.assert_called_once_with({
        # common fields
        'comment': (issue_tracker._INITIAL_COMMENT_TMPL %
                    issue_tracker._get_assessment_url(asmt)),
        'component_id': component_id,
        'hotlist_ids': [hotlist_id],
        'priority': issue_priority,
        'severity': issue_severity,
        'status': 'ASSIGNED',
        'title': asmt.title,
        'type': issue_type,

        # person-related fields
        'reporter': min(self.EMAILS['Audit Captains']),
        'assignee': min(self.EMAILS['Assignees']),
        'verifier': min(self.EMAILS['Assignees']),
        'ccs': expected_cc_list,
    })
示例#3
0
    def test_change_assessment_status(self, status, additional_kwargs,
                                      mocked_update_issue):
        """Issue status should be changed for assessment
    with {status} status."""
        email1 = "*****@*****.**"
        assignee_role_id = AccessControlRole.query.filter_by(
            object_type="Assessment", name="Assignees").first().id
        assignees = [factories.PersonFactory(email=email1)]
        iti_issue_id = []
        iti = factories.IssueTrackerIssueFactory(enabled=True)
        iti_issue_id.append(iti.issue_id)
        asmt = iti.issue_tracked_obj
        asmt_title = asmt.title
        with mock.patch.object(issue_tracker,
                               '_is_issue_tracker_enabled',
                               return_value=True):
            acl = [
                acl_helper.get_acl_json(assignee_role_id, assignee.id)
                for assignee in assignees
            ]
            self.api.put(asmt, {
                "access_control_list": acl,
                "status": status,
            })
            kwargs = {
                'component_id': None,
                'severity': None,
                'title': asmt_title,
                'hotlist_ids': [],
                'priority': None,
                'assignee': email1,
                'verifier': email1,
                'ccs': []
            }
            asmt_link = issue_tracker._get_assessment_url(asmt)
            if 'comment' in additional_kwargs:
                additional_kwargs['comment'] = \
                    additional_kwargs['comment'] % (status, asmt_link)
            kwargs.update(additional_kwargs)
            mocked_update_issue.assert_called_once_with(
                iti_issue_id[0], kwargs)

            issue = db.session.query(models.IssuetrackerIssue).get(iti.id)
            self.assertEqual(issue.assignee, email1)
            self.assertEqual(issue.cc_list, "")
示例#4
0
  def test_change_assessment_status(self, status,
                                    additional_kwargs,
                                    mocked_update_issue):
    """Issue status should be changed for assessment
    with {status} status."""
    email1 = "*****@*****.**"
    assignee_role_id = AccessControlRole.query.filter_by(
        object_type="Assessment",
        name="Assignees"
    ).first().id
    assignees = [factories.PersonFactory(email=email1)]
    iti_issue_id = []
    iti = factories.IssueTrackerIssueFactory(enabled=True)
    iti_issue_id.append(iti.issue_id)
    asmt = iti.issue_tracked_obj
    asmt_title = asmt.title
    with mock.patch.object(issue_tracker, '_is_issue_tracker_enabled',
                           return_value=True):
      acl = [acl_helper.get_acl_json(assignee_role_id, assignee.id)
             for assignee in assignees]
      self.api.put(asmt, {
          "access_control_list": acl,
          "status": status,
      })
      kwargs = {'component_id': None,
                'severity': None,
                'title': asmt_title,
                'hotlist_ids': [],
                'priority': None,
                'assignee': email1,
                'verifier': email1,
                'ccs': []}
      asmt_link = issue_tracker._get_assessment_url(asmt)
      if 'comment' in additional_kwargs:
        additional_kwargs['comment'] = \
            additional_kwargs['comment'] % (status, asmt_link)
      kwargs.update(additional_kwargs)
      mocked_update_issue.assert_called_once_with(iti_issue_id[0], kwargs)

      issue = db.session.query(models.IssuetrackerIssue).get(iti.id)
      self.assertEqual(issue.assignee, email1)
      self.assertEqual(issue.cc_list, "")
    def test_new_assessment_people(self, client_mock, _):
        """External Issue for Assessment contains correct people."""
        client_instance = client_mock.return_value
        client_instance.create_issue.return_value = {"issueId": 42}

        self.setup_audit_people({
            role_name: people
            for role_name, people in self.people.items()
            if role_name in ("Audit Captains", "Auditors")
        })

        component_id = hash("Component id")
        hotlist_id = hash("Hotlist id")
        issue_type = "Issue type"
        issue_priority = "Issue priority"
        issue_severity = "Issue severity"

        asmt = self.create_asmt_with_issue_tracker(
            role_name_to_people={
                role_name: people
                for role_name, people in self.people.items()
                if role_name in self.ROLE_NAMES
            },
            issue_tracker={
                "component_id": component_id,
                "hotlist_id": hotlist_id,
                "issue_type": issue_type,
                "issue_priority": issue_priority,
                "issue_severity": issue_severity,
            },
        )

        expected_cc_list = list(self.EMAILS["Assignees"] -
                                {min(self.EMAILS["Assignees"])})

        # pylint: disable=protected-access; we assert by non-exported constants
        client_instance.create_issue.assert_called_once_with({
            # common fields
            "comment": (issue_tracker._INITIAL_COMMENT_TMPL %
                        issue_tracker._get_assessment_url(asmt)),
            "component_id":
            component_id,
            "hotlist_ids": [hotlist_id],
            "priority":
            issue_priority,
            "severity":
            issue_severity,
            "status":
            "ASSIGNED",
            "title":
            asmt.title,
            "type":
            issue_type,

            # person-related fields
            "reporter":
            min(self.EMAILS["Audit Captains"]),
            "assignee":
            min(self.EMAILS["Assignees"]),
            "verifier":
            min(self.EMAILS["Assignees"]),
            "ccs":
            expected_cc_list,
        })