コード例 #1
0
  def test_fill_missing_values_from_audit(self):
    """Check prepare_json_method get missed values from audit."""
    with factories.single_commit():
      audit = factories.AuditFactory()
      factories.IssueTrackerIssueFactory(
          enabled=True,
          issue_tracked_obj=audit,
          component_id=213,
          hotlist_id=333,
          issue_type=constants.DEFAULT_ISSUETRACKER_VALUES['issue_type'],
          issue_priority="S0",
          issue_severity="P0",
      )
      assmt = factories.AssessmentFactory(
          audit=audit,
      )
      factories.IssueTrackerIssueFactory(
          enabled=True,
          issue_tracked_obj=assmt
      )

    audit_issue_tracker_info = audit.issuetracker_issue.to_dict()
    assmt_issue_tracker_info = assmt.issuetracker_issue.to_dict()

    integration_utils.set_values_for_missed_fields(assmt,
                                                   assmt_issue_tracker_info)

    fields_to_check = ["component_id", "hotlist_id", "issue_type",
                       "issue_priority", "issue_severity"]
    for field in fields_to_check:
      self.assertEqual(assmt_issue_tracker_info[field],
                       audit_issue_tracker_info[field])
コード例 #2
0
def prepare_issue_update_json(assmt, issue_tracker_info=None):
    """Prepare issuetracker issue json for Assessment object update."""
    if not issue_tracker_info:
        issue_tracker_info = assmt.issue_tracker

    integration_utils.set_values_for_missed_fields(assmt, issue_tracker_info)
    builder = issue_tracker_params_builder.AssessmentParamsBuilder()
    builder.handle_issue_tracker_info(assmt, issue_tracker_info)
    issue_tracker_params = builder.params
    params = issue_tracker_params.get_issue_tracker_params()
    return params
コード例 #3
0
    def test_fill_missing_values_from_default(self):
        """Check prepare_json_method get missed values from default values."""
        with factories.single_commit():
            assmt = factories.AssessmentFactory()
            factories.IssueTrackerIssueFactory(enabled=True,
                                               issue_tracked_obj=assmt)

        assmt_issue_tracker_info = assmt.issuetracker_issue.to_dict()

        integration_utils.set_values_for_missed_fields(
            assmt, assmt_issue_tracker_info)

        fields_to_check = [
            "component_id", "hotlist_id", "issue_type", "issue_priority",
            "issue_severity"
        ]
        for field in fields_to_check:
            self.assertEqual(assmt_issue_tracker_info[field],
                             DEFAULT_ISSUETRACKER_VALUES[field])
コード例 #4
0
    def test_fill_missing_values_from_assmt(self):
        """Check prepare_json_method get missed values from default values."""
        with factories.single_commit():
            assmt = factories.AssessmentFactory(
                start_date="2015-10-09",
                status="Not Started",
                title="title",
            )
            factories.IssueTrackerIssueFactory(enabled=True,
                                               issue_tracked_obj=assmt)

        assmt_issue_tracker_info = assmt.issuetracker_issue.to_dict()

        integration_utils.set_values_for_missed_fields(
            assmt, assmt_issue_tracker_info)

        self.assertEqual(assmt_issue_tracker_info["title"], assmt.title)
        self.assertEqual(assmt_issue_tracker_info["due_date"],
                         assmt.start_date)
        self.assertEqual(assmt_issue_tracker_info["status"],
                         ASSESSMENT_STATUSES_MAPPING[assmt.status])
コード例 #5
0
def prepare_issue_json(assessment,
                       issue_tracker_info=None,
                       create_issuetracker=False):
    """Create json that will be sent to IssueTracker.

  Args:
      assessment: Instance of Assessment.
      issue_tracker_info: Dict with IssueTracker info.
      create_issuetracker: Bool indicator for crate issuetracker state.

  Returns:
      Dict with IssueTracker issue info.
  """
    if not issue_tracker_info:
        issue_tracker_info = assessment.audit.issuetracker_issue.to_dict()
        issue_tracker_info['title'] = assessment.title
        issue_tracker_info['status'] = ASSESSMENT_STATUSES_MAPPING.get(
            assessment.status)

    integration_utils.normalize_issue_tracker_info(issue_tracker_info)
    integration_utils.set_values_for_missed_fields(assessment,
                                                   issue_tracker_info)
    assignee_email, cc_list = _collect_assessment_emails(assessment)
    if assignee_email is not None:
        issue_tracker_info['assignee'] = assignee_email
        issue_tracker_info['cc_list'] = cc_list

    hotlist_id = issue_tracker_info.get('hotlist_id')
    issue_id = issue_tracker_info.get(
        'issue_id') if issue_tracker_info else None
    issue_params = {
        'component_id': issue_tracker_info['component_id'],
        'hotlist_ids': [hotlist_id] if hotlist_id else [],
        'title': issue_tracker_info['title'],
        'type': issue_tracker_info['issue_type'],
        'priority': issue_tracker_info['issue_priority'],
        'severity': issue_tracker_info['issue_severity'],
        'reporter': get_reporter_email(assessment),
        'assignee': '',
        'verifier': '',
        'status': issue_tracker_info['status'],
        'comment': create_asmnt_comment(assessment, issue_id),
    }
    custom_fields = []

    due_date = issue_tracker_info.get('due_date')
    if due_date:
        custom_fields.append({
            "name": constants.CUSTOM_FIELDS_DUE_DATE,
            "value": due_date.strftime("%Y-%m-%d"),
            "type": "DATE",
            "display_string": constants.CUSTOM_FIELDS_DUE_DATE
        })

    if custom_fields:
        issue_params['custom_fields'] = custom_fields

    assignee = issue_tracker_info.get('assignee')
    if assignee:
        if not issue_tracker_info['status']:
            issue_params['status'] = 'ASSIGNED'
        issue_params['assignee'] = assignee
        issue_params['verifier'] = assignee

    if create_issuetracker:
        cc_list = issue_tracker_info.get('cc_list', [])
        audit_ccs = get_audit_ccs(assessment)
        grouped_ccs = group_cc_emails(audit_ccs, cc_list)
        if grouped_ccs:
            issue_params['ccs'] = grouped_ccs
        else:
            issue_params['ccs'] = []

    return issue_params