Example #1
0
def test_api_source_list(get):
    user = factories.User()
    token = user.create_api_token()
    source1 = factories.Source(users=[user], integration_name='github')
    source2 = factories.Source(users=[user], integration_name='api')
    source3 = factories.Source(users=[], integration_name='s3')
    code, data = get('/api/source', token=token.token)
    assert code == 200
    assert len(data['sources']) == 2
    assert data['sources'][0]['id'] == source1.id
    assert data['sources'][0]['name'] == source1.name
    assert data['sources'][1]['id'] == source2.id
    assert data['sources'][1]['name'] == source2.name
Example #2
0
def test_api_source_get_foreign_private(get):
    user = factories.User()
    token = user.create_api_token()
    source = factories.Source(integration_name='api', conf={'private': True})
    code, data = get('/api/source/%s' % source.id, token=token.token)
    assert code == 403
    assert data['message'] == 'Forbidden'
Example #3
0
def test_api_source_job_create_non_api_integration_source(post):
    user = factories.User()
    token = user.create_api_token()
    source = factories.Source(users=[user], integration_name='github')
    code, data = post('/api/source/%s/job' % source.id, {}, token=token.token)
    assert code == 403
    assert data['message'].startswith('Forbidden')
Example #4
0
def test_api_source_job_create_empty_body(post):
    user = factories.User()
    token = user.create_api_token()
    source = factories.Source(users=[user], integration_name='api')
    code, data = post('/api/source/%s/job' % source.id, {}, token=token.token)
    assert code == 400
    assert data['message'] == 'Missing configuration'
Example #5
0
def test_api_source_job_get_not_found(get):
    user = factories.User()
    token = user.create_api_token()
    source = factories.Source(users=[user], integration_name='api')
    code, data = get('/api/source/%s/job/not-existent' % source.id, token=token.token)
    assert code == 404
    assert data['message'] == 'Not Found'
Example #6
0
def test_api_source_job_create_foreign_private_source(post):
    user = factories.User()
    token = user.create_api_token()
    source = factories.Source(users=[], integration_name='api', conf={'private': True})
    code, data = post('/api/source/%s/job' % source.id, {}, token=token.token)
    assert code == 403
    assert data['message'] == 'Forbidden'
Example #7
0
def test_api_source_get(get):
    user = factories.User()
    token = user.create_api_token()
    source = factories.Source(users=[user], integration_name='github')
    code, data = get('/api/source/%s' % source.id, token=token.token)
    assert code == 200
    assert data['source']['id'] == source.id
    assert data['source']['name'] == source.name
Example #8
0
def test_api_source_job_create_wrong_params(post):
    user = factories.User()
    token = user.create_api_token()
    source = factories.Source(users=[user], integration_name='api')
    payload = {'not_files': [{'source': 'http://example.com'}]}
    code, data = post('/api/source/%s/job' % source.id, payload, token=token.token)
    assert code == 400
    assert data['message'] == 'Invalid configuration'
Example #9
0
def test_api_source_get_own_private(get):
    user = factories.User()
    token = user.create_api_token()
    source = factories.Source(users=[user],
        integration_name='api', conf={'private': True})
    code, data = get('/api/source/%s' % source.id, token=token.token)
    assert code == 200
    assert data['source']['id'] == source.id
    assert data['source']['name'] == source.name
Example #10
0
def test_api_source_job_get(get):
    user = factories.User()
    token = user.create_api_token()
    source = factories.Source(users=[user],
        integration_name='api', conf={'private': True})
    job = factories.Job(source=source)
    code, data = get('/api/source/%s/job/%s' % (source.id, job.id), token=token.token)
    assert code == 200
    assert data['job']['id'] == job.id
Example #11
0
def test_api_source_job_create(post):
    user = factories.User()
    token = user.create_api_token()
    source = factories.Source(users=[user], integration_name='api')
    payload = {'source': [{'source': 'http://example.com'}]}
    with mock.patch('goodtablesio.tasks.validate'):
        code, data = post('/api/source/%s/job' % source.id, payload, token=token.token)
    job = Job.get(data['job']['id'])
    assert code == 200
    assert job.source == source
Example #12
0
def test_api_source_job_list(get):
    source = factories.Source(integration_name='api')
    job1 = factories.Job(source=source)
    job2 = factories.Job(source=source)
    user = factories.User()
    token = user.create_api_token()
    code, data = get('/api/source/%s/job' % source.id, token=token.token)
    assert code == 200
    assert data['jobs'][0]['id'] == job2.id
    assert data['jobs'][1]['id'] == job1.id
Example #13
0
def test_set_job_number(celery_app):

    source1 = factories.Source(integration_name='github', _save_in_db=True)
    source2 = factories.Source(integration_name='github', _save_in_db=True)

    assert source1.job_number == 1
    assert source2.job_number == 1

    job1 = factories.Job(source=source1, _save_in_db=True)
    job2 = factories.Job(source=source1, _save_in_db=True)
    job3 = factories.Job(source=source2, _save_in_db=True)
    job4 = factories.Job(source=source1, _save_in_db=True)

    assert source1.job_number == 4
    assert source2.job_number == 2

    assert job1.number == 1
    assert job2.number == 2
    assert job3.number == 1
    assert job4.number == 3
Example #14
0
def test_api_source_job_create_file_upload(celery_app, post_form, sample_csv, sample_tableschema):
    user = factories.User()
    token = user.create_api_token()
    source = factories.Source(users=[user], integration_name='api')
    payload = {
        'data': json.dumps({'source': [{'source': 'file1', 'schema': 'file2'}]}),
        'file1': (sample_csv, 'data.csv'),
        'file2': (sample_tableschema, 'schema.json'),
    }
    code, data = post_form('/api/source/%s/job' % source.id, payload, token=token.token)
    job = Job.get(data['job']['id'])
    assert code == 200
    assert job.source == source
    assert job.report['valid'] is True
    assert job.report['table-count'] == 1
    assert job.report['tables'][0]['source'] == 'data.csv'
    assert job.report['tables'][0]['row-count'] == 3