def test_add_comment_with_attachment(net_mock, mocked_fake_issue, fake_issue, attachments, random_attachment_num): new_attachment = fake_issue.attachments[random_attachment_num] test_content = ''.join([ random.choice(string.ascii_letters) for _ in range(new_attachment['size']) ]) net_mock.post(api_url('/attachments/'.format(fake_issue.key)), json=new_attachment) net_mock.post(api_url('/issues/{}/comments/'.format(fake_issue.key))) m = mock_open(read_data=test_content) test_comment_text = 'Test text' with patch('yandex_tracker_client.collections.open', m, create=True), \ patch('requests.utils.os.path.basename', return_value='dymmy-file.txt'): mocked_fake_issue.comments.create(text=test_comment_text, attachments=['/dummy-file.txt']) real_request = net_mock.request_history[4].json() #expected request expected_request = { 'text': test_comment_text, 'attachmentIds': [fake_issue.key] } assert any( [real_request[k] == expected_request[k] for k in expected_request])
def test_attachment_delete(net_mock, mocked_fake_issue, fake_issue, random_attachment_num): attachment = fake_issue.attachments[random_attachment_num] net_mock.get(api_url('/issues/{}/attachments/{}'.format( fake_issue.key, attachment['id'])), json=attachment) net_mock.delete(api_url('/issues/{}/attachments/{}'.format( fake_issue.key, attachment['id'])), status_code=204) mocked_fake_issue.attachments[attachment['id']].delete()
def test_create_issue_with_conflict(net_mock, client, fake_issue): net_mock.post(api_url('/issues/'), status_code=409) net_mock.get(api_url('/issues/'), json=[fake_issue.json]) test_request = { 'unique': fake_issue.json['unique'], 'queue': fake_issue.queue, 'summary': fake_issue.json['summary'], } issue = client.issues.create(**test_request) assert issue['unique'] == fake_issue.json['unique']
def test_create_issue_with_conflict_not_found(net_mock, client, fake_issue): net_mock.post(api_url('/issues/'), status_code=409) net_mock.get(api_url('/issues/'), json=[]) test_request = { 'unique': fake_issue.json['unique'], 'queue': fake_issue.queue, 'summary': fake_issue.json['summary'], } with pytest.raises(exceptions.Conflict): issue = client.issues.create(**test_request)
def test_update_issue(net_mock, client, fake_issue): net_mock.get(api_url('/issues/{}'.format(fake_issue.key)), json=fake_issue.json) net_mock.patch(api_url('/issues/{}'.format(fake_issue.key)), json=fake_issue.json) new_summary = 'New summary' issue = client.issues[fake_issue.key] issue.update(summary=new_summary) real_request = net_mock.request_history[1].json() assert real_request['summary'] == new_summary
def test_update_local_field_issue(net_mock, client, fake_issue): net_mock.get(api_url('/issues/{}'.format(fake_issue.key)), json=fake_issue.json) net_mock.patch(api_url('/issues/{}'.format(fake_issue.key)), json=fake_issue.json) new_value = 'new_local_field_value' issue = client.issues[fake_issue.key] issue.update(localTestField=new_value) real_request = net_mock.request_history[1].json() assert real_request[ '6063181a59590573909db929--localTestField'] == new_value
def mocked_random_link(net_mock, fake_issue, mocked_links, random_link_num): fake_link = fake_issue.links[random_link_num] net_mock.get(api_url('/issues/{}/links/{}'.format(fake_issue.key, fake_link['id'])), json=fake_link) return mocked_links[random_link_num]
def mocked_random_comment(net_mock, fake_issue, mocked_comments, random_comment_num): fake_comment = fake_issue.comments[random_comment_num] net_mock.get(api_url('/issues/{}/comments/{}'.format( fake_issue.key, fake_comment['id'])), json=fake_comment) return mocked_comments[random_comment_num]
def test_comment_delete(net_mock, fake_issue, mocked_random_comment, random_comment_num): fake_comment = fake_issue.comments[random_comment_num] net_mock.delete(api_url('/issues/{}/comments/{}'.format( fake_issue.key, fake_comment['id'])), status_code=204) mocked_random_comment.delete()
def test_issue_local_fields(net_mock, client, fake_issue): net_mock.get(api_url('/issues/{}'.format(fake_issue.key)), json=fake_issue.json) issue = client.issues[fake_issue.key] assert issue.localTestField == "local_field_value" assert issue.local_description == "local_description" assert issue.description == "Empty description"
def test_link_delete(net_mock, fake_issue, mocked_random_link, random_link_num): fake_link = fake_issue.links[random_link_num] net_mock.delete(api_url('/issues/{}/links/{}'.format( fake_issue.key, fake_link['id'])), status_code=204) mocked_random_link.delete()
def test_bulkchange_wait(net_mock, client, fake_bulkchange, monkeypatch, terminal_status): fake_bulkchange_done = fake_bulkchange.set_status(terminal_status) net_mock.get( api_url('/bulkchange/' + fake_bulkchange.key), response_list=[{'json': fake_bulkchange.json}, {'json': fake_bulkchange_done.json}]) monkeypatch.setattr(time, 'sleep', lambda s: None) bulkchange = client.bulkchange[fake_bulkchange.key].wait() assert bulkchange.status == terminal_status
def test_archive_version(net_mock, client): net_mock.get(api_url('/versions/1'), json={ "self": api_url('/versions/1'), "id": 1, "version": 1, "queue": { "self": api_url('/queues/TEST'), "id": "138", "key": "TEST", "display": "TEST" }, "name": "1.0", "description": "test version", "released": False, "archived": False, }) version = client.versions['1'] net_mock.post(api_url('/versions/1/_archive'), ) version.perform_action('_archive', 'post', ignore_empty_body=True)
def test_comment_update(net_mock, fake_issue, mocked_random_comment, random_comment_num): expected_text = 'New text' updated_comment = fake_issue.comments[random_comment_num] updated_comment['text'] = expected_text net_mock.patch(api_url('/issues/{}/comments/{}'.format( fake_issue.key, fake_issue.comments[random_comment_num]['id'])), json=updated_comment) mocked_random_comment.update(text=expected_text) real_request = net_mock.request_history[3].json() assert real_request['text'] == expected_text
def test_issue_fields(net_mock, client, fake_issue, issue_field): net_mock.get(api_url('/issues/{}'.format(fake_issue.key)), json=fake_issue.json) issue = client.issues[fake_issue.key] #expected expected_value = (fake_issue.json[issue_field]['display'] if isinstance( fake_issue.json[issue_field], dict) else fake_issue.json[issue_field]) #current current_field = getattr(issue, issue_field) current_value = (current_field.display if hasattr(current_field, 'display') else current_field) assert current_value == expected_value
def test_create_issue(net_mock, client, fake_issue): net_mock.post(api_url('/issues/'), json=fake_issue.json) test_request = { 'queue': fake_issue.queue, 'summary': fake_issue.json['summary'], 'type': { 'key': fake_issue.json['type']['key'] } } client.issues.create(**test_request) real_request = net_mock.request_history[0].json() assert real_request.get('unique') is not None assert any([real_request[k] == test_request[k] for k in test_request])
def test_bulkchange_update(net_mock, client, fake_bulkchange): net_mock.post(api_url('/bulkchange/_update'), json=fake_bulkchange.json) client.bulkchange.update(['TEST-1', 'TEST-2'], priority='minor', tags={'add': ['bulktag']}) real_request = net_mock.request_history[0].json() expected_request = { 'issues': ['TEST-1', 'TEST-2'], 'values': { 'priority': 'minor', 'tags': { 'add': ['bulktag'], }, }, } assert real_request == expected_request
def test_bulkchange_fields(net_mock, client, fake_bulkchange, queue_field): net_mock.get(api_url('/bulkchange/' + fake_bulkchange.key), json=fake_bulkchange.json) bulkchange = client.bulkchange[fake_bulkchange.key] current_field = getattr(bulkchange, queue_field) current_value = ( current_field.display if hasattr(current_field, 'display') else current_field) expected_value = ( fake_bulkchange.json[queue_field]['display'] if isinstance(fake_bulkchange.json[queue_field], dict) else fake_bulkchange.json[queue_field]) assert current_value == expected_value
def test_queue_fields(net_mock, client, fake_queue, queue_field): net_mock.get(api_url('/queues/' + fake_queue.key), json=fake_queue.json) queue = client.queues[fake_queue.key] #expected expected_value = ( fake_queue.json[queue_field]['display'] if isinstance(fake_queue.json[queue_field], dict) else fake_queue.json[queue_field]) #current current_field = getattr(queue, queue_field) current_value = ( current_field.display if hasattr(current_field, 'display') else current_field) assert current_value == expected_value
def test_add_link(net_mock, mocked_fake_issue, fake_issue, mocked_links, random_link_num): fake_link = fake_issue.links[random_link_num] post_json = { "relationship": fake_link['type']['id'], "issue": fake_link['object']['key'] } net_mock.post(api_url('/issues/{}/links/'.format(fake_issue.key)), json=post_json, status_code=204) mocked_fake_issue.links.create(**post_json) real_request = net_mock.request_history[3].json() assert any([real_request[k] == post_json[k] for k in post_json])
def test_attachment_upload(net_mock, mocked_fake_issue, fake_issue, attachments, random_attachment_num): attachment = fake_issue.attachments[random_attachment_num] test_content = ''.join([ random.choice(string.ascii_letters) for _ in range(attachment['size']) ]) net_mock.post(api_url('/issues/{}/attachments/'.format(fake_issue.key))) m = mock_open(read_data=test_content) with patch('yandex_tracker_client.collections.open', m, create=True), \ patch('requests.utils.os.path.basename', return_value='dymmy-file.txt'): mocked_fake_issue.attachments.create('/dummy-file.txt') assert test_content in net_mock.request_history[3].text
def test_bulkchange_move(net_mock, client, fake_bulkchange): net_mock.post(api_url('/bulkchange/_move'), json=fake_bulkchange.json) client.bulkchange.move( ['TEST-1', 'TEST-2'], 'BROWSER', move_all_fields=False, priority='minor', tags={'add': ['bulktag']}) real_request = net_mock.request_history[0].json() expected_request = { 'issues': ['TEST-1', 'TEST-2'], 'queue': 'BROWSER', 'values': { 'priority': 'minor', 'tags': { 'add': ['bulktag'], }, }, 'moveAllFields': False, } assert real_request == expected_request
def test_get_all_queues(net_mock, client, fake_queues, queue_field): net_mock.get(api_url('/queues/'), json=fake_queues.json) queues = client.queues.get_all() queue_num = random.randint(0, fake_queues.count - 1) queue = queues[queue_num] fake_queue = fake_queues[queue_num] #expected expected_value = ( fake_queue.json[queue_field]['display'] if isinstance(fake_queue.json[queue_field], dict) else fake_queue.json[queue_field]) #current current_field = getattr(queue, queue_field) current_value = ( current_field.display if hasattr(current_field, 'display') else current_field) assert current_value == expected_value
def mocked_links(net_mock, mocked_fake_issue, fake_issue): net_mock.get(api_url('/issues/{}/links/'.format(fake_issue.key)), json=fake_issue.links) return list(mocked_fake_issue.links)
def test_issue_not_found(net_mock, client): net_mock.get(api_url('/issues/{}'.format('DUMMY-123')), status_code=404) with pytest.raises(exceptions.NotFound): issue = client.issues['DUMMY-123']
def attachments(net_mock, mocked_fake_issue, fake_issue): net_mock.get(api_url('/issues/{}/attachments/'.format(fake_issue.key)), json=fake_issue.attachments) return list(mocked_fake_issue.attachments)
def mocked_fake_issue(net_mock, client, fake_issue): net_mock.get(api_url('/issues/{}'.format(fake_issue.key)), json=fake_issue.json) return client.issues[fake_issue.key]