def test_contributor_export(app): raw = post(app, '/contributors', '{"id": "id_test", "name":"name_test", "data_prefix":"AAA"}') assert raw.status_code == 201 raw = post(app, '/contributors/id_test/actions/export', {}) assert raw.status_code == 201 r = to_json(raw) assert 'job' in r job = r.get('job') assert job.get('action_type') == 'contributor_export' raw_job = app.get('/jobs') assert raw_job.status_code == 200 r_jobs = to_json(raw_job) assert len(r_jobs['jobs']) == 1 assert r_jobs.get('jobs')[0]['id'] == job['id'] raw_job = app.get('/jobs/{}'.format(job['id'])) assert raw_job.status_code == 200 r_jobs = to_json(raw_job) assert len(r_jobs['jobs']) == 1 assert r_jobs.get('jobs')[0]['id'] == job['id'] raw_job = app.get('/jobs/toto') assert raw_job.status_code == 404
def test_post_ds_two_data_source(app, contributor): """ using /data_sources endpoint """ post_ds = { "name": "data_source_name1", "input": { "type": "url", "url": "http://stif.com/od.zip" } } raw = post(app, '/contributors/id_test/data_sources', json.dumps(post_ds)) assert raw.status_code == 201, print(to_json(raw)) post_ds = { "name": "data_source_name2", "input": { "type": "url", "url": "http://stif.com/od.zip" } } raw = post(app, '/contributors/id_test/data_sources', json.dumps(post_ds)) assert raw.status_code == 201, print(to_json(raw)) raw = app.get('/contributors/id_test/data_sources') r = to_json(raw) assert raw.status_code == 200, print(r) assert len(r["data_sources"]) == 2 assert r["data_sources"][0]["id"] != r["data_sources"][1]["id"]
def test_post_ds_duplicate_two_data_source(app, contributor): """ using /data_sources endpoint """ post_ds = { "id": "duplicate_id", "name": "data_source_name1", "input": { "type": "url", "url": "http://stif.com/od.zip" } } raw = post(app, '/contributors/id_test/data_sources', json.dumps(post_ds)) assert raw.status_code == 201, print(to_json(raw)) post_ds = { "id": "duplicate_id", "name": "data_source_name2", "input": { "type": "url", "url": "http://stif.com/od.zip" } } raw = post(app, '/contributors/id_test/data_sources', json.dumps(post_ds)) payload = to_json(raw) assert raw.status_code == 409, print(payload) assert payload['error'] == "Duplicate data_source id 'duplicate_id'"
def test_add_contributors_unique_data_suffix_ok(app): raw = post(app, '/contributors', '{"id": "id_test1", "name":"name_test1", "data_prefix":"AAA"}') assert raw.status_code == 201 raw = post(app, '/contributors', '{"id": "id_test2", "name":"name_test2", "data_prefix":"AAB"}') assert raw.status_code == 201 raw = app.get('/contributors') r = to_json(raw) assert len(r["contributors"]) == 2
def test_add_data_source(app, coverage, data_source): raw = post(app, '/coverages/jdr/data_sources', json.dumps({"id": data_source.get('id')})) r = to_json(raw) assert raw.status_code == 200 data_sources = r.get('coverages')[0].get('data_sources') assert isinstance(data_sources, list) assert len(data_sources) == 1 assert data_sources[0] == data_source.get('id') # test add existing data_source in coverage raw = post(app, '/coverages/jdr/data_sources', json.dumps({"id": data_source.get('id')})) r = to_json(raw) assert raw.status_code == 409 assert r.get('error') == 'Data source id {} already exists in coverage jdr.'.format(data_source.get('id'))
def test_add_coverage_with_all_env(app): raw = post(app, '/coverages', '''{"id": "id_test", "name": "name of the coverage", "environments" : { "preproduction": {"name": "pre", "tyr_url": "http://pre.bar/"}, "production": {"name": "prod", "tyr_url": "http://prod.bar/"}, "integration": {"name": "sim", "tyr_url": "http://int.bar/"} }}''') assert raw.status_code == 201 raw = app.get('/coverages') r = to_json(raw) assert len(r["coverages"]) == 1 assert isinstance(r["coverages"], list) coverage = r["coverages"][0] assert coverage["id"] == "id_test" assert coverage["name"] == "name of the coverage" assert 'environments' in coverage assert 'production' in coverage['environments'] assert 'preproduction' in coverage['environments'] assert 'integration' in coverage['environments'] assert coverage['environments']['preproduction']['name'] == 'pre' assert coverage['environments']['preproduction']['tyr_url'] == 'http://pre.bar/' assert coverage['environments']['production']['name'] == 'prod' assert coverage['environments']['production']['tyr_url'] == 'http://prod.bar/' assert coverage['environments']['integration']['name'] == 'sim' assert coverage['environments']['integration']['tyr_url'] == 'http://int.bar/'
def test_delete_contributors_returns_success(app): raw = app.get('/contributors/id_test') assert raw.status_code == 404 raw = post(app, '/contributors', '{"id": "id_test", "name": "name_test", "data_prefix":"AAA"}') assert raw.status_code == 201 raw = app.delete('/contributors/id_test') assert raw.status_code == 204 raw = app.get('/contributors/id_test') assert raw.status_code == 404 raw = post(app, '/contributors', '{"id": "id_test2", "name": "name_test2", "data_prefix":"AAA"}') assert raw.status_code == 201 raw = app.get('/contributors') r = to_json(raw) assert len(r["contributors"]) == 1
def test_post_contrib_one_data_source_with_id(app): ''' using /contributors endpoint ''' post_data = {"id": "id_test", "name": "name_test", "data_prefix": "AAA"} post_data["preprocesses"] = [{ "id": "toto", "type": "Ruspell", "source_params": { "tc_data": { "key": "data_sources_id", "value": "datasource_stif" }, "bano_data": { "key": "data_sources_id", "value": "bano_75" } } }] raw = post(app, '/contributors', json.dumps(post_data)) assert raw.status_code == 201, print(to_json(raw)) raw = app.get('/contributors/id_test/') r = to_json(raw) assert raw.status_code == 200, print(r) assert len(r["contributors"][0]["preprocesses"]) == 1
def test_post_contrib_one_data_source_with_data_format(app): """ using /contributors endpoint """ post_data = { "id": "id_test", "name": "name_test", "data_prefix": "AAA", "data_sources": [ { "name": "data_source_name", "data_format": "Neptune", "input": { "type": "url", "url": "http://stif.com/od.zip" } } ] } raw = post(app, '/contributors', json.dumps(post_data)) assert raw.status_code == 201, print(to_json(raw)) raw = app.get('/contributors/id_test/') r = to_json(raw) assert raw.status_code == 200, print(r) assert len(r["contributors"][0]["data_sources"]) == 1 assert r["contributors"][0]["data_sources"][0]["data_format"] == "Neptune" assert r["contributors"][0]["data_sources"][0]["input"]["type"] == "url" assert r["contributors"][0]["data_sources"][0]["input"]["url"] == "http://stif.com/od.zip"
def test_post_contrib_two_data_source(app): """ using /contributors endpoint """ post_data = { "id": "id_test", "name": "name_test", "data_prefix": "AAA", "data_sources": [ { "name": "data_source_name", "input": { "type": "url", "url": "http://stif.com/od.zip" } }, { "name": "data_source_name2", "input": { "type": "url", "url": "http://stif.com/od.zip" } } ] } raw = post(app, '/contributors', json.dumps(post_data)) assert raw.status_code == 201 raw = app.get('/contributors/id_test/') r = to_json(raw) assert raw.status_code == 200, print(r) assert len(r["contributors"][0]["data_sources"]) == 2 assert r["contributors"][0]["data_sources"][0]["id"] != r["contributors"][0]["data_sources"][1]["id"]
def test_post_contrib_one_data_source_with_id(app): post_data = {"id": "id_test", "name":"name_test", "data_prefix":"AAA"} post_data["data_sources"] = [] post_data["data_sources"].append({"id": "data_source_id", "name":"data_source_name"}) raw = post(app, '/contributors', json.dumps(post_data)) print(to_json(raw)) assert raw.status_code == 400
def test_delete_coverage_returns_success(app): raw = app.get('/coverages/id_test') assert raw.status_code == 404 raw = post(app, '/coverages', '{"id": "id_test", "name": "name_test"}') assert raw.status_code == 201 raw = app.delete('/coverages/id_test') assert raw.status_code == 204 raw = app.get('/coverages/id_test') assert raw.status_code == 404 raw = post(app, '/coverages', '{"id": "id_test2", "name": "name_test2"}') assert raw.status_code == 201 raw = app.get('/coverages') r = to_json(raw) assert len(r["coverages"]) == 1
def test_patch_contrib_data_source_with_full_contributor(app): """ using /contributors endpoint """ post_data = { "id": "id_test", "name": "name_test", "data_prefix": "AAA", "data_sources": [ { "name": "data_source_name", "input": { "type": "url", "url": "http://stif.com/od.zip" } } ] } raw = post(app, '/contributors', json.dumps(post_data)) r = to_json(raw) assert raw.status_code == 201, print(r) r["contributors"][0]["data_sources"][0]["name"] = "name_modified" raw = patch(app, '/contributors/id_test', json.dumps(r["contributors"][0])) r = to_json(raw) assert raw.status_code == 200, print(r) assert len(r["contributors"][0]["data_sources"]) == 1 patched_data_source = r["contributors"][0]["data_sources"][0] assert patched_data_source["name"] == "name_modified"
def test_patch_one_data_source_name_of_two_and_add_one(app): post_data = {"id": "id_test", "name":"name_test", "data_prefix":"AAA"} post_data["data_sources"] = [] post_data["data_sources"].append({"name":"data_source_name", "data_format":"Neptune"}) post_data["data_sources"].append({"name":"data_source_2", "data_format":"Neptune"}) raw = post(app, '/contributors', json.dumps(post_data)) r = to_json(raw) print("created contrib : ") print(r) assert raw.status_code == 201, print(r) new_data_source = {} new_data_source["id"] = r["contributor"]["data_sources"][1]["id"] new_data_source["name"] = "name_modified" r["contributor"]["data_sources"][0] = new_data_source data_source_list = {} data_source_list["data_sources"] = [new_data_source, {"name":"data_source_3"}] print("patching data with ", json.dumps(data_source_list)) raw = patch(app, '/contributors/id_test', json.dumps(data_source_list)) r = to_json(raw) assert raw.status_code == 200, print(r) assert len(r["contributor"]["data_sources"]) == 3 patched_data_sources = r["contributor"]["data_sources"] assert patched_data_sources[0]["data_format"] == "Neptune" assert patched_data_sources[1]["data_format"] == "Neptune" assert patched_data_sources[2]["data_format"] == "gtfs" assert patched_data_sources[0]["name"] == "data_source_name" assert patched_data_sources[1]["name"] == "name_modified" assert patched_data_sources[2]["name"] == "data_source_3"
def test_update_contributor_data_prefix_error(app): raw = post(app, '/contributors', '{"id": "id_test", "name": "name_test", "data_prefix":"AAA"}') assert raw.status_code == 201 raw = patch(app, '/contributors/id_test', '{"data_prefix": "AAB"}') r = to_json(raw) assert raw.status_code == 400
def test_add_coverage_no_name(app): raw = post(app, '/coverages', '{"id": "id_test"}') r = to_json(raw) assert 'error' in r assert raw.status_code == 400 raw = app.get('/coverages') r = to_json(raw) assert len(r["coverages"]) == 0
def test_update_id_impossible(app): """It should not be possible to update the id of an object""" raw = post(app, '/coverages', '{"id": "id_test", "name": "name_test"}') assert raw.status_code == 201 raw = patch(app, '/coverages/id_test', '{"id": "bob"}') r = to_json(raw) assert 'error' in r assert raw.status_code == 400
def test_add_coverage_no_prefix(app): raw = post(app, '/contributors', '{"id": "id_test", "name":"name_test"}') r = to_json(raw) assert 'error' in r assert raw.status_code == 400 raw = app.get('/contributors') r = to_json(raw) assert len(r["contributors"]) == 0
def test_post_contrib_no_data_source(app): raw = post(app, '/contributors', '{"id": "id_test", "name":"name_test", "data_prefix":"AAA"}') assert raw.status_code == 201 raw = app.get('/contributors/id_test/') r = to_json(raw) print(r) assert raw.status_code == 200 assert len(r["contributors"][0]["data_sources"]) == 0
def test_update_contributor_id_impossible(app): """It should not be possible to update the id of an object""" raw = post(app, '/contributors', '{"id": "id_test", "name": "name_test", "data_prefix":"AAA"}') assert raw.status_code == 201 raw = patch(app, '/contributors/id_test', '{"id": "bob"}') r = to_json(raw) assert 'error' in r assert raw.status_code == 400
def test_post_contrib_no_data_source(app): raw = post(app, '/contributors', '{"id": "id_test", "name":"name_test", "data_prefix":"AAA"}') assert raw.status_code == 201 raw = app.get('/contributors/id_test/') r = to_json(raw) print(r) assert raw.status_code == 200 assert len(r["contributor"]["data_sources"]) == 0
def test_add_coverage_with_env_invalid_url(app): raw = post(app, '/coverages', '''{"id": "id_test", "name": "name of the coverage", "environments" : {"notvalidenv": {"name": "pre", "tyr_url": "foo"}}}''') assert raw.status_code == 400 r = to_json(raw) assert 'error' in r assert 'environments' in r['error']
def test_add_coverage_with_env_invalid_url(app): raw = post(app, '/coverages', '''{"id": "id_test", "name": "name of the coverage", "environments" : {"notvalidenv": {"name": "pre", "tyr_url": "foo"}}}''') print(raw.data) assert raw.status_code == 400 r = to_json(raw) assert 'error' in r assert 'environments' in r['error']
def test_update_coverage_forbid_unkown_field(app): raw = post(app, '/coverages', '{"id": "id_test", "name": "name_test"}') assert raw.status_code == 201 raw = patch(app, '/coverages/id_test', '{"name": "new_name_test", "foo": "bar"}') r = to_json(raw) assert raw.status_code == 400 assert 'error' in r
def test_update_contributor_name(app): raw = post(app, '/contributors', '{"id": "id_test", "name": "name_test", "data_prefix":"AAA"}') assert raw.status_code == 201 raw = patch(app, '/contributors/id_test', '{"name": "new_name_test"}') r = to_json(raw) assert raw.status_code == 200 assert r["contributors"][0]['id'] == "id_test" assert r["contributors"][0]['name'] == "new_name_test"
def test_update_coverage_returns_success_status(app): raw = post(app, '/coverages', '{"id": "id_test", "name": "name_test"}') assert raw.status_code == 201 raw = patch(app, '/coverages/id_test', '{"name": "new_name_test"}') r = to_json(raw) assert raw.status_code == 200 assert r["coverage"]['id'] == "id_test" assert r["coverage"]['name'] == "new_name_test"
def test_update_coverage_returns_success_status(app): raw = post(app, '/coverages', '{"id": "id_test", "name": "name_test"}') assert raw.status_code == 201 raw = patch(app, '/coverages/id_test', '{"name": "new_name_test"}') r = to_json(raw) assert raw.status_code == 200 assert r["coverages"][0]['id'] == "id_test" assert r["coverages"][0]['name'] == "new_name_test"
def test_update_contributor_name(app): raw = post(app, '/contributors', '{"id": "id_test", "name": "name_test", "data_prefix":"AAA"}') assert raw.status_code == 201 raw = patch(app, '/contributors/id_test', '{"name": "new_name_test"}') r = to_json(raw) assert raw.status_code == 200 assert r["contributor"]['id'] == "id_test" assert r["contributor"]['name'] == "new_name_test"
def test_add_coverage_with_name(app): raw = post(app, '/coverages', '{"id": "id_test", "name": "name of the coverage"}') assert raw.status_code == 201 raw = app.get('/coverages') r = to_json(raw) assert len(r["coverages"]) == 1 assert isinstance(r["coverages"], list) assert r["coverages"][0]["id"] == "id_test" assert r["coverages"][0]["name"] == "name of the coverage"
def test_add_contributor_returns_success(app): raw = post(app, '/contributors', '{"id": "id_test", "name":"name_test", "data_prefix":"AAA"}') assert raw.status_code == 201 raw = app.get('/contributors') r = to_json(raw) assert len(r["contributors"]) == 1 assert isinstance(r["contributors"], list) assert r["contributors"][0]["id"] == "id_test" assert r["contributors"][0]["name"] == "name_test" assert r["contributors"][0]["data_prefix"] == "AAA"
def test_update_coverage_forbid_unkown_environments_type(app): raw = post(app, '/coverages', '{"id": "id_test", "name": "name_test"}') assert raw.status_code == 201 raw = patch(app, '/coverages/id_test', '{"name": "new_name_test", "environments": {"integration": {"name": "bar"}}}') assert raw.status_code == 200 raw = patch(app, '/coverages/id_test', '{"name": "new_name_test", "environments": {"bar": {"name": "bar"}}}') assert raw.status_code == 400 r = to_json(raw) assert 'error' in r
def test_post_contrib_one_data_source_without_id(app): post_data = {"id": "id_test", "name":"name_test", "data_prefix":"AAA"} post_data["data_sources"] = [] post_data["data_sources"].append({"name":"data_source_name"}) raw = post(app, '/contributors', json.dumps(post_data)) print(to_json(raw)) assert raw.status_code == 201 raw = app.get('/contributors/id_test/') r = to_json(raw) print(r) assert raw.status_code == 200 assert len(r["contributor"]["data_sources"]) == 1
def tast_png(client, sample): job_id = None # Request rendering of a png with post(client, '/render/png:small', sample) as (resp, json): assert json['status'] == 'queued' assert json['map_id'] == 'test123' assert json['file_type'] == 'png:small' assert json['version'] == VERSION assert 'job_id' in json job_id = json['job_id'] # seems we need to wait a bit so it has been queued sleep(0.1) # Check if render of same data is not done twice with post(client, '/render/png:small', sample) as (resp, json): assert 'job_id' in json assert job_id == json['job_id'] assert wait_until_finished(client, job_id) # Retry - Check if finished (and is reuses old job - not enqeueud as new # job) with post(client, '/render/png:small', sample) as (resp, json): assert 'job_id' in json assert job_id == json['job_id'] assert json['status'] == 'finished' # Download with version url = '/download/test123_{}.png:small'.format(VERSION) with get(client, url) as (resp, data): assert resp.status_code == 200 # Download latest (without version) with get(client, '/download/test123.png:small') as (resp, data): assert resp.status_code == 200 assert len(data) > 0 assert imghdr.what(None, data) == 'png'
def test_post_ds_one_data_source_without_input(app, contributor): """ using /data_sources endpoint """ post_ds = {"name": "data_source_name"} raw = post(app, '/contributors/id_test/data_sources', json.dumps(post_ds)) r = to_json(raw) assert 'error' in r assert raw.status_code == 400, print(to_json(raw)) raw = app.get('/contributors/id_test/data_sources') r = to_json(raw) assert raw.status_code == 200, print(r) assert len(r["data_sources"]) == 0
def test_add_coverage_returns_success(app): raw = post(app, '/coverages', '{"id": "id_test", "name":"name_test"}') assert raw.status_code == 201 raw = app.get('/coverages') r = to_json(raw) assert len(r["coverages"]) == 1 assert isinstance(r["coverages"], list) coverage = r["coverages"][0] assert coverage["id"] == "id_test" assert coverage["name"] == "name_test" #A default environment should have been created assert 'environments' in coverage assert 'production' in coverage['environments'] assert coverage['environments']['production']['name'] == 'production' assert coverage['environments']['production']['tyr_url'] == 'http://tyr.prod/v0/coverage/id_test/'
def test_patch_simple_coverage(app): raw = post(app, '/coverages', '''{"id": "id_test", "name": "name of the coverage"}''') assert raw.status_code == 201 raw = app.get('/coverages') r = to_json(raw) assert len(r["coverages"]) == 1 assert isinstance(r["coverages"], list) assert r["coverages"][0]["id"] == "id_test" assert r["coverages"][0]["name"] == "name of the coverage" raw = patch(app, '/coverages/id_test', '{"name": "new name"}') assert raw.status_code == 200 r = to_json(raw) assert r["coverage"]["id"] == "id_test" assert r["coverage"]["name"] == "new name"
def test_patch_simple_coverage(app): raw = post(app, '/coverages', '''{"id": "id_test", "name": "name of the coverage"}''') assert raw.status_code == 201 raw = app.get('/coverages') r = to_json(raw) assert len(r["coverages"]) == 1 assert isinstance(r["coverages"], list) assert r["coverages"][0]["id"] == "id_test" assert r["coverages"][0]["name"] == "name of the coverage" raw = patch(app, '/coverages/id_test', '{"name": "new name"}') assert raw.status_code == 200 r = to_json(raw) assert r["coverages"][0]["id"] == "id_test" assert r["coverages"][0]["name"] == "new name"
def test_patch_data_source_with_full_contributor(app): post_data = {"id": "id_test", "name":"name_test", "data_prefix":"AAA"} post_data["data_sources"] = [] post_data["data_sources"].append({"name":"data_source_name"}) raw = post(app, '/contributors', json.dumps(post_data)) r = to_json(raw) assert raw.status_code == 201, print(r) r["contributor"]["data_sources"][0]["name"] = "name_modified" print("patching data with ", json.dumps(r["contributor"])) raw = patch(app, '/contributors/id_test', json.dumps(r["contributor"])) r = to_json(raw) print(r) assert raw.status_code == 200, print(r) assert len(r["contributor"]["data_sources"]) == 1 patched_data_source = r["contributor"]["data_sources"][0] assert patched_data_source["name"] == "name_modified"
def test_pdf(client, sample): job_id = None # Request rendering of a pdf with post(client, '/render/pdf', sample) as (resp, json): assert json['status'] == 'queued' job_id = json['job_id'] assert wait_until_finished(client, job_id) # Download with version url = '/download/test123_{}.pdf'.format(VERSION) with get(client, url) as (resp, data): assert resp.status_code == 200 assert len(data) > 0 with BytesIO(data) as f: PdfFileReader(f)
def test_update_preprocess_with_id(app): ''' using /contributors endpoint ''' post_data = {"id": "id_test", "name": "name_test", "data_prefix": "AAA"} post_data["preprocesses"] = [{ "id": "toto", "type": "Ruspell", "source_params": { "tc_data": { "key": "data_sources_id", "value": "datasource_stif" }, "bano_data": { "key": "data_sources_id", "value": "bano_75" } } }] raw = post(app, '/contributors', json.dumps(post_data)) assert raw.status_code == 201, print(to_json(raw)) raw = app.get('/contributors/id_test/') r = to_json(raw) assert raw.status_code == 200, print(r) assert len(r["contributors"][0]["preprocesses"]) == 1 preprocess_id = r["contributors"][0]["preprocesses"][0]["id"] new_preprocess = { "type": "ComputeDirections", "source_params": { "tc_data": { "key": "data_sources.data_format", "value": "gtfs" } } } raw = patch(app, '/contributors/id_test/preprocesses/{}'.format(preprocess_id), json.dumps(new_preprocess)) r = to_json(raw) assert raw.status_code == 200, print(r) assert len(r["preprocesses"]) == 1 assert r["preprocesses"][0]["type"] == new_preprocess["type"] assert r["preprocesses"][0]["source_params"] == new_preprocess[ "source_params"]
def test_update_coverage__env(app): raw = post(app, '/coverages', '{"id": "id_test", "name": "name_test"}') assert raw.status_code == 201 raw = patch(app, '/coverages/id_test', '''{"environments" : { "preproduction": {"name": "pre", "tyr_url": "http://pre.bar/"}, "production": null }}''') print(raw.data) assert raw.status_code == 200 raw = app.get('/coverages') r = to_json(raw) assert len(r["coverages"]) == 1 assert isinstance(r["coverages"], list) coverage = r["coverages"][0] assert coverage["id"] == "id_test" assert coverage["name"] == "name_test" assert 'environments' in coverage assert 'production' not in coverage['environments'] assert 'preproduction' in coverage['environments'] assert coverage['environments']['preproduction']['name'] == 'pre' assert coverage['environments']['preproduction']['tyr_url'] == 'http://pre.bar/'