Пример #1
0
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])
Пример #2
0
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
Пример #7
0
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]
Пример #8
0
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]
Пример #9
0
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"
Пример #11
0
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
Пример #13
0
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)
Пример #14
0
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
Пример #19
0
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
Пример #20
0
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])
Пример #21
0
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
Пример #23
0
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
Пример #24
0
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']
Пример #26
0
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)
Пример #27
0
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]