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
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'
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')
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'
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'
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'
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
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'
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
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
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
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
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
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