def integration(request, Agent, Target, permissions, transaction): patch( request.cls, agent=Agent.create(name='agent'), target=Target.create(name='target'), manager=PeeweePermissionManager(registry=registry), )
def integration(request): patch( request.cls, agent=models.Agent.objects.create(), target=models.Target.objects.create(), manager=DjangoPermissionManager(registry=registry), )
def integration(request, Agent, Target, permissions, transaction): patch( request.cls, agent=Agent(), target=Target(), manager=PonyPermissionManager(registry=registry), )
def integration(request, session): patch( request.cls, agent=Agent(), target=Target(), session=session, manager=SqlalchemyPermissionManager(session, registry=registry), )
def loaders(request, Agent, transaction): record = Agent.create(name='freddie') patch( request.cls, Loader=PeeweeLoader, Schema=Agent, record=record, primary=Agent.id, secondary=Agent.name, )
def loaders(request): record = models.Agent.objects.create() patch( request.cls, Loader=DjangoLoader, Schema=models.Agent, record=record, primary='pk', secondary='name', )
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 loaders(request, Agent, transaction): record = Agent() pn.flush() patch( request.cls, Loader=PonyLoader, Schema=Agent, record=record, primary=Agent.id.name, secondary=Agent.name.name, )
def loaders(request, session): record = Agent() session.add(record) session.flush() patch( request.cls, session=session, Loader=functools.partial(SqlalchemyLoader, session=session), Schema=Agent, record=record, primary=Agent.__table__.c.id, secondary=Agent.__table__.c.name, )
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_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_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_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_integrity(self): field, type = fields[0][:2] series = Series.get(self.obj, field, type) self.assertIs(series, Series.get(self.obj, field)) Series.cache.clear() with patch(Series.cache, SIZE=0): self.assertEqual(series, Series.get(self.obj, field)) self.assertFalse(Series.cache)
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_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_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_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["contributors"][0]['id'] == "id_test" assert r["contributors"][0]['name'] == "new_name_test"
def test_version(self): host_info = self.mock_servers["mynewhost"] with timed("csr", 10): data = { "fqdn": host_info["fqdn"], "nodename": host_info["nodename"], "version": "1.0", "capabilities": ["manage_targets"], "address": "mynewhost", "csr": generate_csr(host_info["fqdn"]), } with patch(settings, VERSION="2.0"): # Try with a mis-matched version token = RegistrationToken.objects.create( profile=ServerProfile.objects.get()) with timed("register fail", 10): response = Client().post("/agent/register/%s/" % token.secret, data=json.dumps(data), content_type="application/json") self.assertEqual(response.status_code, 400) # Try with a matching version token = RegistrationToken.objects.create( profile=ServerProfile.objects.get()) settings.VERSION = "1.1" with timed("register pass", 10): response = Client().post("/agent/register/%s/" % token.secret, data=json.dumps(data), content_type="application/json") self.assertEqual(response.status_code, 201) content = json.loads(response.content) # reregistration should fail with unknown serial data = {"address": "mynewhost", "fqdn": "mynewhost.newcompany.com"} headers = { "HTTP_X_SSL_CLIENT_NAME": host_info["fqdn"], "HTTP_X_SSL_CLIENT_SERIAL": "" } response = Client().post("/agent/reregister/", data=json.dumps(data), content_type="application/json", **headers) self.assertEqual(response.status_code, 403) # reregistration should update host's domain name headers["HTTP_X_SSL_CLIENT_SERIAL"] = Crypto().get_serial( content["certificate"]) response = Client().post("/agent/reregister/", data=json.dumps(data), content_type="application/json", **headers) self.assertEqual(response.status_code, 200) host = ManagedHost.objects.get(id=content["host_id"]) self.assertEqual(host.fqdn, data["fqdn"])
def test_version(self): host_info = self.mock_servers['mynewhost'] with timed('csr', 10): data = { 'fqdn': host_info['fqdn'], 'nodename': host_info['nodename'], 'version': '1.0', 'capabilities': ['manage_targets'], 'address': 'mynewhost', 'csr': generate_csr(host_info['fqdn']), } with patch(settings, VERSION='2.0'): # Try with a mis-matched version token = RegistrationToken.objects.create( profile=ServerProfile.objects.get()) with timed('register fail', 10): response = Client().post("/agent/register/%s/" % token.secret, data=json.dumps(data), content_type="application/json") self.assertEqual(response.status_code, 400) # Try with a matching version token = RegistrationToken.objects.create( profile=ServerProfile.objects.get()) settings.VERSION = '1.1' with timed('register pass', 10): response = Client().post("/agent/register/%s/" % token.secret, data=json.dumps(data), content_type="application/json") self.assertEqual(response.status_code, 201) content = json.loads(response.content) # reregistration should fail with unknown serial data = {'address': 'mynewhost', 'fqdn': 'mynewhost.newcompany.com'} headers = { 'HTTP_X_SSL_CLIENT_NAME': host_info['fqdn'], 'HTTP_X_SSL_CLIENT_SERIAL': '' } response = Client().post('/agent/reregister/', data=json.dumps(data), content_type='application/json', **headers) self.assertEqual(response.status_code, 403) # reregistration should update host's domain name headers['HTTP_X_SSL_CLIENT_SERIAL'] = Crypto().get_serial( content['certificate']) response = Client().post('/agent/reregister/', data=json.dumps(data), content_type='application/json', **headers) self.assertEqual(response.status_code, 200) host = ManagedHost.objects.get(id=content['host_id']) self.assertEqual(host.fqdn, data['fqdn'])
def test_patch_ds_data_source_name_only(app, data_source): """ using /data_sources endpoint """ modif_ds = {"name": "name_modified"} raw = patch( app, '/contributors/id_test/data_sources/{}'.format(data_source["id"]), json.dumps(modif_ds)) r = to_json(raw) assert raw.status_code == 200, print(r) assert len(r["data_sources"]) == 1 patched_data_source = r["data_sources"][0] assert patched_data_source["name"] == "name_modified" assert patched_data_source["data_format"] == "Neptune"
def test_patch_ds_data_source_with_full_contributor(app, data_source): """ using /data_sources endpoint """ data_source["name"] = "name_modified" print("patching data with ", json.dumps(data_source)) raw = patch( app, '/contributors/id_test/data_sources/{}'.format(data_source["id"]), json.dumps(data_source)) r = to_json(raw) assert raw.status_code == 200, print(r) assert len(r["data_sources"]) == 1 patched_data_source = r["data_sources"][0] assert patched_data_source["name"] == "name_modified"
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_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_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_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_preprocess_with_unknown_type(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)) r = to_json(raw) assert raw.status_code == 201, print(r) preprocess_id = r["contributors"][0]["preprocesses"][0]["id"] new_preprocess = { "type": "bob", "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 == 400, print(r) assert 'error' in r assert r['error'] == 'Invalid process type bob'
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 }}''') 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/'
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/'
def test_patch_contrib_data_source_only(app, data_source): """ using /contributors endpoint """ new_data_source = { "id": data_source["id"], "name": "name_modified", "input": { "type": "existing_version", "v": "-2" } } data_source_list = {} data_source_list["data_sources"] = [new_data_source] 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["contributors"][0]["data_sources"]) == 1 patched_data_source = r["contributors"][0]["data_sources"][0] assert patched_data_source["name"] == "name_modified" assert patched_data_source["data_format"] == "Neptune" assert patched_data_source["input"]["type"] == "existing_version" assert patched_data_source["input"]["v"] == "-2"
def test_update_unknown_coverage(app): raw = patch(app, '/contributors/unknown', '{"name": "new_name_test"}') r = to_json(raw) assert 'message' in r assert raw.status_code == 404
def test_patch_ds_one_data_source_name_of_two_and_add_one(app, contributor): """ using /data_sources endpoint """ post_ds = { "id": "ds1_id", "name": "data_source_name1", "data_format": "Neptune", "input": { "type": "url", "url": "http://stif.com/od.zip" } } raw = post(app, '/contributors/id_test/data_sources', json.dumps(post_ds)) r = to_json(raw) assert raw.status_code == 201, print(r) post_ds = { "id": "ds2_id", "name": "data_source_name2", "data_format": "Neptune", "input": { "type": "url", "url": "http://stif.com/od.zip" } } raw = post(app, '/contributors/id_test/data_sources', json.dumps(post_ds)) r = to_json(raw) assert raw.status_code == 201, print(r) modif_ds = { "name": "name_modified", "data_format": "Neptune", "input": { "type": "url", "url": "http://stif.com/od.zip" } } raw = patch(app, '/contributors/id_test/data_sources/ds2_id', json.dumps(modif_ds)) r = to_json(raw) assert raw.status_code == 200, print(r) post_ds = { "id": "ds3_id", "name": "data_source_name3", "input": { "type": "url", "url": "http://stif.com/od.zip" } } raw = post(app, '/contributors/id_test/data_sources', json.dumps(post_ds)) r = to_json(raw) assert raw.status_code == 201, print(r) raw = app.get('/contributors/id_test/data_sources') r = to_json(raw) assert raw.status_code == 200, print(r) assert len(r["data_sources"]) == 3 patched_data_sources = r["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_name1" assert patched_data_sources[1]["name"] == "name_modified" assert patched_data_sources[2]["name"] == "data_source_name3"
def test_update_unknown_coverage(app): raw = patch(app, '/coverages/unknown', '{"name": "new_name_test"}') r = to_json(raw) assert 'message' in r assert raw.status_code == 404
def test_patch_contrib_one_data_source_name_of_two_and_add_one(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" } }, { "name": "data_source_2", "data_format": "Neptune", "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) new_data_source = { "id": r["contributors"][0]["data_sources"][1]["id"], "name": "name_modified", "input": { "type": "existing_version", "v": "-2" } } r["contributors"][0]["data_sources"][0] = new_data_source data_source_list = {} data_source_list["data_sources"] = [ new_data_source, { "name": "data_source_3", "input": { "type": "url", "url": "http://stif.com/od.zip" } } ] 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["contributors"][0]["data_sources"]) == 3 patched_data_sources = r["contributors"][0]["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_preprocesses_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" } } }, { "id": "titi", "type": "ComputeDirections", "source_params": { "tc_data": { "key": "data_sources.data_format", "value": "gtfs" } } }] 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"]) == 2 new_preprocess = { "type": "HeadsignShortName", "source_params": { "tc_data": { "key": "data_sources.data_format", "value": "ffff" } } } raw = patch(app, '/contributors/id_test/preprocesses/titi', json.dumps(new_preprocess)) r = to_json(raw) assert raw.status_code == 200, print(r) # Update only one preprocess assert len(r["preprocesses"]) == 1 raw = app.get('/contributors/id_test') r = to_json(raw) assert raw.status_code == 200, print(r) assert len(r["contributors"][0]["preprocesses"]) == 2 p_titi = None for p in r["contributors"][0]["preprocesses"]: if p['id'] == 'titi': p_titi = p assert p_titi assert p_titi['type'] == 'HeadsignShortName'