def test_equipments_instance_association(create_instance, default_equipments_config): """ Test the association between an instance and equipments providers Note: the fixture 'default_equipments_config' defines 2 providers :'sytral' & 'sytral2' """ # The equipments provider 'sytral' is associated to the instance 'fr' params = {'equipment_details_providers': ['sytral']} resp = api_put('/v0/instances/fr', data=json.dumps(params), content_type='application/json') assert 'equipment_details_providers' in resp assert len(resp['equipment_details_providers']) == 1 assert resp['equipment_details_providers'][0]['id'] == 'sytral' # Only 'sytral2' is associated to the instance 'fr' after update params = {'equipment_details_providers': ['sytral2']} resp = api_put('/v0/instances/fr', data=json.dumps(params), content_type='application/json') assert 'equipment_details_providers' in resp assert len(resp['equipment_details_providers']) == 1 assert resp['equipment_details_providers'][0]['id'] == 'sytral2' # 'sytral3' doesn't exist in db, no provider is associated to the instance 'fr' after update params = {'equipment_details_providers': ['sytral3']} resp = api_put('/v0/instances/fr', data=json.dumps(params), content_type='application/json') assert 'equipment_details_providers' in resp assert len(resp['equipment_details_providers']) == 0
def test_update_instances_is_free(create_instance): params = {"is_free": True} resp = api_put('/v0/instances/{}'.format(create_instance), data=json.dumps(params), content_type='application/json') assert resp['is_free'] == True assert resp['is_open_data'] == False params = {"is_free": False} resp = api_put('/v0/instances/{}'.format(create_instance), data=json.dumps(params), content_type='application/json') assert resp['is_free'] == False assert resp['is_open_data'] == False params = {"is_open_data": True} resp = api_put('/v0/instances/{}'.format(create_instance), data=json.dumps(params), content_type='application/json') assert resp['is_free'] == False assert resp['is_open_data'] == True params = {"is_open_data": False} resp = api_put('/v0/instances/{}'.format(create_instance), data=json.dumps(params), content_type='application/json') assert resp['is_free'] == False assert resp['is_open_data'] == False params = {"is_open_data": True, 'is_free': True} resp = api_put('/v0/instances/{}'.format(create_instance), data=json.dumps(params), content_type='application/json') assert resp['is_free'] == True assert resp['is_open_data'] == True
def test_equipments_instance_association(create_instance, default_equipments_config): """ Test the association between an instance and equipments providers Note: the fixture 'default_equipments_config' defines 2 providers :'sytral' & 'sytral2' """ # 'Unknown' doesn't exist in db, return error message and no update performed params = {'equipment_details_providers': ['Unknown']} resp, status = api_put( '/v0/instances/fr', data=json.dumps(params), content_type='application/json', check=False ) assert status == 400 assert 'message' in resp assert resp['message'] == "Couldn't set equipment providers - Provider 'Unknown' isn't present in db" # The equipments provider 'sytral' is associated to the instance 'fr' params = {'equipment_details_providers': ['sytral']} resp = api_put('/v0/instances/fr', data=json.dumps(params), content_type='application/json') assert 'equipment_details_providers' in resp assert len(resp['equipment_details_providers']) == 1 assert resp['equipment_details_providers'][0]['id'] == 'sytral' # Only 'sytral2' is associated to the instance 'fr' after update params = {'equipment_details_providers': ['sytral2']} resp = api_put('/v0/instances/fr', data=json.dumps(params), content_type='application/json') assert 'equipment_details_providers' in resp assert len(resp['equipment_details_providers']) == 1 assert resp['equipment_details_providers'][0]['id'] == 'sytral2'
def test_update_streetnetwork_backends(create_instance): resp = api_get('/v0/instances/fr') assert resp[0][ 'street_network_car'] == "http://localhost/v0/streetnetwork_backends/kraken" assert resp[0][ 'street_network_walking'] == "http://localhost/v0/streetnetwork_backends/kraken" assert resp[0][ 'street_network_bike'] == "http://localhost/v0/streetnetwork_backends/kraken" assert resp[0][ 'street_network_bss'] == "http://localhost/v0/streetnetwork_backends/kraken" assert (resp[0]['street_network_ridesharing'] == "http://localhost/v0/streetnetwork_backends/ridesharingKraken") assert resp[0][ 'street_network_taxi'] == "http://localhost/v0/streetnetwork_backends/taxiKraken" params = { 'street_network_car': "taxiKraken", 'street_network_walking': "taxiKraken", 'street_network_bike': "taxiKraken", 'street_network_bss': "taxiKraken", 'street_network_ridesharing': "kraken", 'street_network_taxi': "ridesharingKraken", } resp = api_put('/v0/instances/fr', data=json.dumps(params), content_type='application/json') assert resp[ 'street_network_car'] == "http://localhost/v0/streetnetwork_backends/taxiKraken" assert resp[ 'street_network_walking'] == "http://localhost/v0/streetnetwork_backends/taxiKraken" assert resp[ 'street_network_bike'] == "http://localhost/v0/streetnetwork_backends/taxiKraken" assert resp[ 'street_network_bss'] == "http://localhost/v0/streetnetwork_backends/taxiKraken" assert resp[ 'street_network_ridesharing'] == "http://localhost/v0/streetnetwork_backends/kraken" assert resp[ 'street_network_taxi'] == "http://localhost/v0/streetnetwork_backends/ridesharingKraken" resp = api_get('/v0/instances/fr') assert resp[0][ 'street_network_car'] == "http://localhost/v0/streetnetwork_backends/taxiKraken" assert resp[0][ 'street_network_walking'] == "http://localhost/v0/streetnetwork_backends/taxiKraken" assert resp[0][ 'street_network_bike'] == "http://localhost/v0/streetnetwork_backends/taxiKraken" assert resp[0][ 'street_network_bss'] == "http://localhost/v0/streetnetwork_backends/taxiKraken" assert resp[0][ 'street_network_ridesharing'] == "http://localhost/v0/streetnetwork_backends/kraken" assert resp[0][ 'street_network_taxi'] == "http://localhost/v0/streetnetwork_backends/ridesharingKraken" # The key does not exist in streetnetwork_backend table with pytest.raises(Exception): params = {'street_network_car': "unknown"} resp = api_put('/v0/instances/fr', data=json.dumps(params), content_type='application/json')
def test_update_instances(create_instance): params = { "journey_order": "arrival_time", "max_duration": 200, "max_bss_duration_to_pt": 10, "max_nb_transfers": 5, "bike_speed": 2.2, "walking_transfer_penalty": 20, "night_bus_filter_base_factor": 300, "walking_speed": 1.62, "priority": 4, "car_speed": 55.55, "min_bike": 40, "max_walking_duration_to_pt": 300, "min_car": 400, "min_taxi": 263, "max_bike_duration_to_pt": 600, "scenario": "new_default", "bss_speed": 2.1, "min_bss": 40, "night_bus_filter_max_factor": 1.5, "max_car_duration_to_pt": 800, "bss_provider": False, "full_sn_geometries": True, "max_car_no_park_duration_to_pt": 2691, "car_no_park_speed": 2.42, "min_nb_journeys": 1, "max_nb_journeys": None, "min_journeys_calls": 2, "max_successive_physical_mode": 3, "final_line_filter": True, "max_extra_second_pass": 1, "additional_time_after_first_section_taxi": 42, "additional_time_before_last_section_taxi": 789, "street_network_car": "taxiKraken", "street_network_walking": "taxiKraken", "street_network_bike": "taxiKraken", "street_network_bss": "taxiKraken", "street_network_ridesharing": "taxiKraken", "street_network_taxi": "kraken", } resp = api_put('/v0/instances/fr', data=json.dumps(params), content_type='application/json') for key, param in params.iteritems(): # Keys containing "street_network_" are urls if "street_network_" in key: assert resp[key] == "http://localhost/v0/streetnetwork_backends/{}".format(param) else: assert resp[key] == param resp = api_put( '/v0/instances/{}'.format(create_instance), data=json.dumps(params), content_type='application/json' ) for key, param in params.iteritems(): if "street_network_" in key: assert resp[key] == "http://localhost/v0/streetnetwork_backends/{}".format(param) else: assert resp[key] == param
def test_external_service_put(default_external_service_config): """ Test that a service is correctly created/updated in db and the info returned when queried """ service = { "klass": "jormungandr.external_services.free_floating.FreeFloatingProvider", "navitia_service": "free_floatings", "args": { "service_url": "http://my_external_service_free_floating.com", "timeout": 10, "circuit_breaker_max_fail": 4, "circuit_breaker_reset_timeout": 60, }, } resp, status = api_put( 'v0/external_services/forseti_free_floatings_paris', data=ujson.dumps(service), content_type='application/json', check=False, ) assert status == 201 assert 'external_services' in resp assert len(resp['external_services']) == 1 for key in service.keys(): assert resp['external_services'][0][key] == service[key] resp = api_get('/v0/external_services') assert 'external_services' in resp assert len(resp['external_services']) == 3 # Update existing service service['args'][ 'service_url'] = "http://my_external_service_free_floating_update.com" resp = api_put( 'v0/external_services/forseti_free_floatings_paris', data=ujson.dumps(service), content_type='application/json', ) assert 'external_services' in resp assert len(resp['external_services']) == 1 for key in service.keys(): assert resp['external_services'][0][key] == service[key] resp = api_get('/v0/external_services/forseti_free_floatings_paris') assert 'external_services' in resp assert len(resp['external_services']) == 1 assert (resp['external_services'][0]['args']['service_url'] == "http://my_external_service_free_floating_update.com")
def test_update_instances(create_instance): params = { "min_tc_with_bss": 5, "journey_order": "arrival_time", "max_duration": 200, "max_bss_duration_to_pt": 10, "max_nb_transfers": 5, "bike_speed": 2.2, "walking_transfer_penalty": 20, "night_bus_filter_base_factor": 300, "walking_speed": 1.62, "max_duration_fallback_mode": "bike", "priority": 4, "car_speed": 55.55, "min_tc_with_car": 100, "min_tc_with_bike": 100, "min_bike": 40, "max_walking_duration_to_pt": 300, "min_car": 400, "max_bike_duration_to_pt": 600, "max_duration_criteria": "duration", "scenario": "new_default", "bss_speed": 2.1, "min_bss": 40, "night_bus_filter_max_factor": 1.5, "max_car_duration_to_pt": 800, "bss_provider": False, "full_sn_geometries": True, "max_car_no_park_duration_to_pt": 2691, "car_no_park_speed": 2.42, "min_nb_journeys": 1, "max_nb_journeys": None, "min_journeys_calls": 2, "max_successive_physical_mode": 3, "final_line_filter": True, "max_extra_second_pass": 1, } resp = api_put('/v0/instances/fr', data=json.dumps(params), content_type='application/json') for key, param in params.iteritems(): assert resp[key] == param resp = api_put('/v0/instances/{}'.format(create_instance), data=json.dumps(params), content_type='application/json') for key, param in params.iteritems(): assert resp[key] == param
def test_autocomplete_parameters_methods(): resp_get = api_get('/v1/autocomplete_parameters') assert 'autocomplete_parameters' in resp_get initial_num = len(resp_get['autocomplete_parameters']) assert initial_num == 0 autocomplete_data = { 'street': 'OSM', 'name': 'france', 'address': 'BANO', 'admin': 'COSMOGONY', 'poi': 'OSM', } resp_post, status_post = api_post( '/v1/autocomplete_parameters', data=json.dumps(autocomplete_data), content_type='application/json', check=False, ) assert status_post == 201 assert 'autocomplete_parameters' in resp_post assert len(resp_post['autocomplete_parameters']) == 1 for key in autocomplete_data.keys(): assert resp_post['autocomplete_parameters'][0][ key] == autocomplete_data[key] autocomplete_name = resp_post['autocomplete_parameters'][0]['name'] resp_get = api_get('/v1/autocomplete_parameters') assert 'autocomplete_parameters' in resp_get assert len(resp_get['autocomplete_parameters']) == initial_num + 1 assert resp_get['autocomplete_parameters'][0]['name'] == autocomplete_name for key in autocomplete_data.keys(): assert resp_get['autocomplete_parameters'][0][ key] == autocomplete_data[key] autocomplete_data_update = {'address': 'OA'} resp_put = api_put( '/v1/autocomplete_parameters/{}'.format(autocomplete_name), data=json.dumps(autocomplete_data_update), content_type='application/json', ) assert 'autocomplete_parameters' in resp_put assert len(resp_put['autocomplete_parameters']) == 1 resp_get = api_get('/v1/autocomplete_parameters') assert 'autocomplete_parameters' in resp_get assert len(resp_get['autocomplete_parameters']) == initial_num + 1 assert resp_get['autocomplete_parameters'][0]['name'] == autocomplete_name assert resp_get['autocomplete_parameters'][0][ 'address'] == autocomplete_data_update['address'] resp_delete, status_delete = api_delete( '/v1/autocomplete_parameters/{}'.format(autocomplete_name), check=False, no_json=True) assert status_delete == 204 resp_get = api_get('/v1/autocomplete_parameters') assert 'autocomplete_parameters' in resp_get assert len(resp_get['autocomplete_parameters']) == initial_num
def test_update_max_mode_direct_path_duration(create_instance): resp = api_get('/v0/instances/fr') assert resp[0]['max_walking_direct_path_duration'] == 86400 assert resp[0]['max_bike_direct_path_duration'] == 86400 assert resp[0]['max_bss_direct_path_duration'] == 86400 assert resp[0]['max_car_direct_path_duration'] == 86400 assert resp[0]['max_taxi_direct_path_duration'] == 86400 assert resp[0]['max_ridesharing_direct_path_duration'] == 86400 params = { 'max_walking_direct_path_duration': 3475, 'max_bike_direct_path_duration': 9512, 'max_bss_direct_path_duration': 7456, 'max_car_direct_path_duration': 3214, 'max_taxi_direct_path_duration': 1523, 'max_ridesharing_direct_path_duration': 4456, } resp = api_put('/v0/instances/fr', data=json.dumps(params), content_type='application/json') for key in params.keys(): assert resp[key] == params[key] resp = api_get('/v0/instances/fr') for key in params.keys(): assert resp[0][key] == params[key]
def test_update_user_invalid_shape_scope(create_multiple_users, mock_rabbit): """ Update of a user with invalid shape_scope """ resp = api_get('/v0/users/') assert len(resp) == 2 for user in resp: assert_default_scop_shape(user) user = { 'login': '******', 'email': '*****@*****.**', "shape_scope": ["bob"] } resp, status = api_put( '/v0/users/{}'.format(create_multiple_users['user1']), check=False, data=json.dumps(user), content_type='application/json', ) assert status == 400 assert "message" in resp message = resp["message"] assert "shape_scope" in message assert ( message["shape_scope"] == u"The shape_scope argument must be in list ('admin', 'street', 'addr', 'poi', 'stop'), you gave bob" ) assert mock_rabbit.call_count == 0
def test_keys_methods(create_5_users): user_id = create_5_users resp_post = api_post( '/v1/users/{}/keys'.format(create_5_users), data=json.dumps({ 'app_name': 'testApp', 'valid_until': '2020-01-01' }), content_type='application/json', ) assert 'keys' in resp_post['user'] assert len(resp_post['user']['keys']) == 1 assert resp_post['user']['keys'][0]['app_name'] == 'testApp' assert resp_post['user']['keys'][0]['valid_until'] == '2020-01-01' key_id = resp_post['user']['keys'][0]['id'] resp_put = api_put( '/v1/users/{}/keys/{}'.format(user_id, key_id), data=json.dumps({ 'app_name': 'testApp', 'valid_until': '2021-01-01' }), content_type='application/json', ) assert len(resp_put['user']['keys']) == 1 assert resp_put['user']['keys'][0]['app_name'] == 'testApp' assert resp_put['user']['keys'][0]['valid_until'] == '2021-01-01' resp_delete = api_delete('/v1/users/{}/keys/{}'.format(user_id, key_id)) assert len(resp_delete['user']['keys']) == 0
def test_users_methods(): user_data = {'login': '******', 'email': '*****@*****.**'} resp_post = api_post('/v1/users', data=json.dumps(user_data), content_type='application/json') assert 'user' in resp_post assert resp_post['user']['login'] == 'user1' assert resp_post['user']['email'] == '*****@*****.**' user_id = resp_post['user']['id'] user_data_update = {'type': 'super_user'} resp_put = api_put('/v1/users/{}'.format(user_id), data=json.dumps(user_data_update), content_type='application/json') assert 'user' in resp_put assert resp_put['user']['login'] == 'user1' assert resp_put['user']['type'] == 'super_user' resp_delete, status_delete = api_delete('/v1/users/{}'.format(user_id), check=False, no_json=True) assert status_delete == 204 resp_get, status_get = api_get('/v1/users/{}'.format(user_id), check=False) assert status_get == 404
def test_put_poi_type_json(create_poi_type_json_obj): new_poi_types_json = { "poi_types": [ { "id": "parking", "name": "Parking" }, { "id": "amenity:bicycle_rental", "name": "Station VLS" }, { "id": "amenity:parking", "name": "Parking" }, ], "rules": [{ "osm_tags_filters": [{ "key": "amenity:park", "value": "yes" }], "poi_type_id": "parking" }], } resp, status_code = api_put( '/v0/instances/fr/poi_types', data=json.dumps(new_poi_types_json), content_type='application/json', check=False, ) assert status_code == 405
def test_put_autocomplete_with_config_toml_not_in_database(): json_with_config_toml = { "name": "bobette", "address": "BANO", "admin": "OSM", "admin_level": [8], "config_toml": "dataset = \"bobette\"\n\n[admin]\nimport = true\ncity_level = 8\nlevels = [8]\n\n" "[way]\nimport = true\n\n[poi]\nimport = true\n", "poi": "OSM", "street": "OSM", } resp, status_code = api_put( '/v0/autocomplete_parameters/bobette', data=json.dumps(json_with_config_toml), content_type='application/json', check=False, ) assert status_code == 201 assert resp['name'] == json_with_config_toml["name"] assert resp['street'] == 'OSM' assert resp['address'] == 'BANO' assert resp['poi'] == 'OSM' assert resp['admin'] == 'OSM' assert resp['admin_level'] == [8] assert resp['config_toml'] == json_with_config_toml["config_toml"]
def test_update_invalid_instance(create_instance): params = {"scenario": "foo"} resp, status = api_put('/v0/instances/us', data=json.dumps(params), check=False, content_type='application/json') assert status == 404
def test_end_points_methods(): resp_get = api_get('/v1/end_points') assert 'end_points' in resp_get initial_num = len(resp_get['end_points']) endpoint_data = {'name': 'tyr_v1', 'hostnames': ['host_v1']} resp_post, status_post = api_post( '/v1/end_points', data=json.dumps(endpoint_data), content_type='application/json', check=False ) assert status_post == 201 assert 'end_point' in resp_post assert len(resp_post['end_point']) == 1 assert resp_post['end_point'][0]['name'] == endpoint_data['name'] endpoint_id = resp_post['end_point'][0]['id'] resp_get = api_get('/v1/end_points') assert 'end_points' in resp_get assert len(resp_get['end_points']) == initial_num + 1 endpoint_data_update = {'name': 'Tyr_v1_update'} resp_put = api_put( '/v1/end_points/{}'.format(endpoint_id), data=json.dumps(endpoint_data_update), content_type='application/json', ) assert 'end_point' in resp_put assert len(resp_put['end_point']) == 1 assert resp_put['end_point'][0]['name'] == endpoint_data_update['name'] resp_delete, status_delete = api_delete('/v1/end_points/{}'.format(endpoint_id), check=False, no_json=True) assert status_delete == 204 resp_get = api_get('/v1/end_points') assert 'end_points' in resp_get assert len(resp_get['end_points']) == initial_num
def test_update_max_nb_crowfly_by_mode(create_instance): resp = api_get('/v0/instances/fr') assert resp[0]['max_nb_crowfly_by_mode']['car'] == 5000 assert resp[0]['max_nb_crowfly_by_mode']['walking'] == 5000 assert resp[0]['max_nb_crowfly_by_mode']['bike'] == 5000 assert resp[0]['max_nb_crowfly_by_mode']['bss'] == 5000 assert resp[0]['max_nb_crowfly_by_mode']['taxi'] == 5000 params = { "max_nb_crowfly_by_mode": { 'car': 4242, 'walking': 4141, 'taxi': 2323 } } resp, status = api_put('/v0/instances/fr', data=json.dumps(params), check=False, content_type='application/json') assert status == 200 assert resp['max_nb_crowfly_by_mode']['car'] == 4242 assert resp['max_nb_crowfly_by_mode']['walking'] == 4141 assert resp['max_nb_crowfly_by_mode']['bike'] == 5000 assert resp['max_nb_crowfly_by_mode']['bss'] == 5000 assert resp['max_nb_crowfly_by_mode']['taxi'] == 2323
def test_update_instances(create_instance): params = { "min_tc_with_bss": 5, "journey_order": "arrival_time", "max_duration": 200, "max_bss_duration_to_pt": 10, "max_nb_transfers": 5, "bike_speed": 2.2, "walking_transfer_penalty": 20, "night_bus_filter_base_factor": 300, "walking_speed": 1.62, "max_duration_fallback_mode": "bike", "priority": 4, "car_speed": 55.55, "min_tc_with_car": 100, "min_tc_with_bike": 100, "min_bike": 40, "max_walking_duration_to_pt": 300, "min_car": 400, "max_bike_duration_to_pt": 600, "max_duration_criteria": "duration", "scenario": "new_default", "bss_speed": 2.1, "min_bss": 40, "night_bus_filter_max_factor": 1.5, "max_car_duration_to_pt": 800, "bss_provider": False } resp = api_put('/v0/instances/fr', data=json.dumps(params), content_type='application/json') for key, param in params.iteritems(): assert resp[key] == param
def test_update_forgotten_attributs_in_backend(create_instance): resp = api_get('/v0/instances/fr') assert resp[0]['max_additional_connections'] == 2 assert resp[0][ 'successive_physical_mode_to_limit_id'] == 'physical_mode:Bus' assert resp[0]['car_park_provider'] == True params = { 'max_additional_connections': 3, 'successive_physical_mode_to_limit_id': 'physical_mode:Train', 'car_park_provider': False, } resp = api_put('/v0/instances/fr', data=json.dumps(params), content_type='application/json') assert resp['max_additional_connections'] == 3 assert resp[ 'successive_physical_mode_to_limit_id'] == 'physical_mode:Train' assert resp['car_park_provider'] == False resp = api_get('/v0/instances/fr') assert resp[0]['max_additional_connections'] == 3 assert resp[0][ 'successive_physical_mode_to_limit_id'] == 'physical_mode:Train' assert resp[0]['car_park_provider'] == False
def test_update_user(create_multiple_users, mock_rabbit, geojson_polygon): """ we update a user """ user = { 'login': '******', 'email': '*****@*****.**', 'shape': geojson_polygon } resp = api_put( '/v0/users/{}'.format(create_multiple_users['user1']), data=json.dumps(user), content_type='application/json', ) def check(u): for key in user: assert u[key] == user[key] assert resp['id'] == create_multiple_users['user1'] assert resp['login'] == user['login'] assert resp['email'] == user['email'] # user modified but not blocked assert resp['created_at'] is not None assert resp['updated_at'] is not None assert resp['block_until'] is None assert resp['blocked_at'] is None check(resp) assert mock_rabbit.called
def test_update_invalid_user(mock_rabbit): """ we try to update a user who dosn't exist """ user = {'login': '******', 'email': '*****@*****.**'} resp, status = api_put('/v0/users/10', check=False, data=json.dumps(user), content_type='application/json') assert status == 404 assert mock_rabbit.call_count == 0
def test_ridesharing_service_put(default_ridesharing_service_config): """ Test that a service is correctly created/updated in db and the info returned when queried """ service = { 'klass': 'jormungandr.scenarios.ridesharing.instant_system.InstantSystem', 'args': { 'service_url': 'https://new_url.io', "rating_scale_min": 5, "crowfly_radius": 60, "api_key": "abcd", }, } resp, status = api_put( 'v0/ridesharing_services/TestCovoiturage3', data=ujson.dumps(service), content_type='application/json', check=False, ) assert status == 201 assert 'ridesharing_services' in resp assert len(resp['ridesharing_services']) == 1 for key in service.keys(): assert resp['ridesharing_services'][0][key] == service[key] resp = api_get('/v0/ridesharing_services') assert 'ridesharing_services' in resp assert len(resp['ridesharing_services']) == 3 # Update existing service service['args']['service_url'] = 'https://new_url_update.io' resp = api_put('v0/ridesharing_services/TestCovoiturage3', data=ujson.dumps(service), content_type='application/json') assert 'ridesharing_services' in resp assert len(resp['ridesharing_services']) == 1 for key in service.keys(): assert resp['ridesharing_services'][0][key] == service[key] resp = api_get('/v0/ridesharing_services/TestCovoiturage3') assert 'ridesharing_services' in resp assert len(resp['ridesharing_services']) == 1 assert resp['ridesharing_services'][0]['args'][ 'service_url'] == 'https://new_url_update.io'
def test_associate_instance_external_service(default_external_service_config): instance, external_service_1, external_service_2 = default_external_service_config # Associate one external service resp = api_put('/v1/instances/{}?external_services={}'.format( instance.name, external_service_1.id)) assert len(resp["external_services"]) == 1 assert resp["external_services"][0]["id"] == external_service_1.id # Check that instance contains only one external service resp = api_get('/v1/instances') assert len(resp['instances']) == 1 assert len(resp['instances'][0]['external_services']) == 1 assert resp['instances'][0]['external_services'][0][ 'id'] == external_service_1.id # Update associated external service by external_service_2 resp = api_put('/v1/instances/{}?external_services={}'.format( instance.name, external_service_2.id)) assert len(resp["external_services"]) == 1 assert resp["external_services"][0]["id"] == external_service_2.id # Check that instance contains only one external service resp = api_get('/v1/instances') assert len(resp['instances']) == 1 assert len(resp['instances'][0]['external_services']) == 1 # Associate two external services to the same instance resp = api_put( '/v1/instances/{}?external_services={}&external_services={}'.format( instance.name, external_service_1.id, external_service_2.id)) assert len(resp["external_services"]) == 2 # An update with one external service deletes all existing associations and # re associates this external service to the instance resp = api_put('/v1/instances/{}?external_services={}'.format( instance.name, external_service_1.id)) assert len(resp["external_services"]) == 1 assert resp["external_services"][0]["id"] == external_service_1.id # Check that instance contains only one external service resp = api_get('/v1/instances') assert len(resp['instances']) == 1 assert len(resp['instances'][0]['external_services']) == 1 assert resp['instances'][0]['external_services'][0][ 'id'] == external_service_1.id
def test_equipments_provider_put(default_equipments_config): """ Test that a provider is correctly created/updated in db and the info returned when queried """ # Create new provider new_provider = { 'klass': 'jormungandr.equipments.sytral.SytralProvider', 'args': { 'url': 'sytral3.url', 'fail_max': 5, 'timeout': 1 }, } resp, status = api_put( 'v0/equipments_providers/sytral3', data=ujson.dumps(new_provider), content_type='application/json', check=False, ) assert status == 201 assert 'equipments_provider' in resp assert len(resp['equipments_provider']) == 1 for key in new_provider.keys(): assert resp['equipments_provider'][0][key] == new_provider[key] resp = api_get('/v0/equipments_providers') assert 'equipments_providers' in resp assert len(resp['equipments_providers']) == 3 # Update existing provider new_provider['args']['url'] = 'sytral3.url.update' resp = api_put('v0/equipments_providers/sytral3', data=ujson.dumps(new_provider), content_type='application/json') assert 'equipments_provider' in resp assert len(resp['equipments_provider']) == 1 for key in new_provider.keys(): assert resp['equipments_provider'][0][key] == new_provider[key] resp = api_get('/v0/equipments_providers/sytral3') assert 'equipments_providers' in resp assert len(resp['equipments_providers']) == 1 assert resp['equipments_providers'][0]['args'][ 'url'] == 'sytral3.url.update'
def test_realtime_proxies_external_service_put( default_external_service_config): """ Test that a service is correctly created/updated in db and the info returned when queried """ service = { "klass": "jormungandr.realtime_schedule.timeo.Timeo", "navitia_service": "realtime_proxies", "args": { "service_url": "http://my_external_service_free_floating.com", "timeout": 5, "timezone": "aa", "destination_id_tag": "", "service_args": { 'serviceID': "10", 'EntityID': "658", 'Media': "spec_navit_comp" }, }, } resp, status = api_put( 'v0/external_services/Timeo_Amelys', data=ujson.dumps(service), content_type='application/json', check=False, ) assert status == 201 assert 'external_services' in resp assert len(resp['external_services']) == 1 # Update existing service service['args']['service_url'] = "http://new_timeo_url.com" resp = api_put('v0/external_services/Timeo_Amelys', data=ujson.dumps(service), content_type='application/json') assert 'external_services' in resp assert len(resp['external_services']) == 1 resp = api_get('/v0/external_services/Timeo_Amelys') assert 'external_services' in resp assert len(resp['external_services']) == 1 assert resp['external_services'][0]['args'][ 'service_url'] == "http://new_timeo_url.com"
def test_update_shape_with_none(create_multiple_users, mock_rabbit): """ we update a user """ user = {'shape': None} resp = api_put('/v0/users/{}'.format(create_multiple_users['user1']), data=json.dumps(user), content_type='application/json') assert resp['id'] == create_multiple_users['user1'] assert resp['shape'] is None assert mock_rabbit.called
def test_update_shape_with_empty(create_multiple_users, mock_rabbit, geojson_polygon): """ we update a user """ user = {'shape': {}} resp = api_put('/v0/users/{}'.format(create_multiple_users['user1']), data=json.dumps(user), content_type='application/json') assert resp['id'] == create_multiple_users['user1'] assert resp['shape'] == geojson_polygon assert mock_rabbit.called
def test_update_autocomplete_backend(create_instance): resp = api_get('/v0/instances/fr') assert resp[0]['autocomplete_backend'] == 'kraken' params = {'autocomplete_backend': 'bragi'} resp = api_put('/v0/instances/fr', data=json.dumps(params), content_type='application/json') assert resp['autocomplete_backend'] == 'bragi' resp = api_get('/v0/instances/fr') assert resp[0]['autocomplete_backend'] == 'bragi'
def test_update_taxi_speed(create_instance): resp = api_get('/v0/instances/fr') assert resp[0]['taxi_speed'] == 11.11 params = {'taxi_speed': 53.23} resp = api_put('/v0/instances/fr', data=json.dumps(params), content_type='application/json') assert resp['taxi_speed'] == 53.23 resp = api_get('/v0/instances/fr') assert resp[0]['taxi_speed'] == 53.23
def test_update_min_taxi(create_instance): resp = api_get('/v0/instances/fr') assert resp[0]['min_taxi'] == 4 * 60 params = {'min_taxi': 7 * 60} resp = api_put('/v0/instances/fr', data=json.dumps(params), content_type='application/json') assert resp['min_taxi'] == 7 * 60 resp = api_get('/v0/instances/fr') assert resp[0]['min_taxi'] == 7 * 60