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])
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
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])
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])
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