Ejemplo n.º 1
0
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
Ejemplo n.º 2
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
Ejemplo n.º 3
0
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'
Ejemplo n.º 4
0
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')
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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")
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
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]
Ejemplo n.º 10
0
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
Ejemplo n.º 11
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
Ejemplo n.º 12
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
Ejemplo n.º 13
0
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
Ejemplo n.º 14
0
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"]
Ejemplo n.º 15
0
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
Ejemplo n.º 16
0
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
Ejemplo n.º 17
0
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
Ejemplo n.º 18
0
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
Ejemplo n.º 19
0
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
Ejemplo n.º 20
0
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
Ejemplo n.º 21
0
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
Ejemplo n.º 22
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'
Ejemplo n.º 23
0
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
Ejemplo n.º 24
0
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'
Ejemplo n.º 25
0
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"
Ejemplo n.º 26
0
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
Ejemplo n.º 27
0
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
Ejemplo n.º 28
0
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'
Ejemplo n.º 29
0
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
Ejemplo n.º 30
0
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