def test_map_custom_field(self): """Test that all the fields are correctly mapped""" page = read_file('data/jira/jira_issues_page_1.json') page_json = json.loads(page) issues = page_json['issues'] fields = read_file('data/jira/jira_fields.json') fields_json = json.loads(fields) custom_fields = filter_custom_fields(fields_json) for issue in issues: mapping = map_custom_field(custom_fields, issue['fields']) for k, v in mapping.items(): issue['fields'][k] = v self.assertEqual(issues[0]['fields']['customfield_10301']['id'], custom_fields['customfield_10301']['id']) self.assertEqual(issues[0]['fields']['customfield_10301']['name'], custom_fields['customfield_10301']['name']) self.assertEqual(issues[0]['fields']['customfield_10400']['id'], custom_fields['customfield_10400']['id']) self.assertEqual(issues[0]['fields']['customfield_10400']['name'], custom_fields['customfield_10400']['name']) self.assertEqual(issues[0]['fields']['customfield_10600']['id'], custom_fields['customfield_10600']['id']) self.assertEqual(issues[0]['fields']['customfield_10600']['name'], custom_fields['customfield_10600']['name']) self.assertEqual(issues[0]['fields']['customfield_10603']['id'], custom_fields['customfield_10603']['id']) self.assertEqual(issues[0]['fields']['customfield_10603']['name'], custom_fields['customfield_10603']['name']) self.assertEqual(issues[1]['fields']['customfield_10301']['id'], custom_fields['customfield_10301']['id']) self.assertEqual(issues[1]['fields']['customfield_10301']['name'], custom_fields['customfield_10301']['name']) self.assertEqual(issues[1]['fields']['customfield_10400']['id'], custom_fields['customfield_10400']['id']) self.assertEqual(issues[1]['fields']['customfield_10400']['name'], custom_fields['customfield_10400']['name']) self.assertEqual(issues[1]['fields']['customfield_10600']['id'], custom_fields['customfield_10600']['id']) self.assertEqual(issues[1]['fields']['customfield_10600']['name'], custom_fields['customfield_10600']['name']) self.assertEqual(issues[1]['fields']['customfield_10603']['id'], custom_fields['customfield_10603']['id']) self.assertEqual(issues[1]['fields']['customfield_10603']['name'], custom_fields['customfield_10603']['name'])
def test_filter_custom_fields(self): """Test that all the fields returned are just custom""" body = read_file('data/jira/jira_fields.json') httpretty.register_uri(httpretty.GET, JIRA_FIELDS_URL, body=body, status=200) body_json = json.loads(body) custom_fields = filter_custom_fields(body_json) for key in custom_fields.keys(): self.assertEqual(custom_fields[key]['custom'], True)
def test_fetch(self): """Test whether a list of issues is returned""" requests = [] bodies_json = [read_file('data/jira/jira_issues_page_1.json'), read_file('data/jira/jira_issues_page_2.json')] body = read_file('data/jira/jira_fields.json') def request_callback(method, uri, headers): body = bodies_json.pop(0) requests.append(httpretty.last_request()) return (200, headers, body) httpretty.register_uri(httpretty.GET, JIRA_SEARCH_URL, responses=[httpretty.Response(body=request_callback) for _ in range(2)]) httpretty.register_uri(httpretty.GET, JIRA_FIELDS_URL, body=body, status=200) jira = Jira(JIRA_SERVER_URL) issues = [issue for issue in jira.fetch()] body_json = json.loads(body) custom_fields = filter_custom_fields(body_json) expected_req = [ { 'expand': ['renderedFields,transitions,operations,changelog'], 'jql': ['updated > 0 order by updated asc'], 'startAt': ['0'], 'maxResults': ['100'] }, { 'expand': ['renderedFields,transitions,operations,changelog'], 'jql': ['updated > 0 order by updated asc'], 'startAt': ['2'], 'maxResults': ['100'] } ] for i in range(len(expected_req)): self.assertEqual(requests[i].method, 'GET') self.assertRegex(requests[i].path, '/rest/api/2/search') self.assertDictEqual(requests[i].querystring, expected_req[i]) self.assertEqual(len(issues), 3) self.assertEqual(issues[0]['origin'], 'http://example.com') self.assertEqual(issues[0]['uuid'], 'dfe008e19e2b720d1d377607680e90c250134164') self.assertEqual(issues[0]['updated_on'], 1457015567) self.assertEqual(issues[0]['category'], 'issue') self.assertEqual(issues[0]['tag'], 'http://example.com') self.assertEqual(issues[0]['data']['key'], 'HELP-6043') self.assertEqual(issues[0]['data']['fields']['issuetype']['name'], 'extRequest') self.assertEqual(issues[0]['data']['fields']['creator']['name'], 'user2') self.assertEqual(issues[0]['data']['fields']['assignee']['name'], 'user1') self.assertEqual(issues[0]['data']['fields']['assignee']['name'], 'user1') self.assertEqual(issues[0]['data']['fields']['assignee']['name'], 'user1') self.assertEqual(issues[0]['data']['fields']['assignee']['name'], 'user1') self.assertEqual(issues[0]['data']['fields']['customfield_10301']['id'], custom_fields['customfield_10301']['id']) self.assertEqual(issues[0]['data']['fields']['customfield_10301']['name'], custom_fields['customfield_10301']['name']) self.assertEqual(issues[0]['data']['fields']['customfield_10400']['id'], custom_fields['customfield_10400']['id']) self.assertEqual(issues[0]['data']['fields']['customfield_10400']['name'], custom_fields['customfield_10400']['name']) self.assertEqual(issues[0]['data']['fields']['customfield_10600']['id'], custom_fields['customfield_10600']['id']) self.assertEqual(issues[0]['data']['fields']['customfield_10600']['name'], custom_fields['customfield_10600']['name']) self.assertEqual(issues[0]['data']['fields']['customfield_10603']['id'], custom_fields['customfield_10603']['id']) self.assertEqual(issues[0]['data']['fields']['customfield_10603']['name'], custom_fields['customfield_10603']['name']) self.assertEqual(issues[1]['origin'], 'http://example.com') self.assertEqual(issues[1]['uuid'], '830747ed8cc9af800fcd6284e9dccfdb11daf15b') self.assertEqual(issues[1]['updated_on'], 1457015417) self.assertEqual(issues[1]['category'], 'issue') self.assertEqual(issues[1]['tag'], 'http://example.com') self.assertEqual(issues[1]['data']['key'], 'HELP-6042') self.assertEqual(issues[1]['data']['fields']['issuetype']['name'], 'extRequest') self.assertEqual(issues[1]['data']['fields']['creator']['name'], 'user2') self.assertEqual(issues[1]['data']['fields']['assignee']['name'], 'user1') self.assertEqual(issues[1]['data']['fields']['customfield_10301']['id'], custom_fields['customfield_10301']['id']) self.assertEqual(issues[1]['data']['fields']['customfield_10301']['name'], custom_fields['customfield_10301']['name']) self.assertEqual(issues[1]['data']['fields']['customfield_10400']['id'], custom_fields['customfield_10400']['id']) self.assertEqual(issues[1]['data']['fields']['customfield_10400']['name'], custom_fields['customfield_10400']['name']) self.assertEqual(issues[1]['data']['fields']['customfield_10600']['id'], custom_fields['customfield_10600']['id']) self.assertEqual(issues[1]['data']['fields']['customfield_10600']['name'], custom_fields['customfield_10600']['name']) self.assertEqual(issues[1]['data']['fields']['customfield_10603']['id'], custom_fields['customfield_10603']['id']) self.assertEqual(issues[1]['data']['fields']['customfield_10603']['name'], custom_fields['customfield_10603']['name']) self.assertEqual(issues[2]['origin'], 'http://example.com') self.assertEqual(issues[2]['uuid'], '2e988d555915991228d81144b018c8321d628265') self.assertEqual(issues[2]['updated_on'], 1457006245) self.assertEqual(issues[2]['category'], 'issue') self.assertEqual(issues[2]['tag'], 'http://example.com') self.assertEqual(issues[2]['data']['key'], 'HELP-6041') self.assertEqual(issues[2]['data']['fields']['issuetype']['name'], 'extRequest') self.assertEqual(issues[2]['data']['fields']['creator']['name'], 'user2') self.assertEqual(issues[2]['data']['fields']['assignee']['name'], 'user3') self.assertEqual(issues[2]['data']['fields']['customfield_10301']['id'], custom_fields['customfield_10301']['id']) self.assertEqual(issues[2]['data']['fields']['customfield_10301']['name'], custom_fields['customfield_10301']['name']) self.assertEqual(issues[2]['data']['fields']['customfield_10400']['id'], custom_fields['customfield_10400']['id']) self.assertEqual(issues[2]['data']['fields']['customfield_10400']['name'], custom_fields['customfield_10400']['name']) self.assertEqual(issues[2]['data']['fields']['customfield_10600']['id'], custom_fields['customfield_10600']['id']) self.assertEqual(issues[2]['data']['fields']['customfield_10600']['name'], custom_fields['customfield_10600']['name']) self.assertEqual(issues[2]['data']['fields']['customfield_10603']['id'], custom_fields['customfield_10603']['id']) self.assertEqual(issues[2]['data']['fields']['customfield_10603']['name'], custom_fields['customfield_10603']['name'])
def test_fetch(self): """Test whether a list of issues is returned""" requests = [] bodies_json = [read_file('data/jira/jira_issues_page_1.json'), read_file('data/jira/jira_issues_page_2.json')] comment_json = read_file('data/jira/jira_comments_issue_page_2.json') empty_comment = read_file('data/jira/jira_comments_issue_empty.json') body = read_file('data/jira/jira_fields.json') def request_callback(method, uri, headers): body = bodies_json.pop(0) requests.append(httpretty.last_request()) return 200, headers, body httpretty.register_uri(httpretty.GET, JIRA_SEARCH_URL, responses=[httpretty.Response(body=request_callback) for _ in range(2)]) httpretty.register_uri(httpretty.GET, JIRA_ISSUE_1_COMMENTS_URL, body=empty_comment, status=200) httpretty.register_uri(httpretty.GET, JIRA_ISSUE_2_COMMENTS_URL, body=comment_json, status=200) httpretty.register_uri(httpretty.GET, JIRA_ISSUE_3_COMMENTS_URL, body=empty_comment, status=200) httpretty.register_uri(httpretty.GET, JIRA_FIELDS_URL, body=body, status=200) jira = Jira(JIRA_SERVER_URL) issues = [issue for issue in jira.fetch()] body_json = json.loads(body) custom_fields = filter_custom_fields(body_json) expected_req = [ { 'expand': ['renderedFields,transitions,operations,changelog'], 'jql': ['updated > 0 order by updated asc'], 'startAt': ['0'], 'maxResults': ['100'] }, { 'expand': ['renderedFields,transitions,operations,changelog'], 'jql': ['updated > 0 order by updated asc'], 'startAt': ['2'], 'maxResults': ['100'] } ] for i in range(len(expected_req)): self.assertEqual(requests[i].method, 'GET') self.assertRegex(requests[i].path, '/rest/api/2/search') self.assertDictEqual(requests[i].querystring, expected_req[i]) self.assertEqual(len(issues), 3) issue = issues[0] self.assertEqual(issue['origin'], 'http://example.com') self.assertEqual(issue['uuid'], '6a7ba2a01aee56603b9d8a5f6b40c843fc089b2f') self.assertEqual(issue['updated_on'], 1457015567) self.assertEqual(issue['category'], 'issue') self.assertEqual(issue['tag'], 'http://example.com') self.assertEqual(issue['data']['key'], 'HELP-6043') self.assertEqual(issue['data']['fields']['issuetype']['name'], 'extRequest') self.assertEqual(issue['data']['fields']['creator']['name'], 'user2') self.assertEqual(issue['data']['fields']['assignee']['name'], 'user1') self.assertEqual(issue['data']['fields']['assignee']['name'], 'user1') self.assertEqual(issue['data']['fields']['assignee']['name'], 'user1') self.assertEqual(issue['data']['fields']['assignee']['name'], 'user1') self.assertEqual(issue['data']['fields']['customfield_10301']['id'], custom_fields['customfield_10301']['id']) self.assertEqual(issue['data']['fields']['customfield_10301']['name'], custom_fields['customfield_10301']['name']) self.assertEqual(issue['data']['fields']['customfield_10400']['id'], custom_fields['customfield_10400']['id']) self.assertEqual(issue['data']['fields']['customfield_10400']['name'], custom_fields['customfield_10400']['name']) self.assertEqual(issue['data']['fields']['customfield_10600']['id'], custom_fields['customfield_10600']['id']) self.assertEqual(issue['data']['fields']['customfield_10600']['name'], custom_fields['customfield_10600']['name']) self.assertEqual(issue['data']['fields']['customfield_10603']['id'], custom_fields['customfield_10603']['id']) self.assertEqual(issue['data']['fields']['customfield_10603']['name'], custom_fields['customfield_10603']['name']) self.assertEqual(issue['data']['comments_data'], []) issue = issues[1] self.assertEqual(issue['origin'], 'http://example.com') self.assertEqual(issue['uuid'], '3c3d67925b108a37f88cc6663f7f7dd493fa818c') self.assertEqual(issue['updated_on'], 1457015417) self.assertEqual(issue['category'], 'issue') self.assertEqual(issue['tag'], 'http://example.com') self.assertEqual(issue['data']['key'], 'HELP-6042') self.assertEqual(issue['data']['fields']['issuetype']['name'], 'extRequest') self.assertEqual(issue['data']['fields']['creator']['name'], 'user2') self.assertEqual(issue['data']['fields']['assignee']['name'], 'user1') self.assertEqual(issue['data']['fields']['customfield_10301']['id'], custom_fields['customfield_10301']['id']) self.assertEqual(issue['data']['fields']['customfield_10301']['name'], custom_fields['customfield_10301']['name']) self.assertEqual(issue['data']['fields']['customfield_10400']['id'], custom_fields['customfield_10400']['id']) self.assertEqual(issue['data']['fields']['customfield_10400']['name'], custom_fields['customfield_10400']['name']) self.assertEqual(issue['data']['fields']['customfield_10600']['id'], custom_fields['customfield_10600']['id']) self.assertEqual(issue['data']['fields']['customfield_10600']['name'], custom_fields['customfield_10600']['name']) self.assertEqual(issue['data']['fields']['customfield_10603']['id'], custom_fields['customfield_10603']['id']) self.assertEqual(issue['data']['fields']['customfield_10603']['name'], custom_fields['customfield_10603']['name']) self.assertEqual(len(issue['data']['comments_data']), 2) self.assertEqual(issue['data']['comments_data'][0]['author']['displayName'], 'Tim Monks') self.assertEqual(issue['data']['comments_data'][1]['author']['displayName'], 'Scott Monks') issue = issues[2] self.assertEqual(issue['origin'], 'http://example.com') self.assertEqual(issue['uuid'], '1c7765e2a5d27495cf389f5f951c544693c4655f') self.assertEqual(issue['updated_on'], 1457006245) self.assertEqual(issue['category'], 'issue') self.assertEqual(issue['tag'], 'http://example.com') self.assertEqual(issue['data']['key'], 'HELP-6041') self.assertEqual(issue['data']['fields']['issuetype']['name'], 'extRequest') self.assertEqual(issue['data']['fields']['creator']['name'], 'user2') self.assertEqual(issue['data']['fields']['assignee']['name'], 'user3') self.assertEqual(issue['data']['fields']['customfield_10301']['id'], custom_fields['customfield_10301']['id']) self.assertEqual(issue['data']['fields']['customfield_10301']['name'], custom_fields['customfield_10301']['name']) self.assertEqual(issue['data']['fields']['customfield_10400']['id'], custom_fields['customfield_10400']['id']) self.assertEqual(issue['data']['fields']['customfield_10400']['name'], custom_fields['customfield_10400']['name']) self.assertEqual(issue['data']['fields']['customfield_10600']['id'], custom_fields['customfield_10600']['id']) self.assertEqual(issue['data']['fields']['customfield_10600']['name'], custom_fields['customfield_10600']['name']) self.assertEqual(issue['data']['fields']['customfield_10603']['id'], custom_fields['customfield_10603']['id']) self.assertEqual(issue['data']['fields']['customfield_10603']['name'], custom_fields['customfield_10603']['name']) self.assertEqual(issue['data']['comments_data'], [])