Example #1
0
def test_api_repo_list(client):
    user = factories.User(github_oauth_token='token')
    repo1 = factories.GithubRepo(name='name1', users=[user])
    repo2 = factories.GithubRepo(name='name2', users=[user])
    with client.session_transaction() as session:
        session['user_id'] = user.id
    response = client.get('/github/api/repo')
    assert response.status_code == 200
    assert get_response_data(response) == {
        'repos': [
            {
                'id': repo1.id,
                'name': repo1.name,
                'active': repo1.active
            },
            {
                'id': repo2.id,
                'name': repo2.name,
                'active': repo2.active
            },
        ],
        'syncing':
        False,
        'error':
        None,
    }
Example #2
0
def test_create_job_pr_other_action(set_commit_status, run_validation, client):

    user = factories.User(github_oauth_token='xxx')
    source = factories.GithubRepo(name='test-org/example',
                                  users=[user])

    data = json.dumps({
      'action': 'labeled',
      'pull_request': {
          'number': 3,
          'title': 'Test PR',
          'user': {
              'login': '******',
          },

          'head': {
              'repo': {'name': 'example', 'owner': {'login': '******'}},
              'sha': 'test-sha',
          },
          'base': {
              'repo': {'name': 'example', 'owner': {'login': '******'}},
          }
       },
    })
    signature = create_signature(settings.GITHUB_HOOK_SECRET, data)
    response = client.post(
        '/github/hook',
        headers={'X-Hub-Signature': signature},
        content_type='application/json',
        data=data)

    assert response.status_code == 200
    assert len(source.jobs) == 0
Example #3
0
def test_create_job_pr(set_commit_status, run_validation, client):

    user = factories.User(github_oauth_token='xxx')
    factories.GithubRepo(name='test-org/example',
                         users=[user])

    data = json.dumps({
      'action': 'opened',
      'pull_request': {
          'number': 3,
          'title': 'Test PR',
          'user': {
              'login': '******',
          },

          'head': {
              'repo': {'name': 'example', 'owner': {'login': '******'}},
              'sha': 'test-sha',
          },
          'base': {
              'repo': {'name': 'example', 'owner': {'login': '******'}},
          }
       },
    })
    signature = create_signature(settings.GITHUB_HOOK_SECRET, data)
    response = client.post(
        '/github/hook',
        headers={'X-Hub-Signature': signature},
        content_type='application/json',
        data=data)
    job_id = get_response_data(response)['job_id']
    job = models.job.get(job_id)
    assert job['id'] == job_id
    assert job['created']
    assert job['status'] == 'created'
Example #4
0
def test_create_job_push(set_commit_status, run_validation, client):

    user = factories.User(github_oauth_token='xxx')
    factories.GithubRepo(name='test-org/example',
                         users=[user])

    data = json.dumps({
        'ref': 'refs/head/some-branch',
        'repository': {
            'name': 'example',
            'owner': {'name': 'test-org'},
        },
        'head_commit': {
            'id': 'xxx',
            'message': 'Test commit', 'author': {'username': '******'}},
    })
    signature = create_signature(settings.GITHUB_HOOK_SECRET, data)
    response = client.post(
        '/github/hook',
        headers={'X-Hub-Signature': signature},
        content_type='application/json',
        data=data)
    job_id = get_response_data(response)['job_id']
    job = models.job.get(job_id)
    assert job['id'] == job_id
    assert job['created']
    assert job['status'] == 'created'
Example #5
0
def test_signal_sets_status(set_commit_status):

    conf = {
        'owner': 'test-org',
        'repo': 'test-repo',
        'sha': 'abcde',
        'is_pr': True
    }
    integration = factories.Integration()
    repo = factories.GithubRepo(integration_name=integration.name)
    job = factories.Job(integration_name='github',
                        conf=conf,
                        status='success',
                        number=3,
                        source=repo)

    post_task_handler(retval=job.to_dict(),
                      kwargs={'job_id': job.id},
                      state='SUCCESS')

    set_commit_status.assert_called_with(
        'success',
        owner='test-org',
        repo='test-repo',
        sha='abcde',
        is_pr=True,
        job_number=3,
        tokens=job.source.tokens,
    )
Example #6
0
def test_create_job(set_commit_status, client, celery_app):

    # TODO: refactor to not use actual calls!
    user = factories.User(github_oauth_token=settings.GITHUB_API_TOKEN)
    factories.GithubRepo(name='frictionlessdata/goodtables.io-example',
                         users=[user])

    data = json.dumps({
        'repository': {
            'name': 'goodtables.io-example',
            'owner': {
                'name': 'frictionlessdata'
            },
        },
        'head_commit': {
            'id': 'd5be243487d9882d7f762e7fa04b36b900164a59'
        },
    })
    signature = create_signature(settings.GITHUB_HOOK_SECRET, data)
    response = client.post('/github/hook',
                           headers={'X-Hub-Signature': signature},
                           content_type='application/json',
                           data=data)
    job_id = get_response_data(response)['job_id']
    job = models.job.get(job_id)
    assert job['id'] == job_id
    assert job['created']
    assert job['finished']
    assert job['status'] == 'failure'
    assert job['report']
Example #7
0
def test_update():
    repo = factories.GithubRepo()
    (database['session'].query(GithubRepo).filter_by(id=repo.id).update(
        {'name': 'owner/new_repo'}))
    database['session'].commit()
    repos = database['session'].query(GithubRepo).all()
    assert len(repos) == 1
    assert repos[0].repo == 'new_repo'
Example #8
0
def test_badge_works_on_github_repos(client):

    repo = factories.GithubRepo()
    factories.Job(source=repo, integration_name='github', status='success')

    response = client.get('/badge/github/{}/{}.svg'.format(
        repo.owner, repo.repo))

    assert response.content_type == 'image/svg+xml'
    assert b'>valid</text></g>' in response.get_data()
Example #9
0
def test_api_repo_deactivate(deactivate_hook, client):
    user = factories.User(github_oauth_token='token')
    repo = factories.GithubRepo(name='owner/repo', users=[user])
    with client.session_transaction() as session:
        session['user_id'] = user.id
    response = client.get('/github/api/repo/%s/deactivate' % repo.id)
    deactivate_hook.assert_called_with('token', 'owner', 'repo')
    assert response.status_code == 200
    assert get_response_data(response) == {
        'error': None,
    }
Example #10
0
def test_api_repo(client):
    user = factories.User(github_oauth_token='token')
    repo = factories.GithubRepo(name='name', users=[user])
    with client.session_transaction() as session:
        session['user_id'] = user.id
    response = client.get('/github/api/repo/%s' % repo.id)
    assert response.status_code == 200
    assert get_response_data(response) == {
        'repo': {'id': repo.id, 'name': repo.name, 'active': repo.active,
                 'integration_name': 'github'},
        'error': None,
    }
Example #11
0
def test_delete_bucket():
    user = factories.User()
    factories.GithubRepo(users=[user], active=True)
    bucket = factories.S3Bucket(users=[user], active=True)
    bucket = database['session'].query(S3Bucket).one()
    database['session'].delete(bucket)
    database['session'].commit()
    users = database['session'].query(User).all()
    buckets = database['session'].query(S3Bucket).all()
    assert len(users) == 1
    assert len(users[0].sources) == 1
    assert len(buckets) == 0
Example #12
0
def test_api_repo_activate(get_default_repo_details, set_commit_status,
        run_validation, activate_hook, client):
    get_default_repo_details.return_value = None
    user = factories.User(github_oauth_token='token')
    repo = factories.GithubRepo(name='owner/repo', users=[user])
    with client.session_transaction() as session:
        session['user_id'] = user.id
    response = client.get('/github/api/repo/%s/activate' % repo.id)
    activate_hook.assert_called_with('token', 'owner', 'repo')
    assert response.status_code == 200
    assert get_response_data(response) == {
        'error': None,
    }
Example #13
0
def test_api_repo_not_authorized(client):
    user = factories.User(github_oauth_token='token')
    repo = factories.GithubRepo(name='name', users=[user])
    response = client.get('/github/api/repo/%s' % repo.id)
    assert response.status_code == 401