Esempio n. 1
0
def test_delete_poi_type_for_one_instance(create_tyr_update_jobs):

    resp = api_get('/v0/instances')
    assert len(resp) == 1

    resp = api_get('/v0/jobs/{}'.format(create_tyr_update_jobs))
    assert len(resp.values()[0]) == 2

    # Here a job having two poi data_sets is deleted
    resp = api_delete('/v0/instances/{}/actions/delete_dataset/poi'.format(create_tyr_update_jobs))
    assert resp['action'] == 'All poi datasets deleted for instance {}'.format(create_tyr_update_jobs)

    resp = api_get('/v0/jobs/{}'.format(create_tyr_update_jobs))
    assert len(resp.values()[0]) == 1
    for dataset in resp.values()[0][0]['data_sets']:
        assert dataset['type'] != 'poi'
Esempio n. 2
0
def test_status_with_rabbitmq_down_and_heavy_checks_param(setup_database):
    with requests_mock.mock() as m:
        kirin.app.config["NAVITIA_URL"] = "http://navitia"
        m.head("http://navitia", status_code=200)
        resp = api_get("/status")
        assert resp["output_rabbitmq"]["connection"] == "OK"
        with RabbitmqTemporaryMocker("wrong_rabbit_url", "wrong_exchange",
                                     "wrong_exchange_type") as _rabbit:
            resp = api_get("/status")
            # in real life, it returns "OK"
            # as we don't change the kirin configuration and we don't reuse the configuration
            assert resp["output_rabbitmq"]["connection"] == "KO"

            # the heavy_checks
            api_get("/status?heavy_checks=1")
            assert resp["output_rabbitmq"]["connection"] == "KO"
Esempio n. 3
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
Esempio n. 4
0
def test_status():
    resp = api_get('/status')

    assert 'version' in resp
    assert 'db_pool_status' in resp
    assert 'db_version' in resp
    assert 'navitia_url' in resp
Esempio n. 5
0
def test_delete_autocomplete(create_two_autocomplete_parameters):
    resp = api_get('/v0/autocomplete_parameters/')
    assert len(resp) == 2
    resp = api_get('/v0/autocomplete_parameters/france')
    assert resp['name'] == 'france'

    _, status = api_delete('/v0/autocomplete_parameters/france',
                           check=False,
                           no_json=True)
    assert status == 204

    _, status = api_get('/v0/autocomplete_parameters/france', check=False)
    assert status == 404

    resp = api_get('/v0/autocomplete_parameters/')
    assert len(resp) == 1
Esempio n. 6
0
def test_delete_instance_by_id(create_instance):
    resp = api_delete('/v0/instances/{}'.format(create_instance))
    assert resp['id'] == create_instance
    assert resp['discarded'] == True

    # check response to get with different use cases
    resp = api_get('/v0/instances/')
    assert resp == []
    resp = api_get('/v0/instances/fr')
    assert resp == []
    resp = api_get('/v0/instances/{}'.format(create_instance))
    assert resp == []

    # delete by id is idempotent
    resp, status = api_delete('/v0/instances/{}'.format(create_instance), check=False)
    assert status == 200
Esempio n. 7
0
def test_add_user_with_geojson(mock_rabbit, geojson):
    """
    creation of a user passing arguments as a json
    """
    user = {
        'login': '******',
        'email': '*****@*****.**',
        'shape': geojson,
        'has_shape': True
    }
    data = json.dumps(user)
    resp = api_post('/v0/users/', data=data, content_type='application/json')

    def check(u):
        gen = (k for k in user if k is not 'shape')
        for k in gen:
            assert u[k] == user[k]
        assert u['end_point']['name'] == 'navitia.io'
        assert u['type'] == 'with_free_instances'
        assert u['block_until'] == None

    check(resp)
    assert resp['shape'] == geojson

    resp = api_get('/v0/users/')
    assert len(resp) == 1
    check(resp[0])
    assert resp[0]['shape'] == {}
    assert mock_rabbit.called
Esempio n. 8
0
def test_deletion_keys_and_auth(create_instance, mock_rabbit):
    """
    We start by creating the user, it's easier than using a fixture, then we delete the auth and the key
    """

    # first, test that with an unknown user, we get a 404
    _, status = api_delete('/v0/users/75/keys/1', check=False, no_json=True)
    assert status == 404

    user = {'login': '******', 'email': '*****@*****.**'}
    resp_user = api_post('/v0/users/',
                         data=json.dumps(user),
                         content_type='application/json')
    api_post(
        '/v0/users/{}/keys'.format(resp_user['id']),
        data=json.dumps({'app_name': 'myApp'}),
        content_type='application/json',
    )
    auth = {'instance_id': create_instance, 'api_id': 1}
    api_post(
        '/v0/users/{}/authorizations'.format(resp_user['id']),
        data=json.dumps(auth),
        content_type='application/json',
    )
    resp = api_get('/v0/users/{}'.format(resp_user['id']))

    resp_key = api_delete('/v0/users/{user_id}/keys/{key_id}'.format(
        user_id=resp['id'], key_id=resp['keys'][0]['id']))
    assert len(resp_key['keys']) == 0
    resp_auth = api_delete('/v0/users/{}/authorizations/'.format(resp['id']),
                           data=json.dumps(auth),
                           content_type='application/json')
    assert len(resp_auth['authorizations']) == 0
    assert mock_rabbit.called
Esempio n. 9
0
def test_health_ok(setup_database):
    with requests_mock.mock() as m:
        # Connection to navitia and database works
        kirin.app.config["NAVITIA_URL"] = "http://navitia"
        m.head("http://navitia", status_code=200)
        resp = api_get("/health")
        assert resp["message"] == "OK"
Esempio n. 10
0
def test_cots_trip_unknown_vj(mock_rabbitmq):
    """
    a trip with a parity has been impacted, but the train 6112 is not known by navitia
    there should be only the train 6113 impacted
    """
    cots_6113 = get_fixture_data('cots_train_6113_trip_removal.json')
    cots_6112 = cots_6113.replace('"numeroCourse": "006113",',
                                  '"numeroCourse": "006112",')

    res = api_post('/cots', data=cots_6112, check=False)
    assert res[1] == 404
    assert res[0]['error'] == 'no train found for headsign(s) 006112'
    with app.app_context():
        assert len(RealTimeUpdate.query.all()) == 1
        assert len(TripUpdate.query.all()) == 0
        assert len(StopTimeUpdate.query.all()) == 0
        assert RealTimeUpdate.query.first().status == 'KO'
        assert RealTimeUpdate.query.first().error == \
            'no train found for headsign(s) 006112'
        assert RealTimeUpdate.query.first().raw_data == cots_6112

    status = api_get('/status')
    assert '-' in status['last_update'][
        'realtime.cots']  # only check it's a date
    assert status['last_valid_update'] == {}
    assert status['last_update_error'][
        'realtime.cots'] == 'no train found for headsign(s) 006112'

    assert mock_rabbitmq.call_count == 0
Esempio n. 11
0
def test_add_user(mock_rabbit, geojson_polygon):
    """
    creation of a user passing arguments as a json
    """
    coord = '2.37730;48.84550'
    user = {
        'login': '******',
        'email': '*****@*****.**',
        'shape': geojson_polygon,
        'has_shape': True,
        'default_coord': coord,
    }
    data = json.dumps(user)
    resp = api_post('/v0/users/', data=data, content_type='application/json')

    def check(u):
        gen = (k for k in user if k != 'shape')
        for k in gen:
            assert u[k] == user[k]
        assert u['end_point']['name'] == 'navitia.io'
        assert u['type'] == 'with_free_instances'
        assert u['block_until'] is None

    check(resp)
    assert resp['shape'] == geojson_polygon
    assert resp['default_coord'] == coord
    assert_default_scop_shape(resp)

    resp = api_get('/v0/users/')
    assert len(resp) == 1
    check(resp[0])
    assert resp[0]['shape'] == {}
    assert mock_rabbit.called
    assert_default_scop_shape(resp[0])
def test_ridesharing_service_get(default_ridesharing_service_config):
    """
    Test that the list of services with their info is correctly returned when queried
    """
    _, ridesharing0, ridesharing1 = default_ridesharing_service_config
    resp = api_get('/v0/ridesharing_services')
    assert 'ridesharing_services' in resp
    assert len(resp['ridesharing_services']) == 2

    resp = api_get('/v0/ridesharing_services/TestCovoiturage0')
    assert 'ridesharing_services' in resp
    assert len(resp['ridesharing_services']) == 1

    assert resp['ridesharing_services'][0]['args'] == ridesharing0.args
    assert resp['ridesharing_services'][0]['id'] == ridesharing0.id
    assert not resp['ridesharing_services'][0]['discarded']
Esempio n. 13
0
def test_add_user_with_plus_in_query(mock_rabbit):
    """
    creation of a user with a "+" in the email
    """
    user = {
        'email': '*****@*****.**',
        'login': '******'
    }
    _, status = api_post(
        '/v0/users/?login={email}&email={email}'.format(email=user['email']),
        check=False)
    assert status == 400

    resp = api_post('/v0/users/?login={email}&email={email}'.format(
        email=urllib.quote(user['email'])))

    def check(u):
        for k in user.iterkeys():
            assert u[k] == user[k]
        assert u['end_point']['name'] == 'navitia.io'
        assert u['type'] == 'with_free_instances'
        assert u['block_until'] is None

    check(resp)

    resp = api_get('/v0/users/')
    assert len(resp) == 1
    check(resp[0])
    assert mock_rabbit.called
Esempio n. 14
0
def test_add_user_with_plus(mock_rabbit):
    """
    creation of a user with a "+" in the email
    """
    user = {
        'login': '******',
        'email': '*****@*****.**'
    }
    resp = api_post('/v0/users/',
                    data=json.dumps(user),
                    content_type='application/json')

    def check(u):
        for k in user.iterkeys():
            assert u[k] == user[k]
        assert u['end_point']['name'] == 'navitia.io'
        assert u['type'] == 'with_free_instances'
        assert u['block_until'] is None

    check(resp)

    resp = api_get('/v0/users/')
    assert len(resp) == 1
    check(resp[0])
    assert mock_rabbit.called
Esempio n. 15
0
def test_status_with_navitia_ko(setup_database):
    with requests_mock.mock() as m:
        kirin.app.config["NAVITIA_URL"] = "http://navitia_on_error"
        m.head("http://navitia_on_error", status_code=400)
        resp, _ = api_get("/status", check=False)
        assert "url" in resp["navitia_webservice"]
        assert resp["navitia_webservice"]["connection"] == "KO"
        assert resp["postgres_db"]["connection"] == "OK"

        # All the other attributes are present as in the test "test_status()"
        assert "version" in resp
        assert "pool_status" in resp["postgres_db"]
        assert "schema_version" in resp["postgres_db"]
        assert "connection" in resp["postgres_db"]
        assert "last_update" in resp
        assert COTS_CONTRIBUTOR_ID in resp["last_update"]
        assert GTFS_CONTRIBUTOR_ID in resp["last_update"]
        assert "2015-11-04T07:32:00Z" in resp["last_update"][
            COTS_CONTRIBUTOR_ID]
        assert "2015-11-04T07:52:00Z" in resp["last_update"][
            GTFS_CONTRIBUTOR_ID]
        assert GTFS_CONTRIBUTOR_ID in resp["last_update_error"]
        assert "2015-11-04T07:32:00Z" in resp["last_valid_update"][
            COTS_CONTRIBUTOR_ID]
        assert "2015-11-04T07:42:00Z" in resp["last_valid_update"][
            GTFS_CONTRIBUTOR_ID]
Esempio n. 16
0
def test_multiple_users(create_multiple_users, mock_rabbit):
    """
    check the list
    """
    resp = api_get('/v0/users/')
    assert len(resp) == 2
    user1_found = False
    user2_found = False
    for u in resp:
        if u['id'] == create_multiple_users['user1']:
            user1_found = True
            assert u['login'] == 'foo'
            assert u['email'] == '*****@*****.**'
            assert u['end_point']['name'] == 'myEndPoint'
            assert u['billing_plan']['name'] == 'free'

        if u['id'] == create_multiple_users['user2']:
            user2_found = True
            assert u['login'] == 'foodefault'
            assert u['email'] == '*****@*****.**'
            assert u['end_point']['name'] == 'navitia.io'
            assert u['billing_plan']['name'] == 'nav_ctp'

    assert user1_found
    assert user2_found
    assert mock_rabbit.call_count == 0
Esempio n. 17
0
def test_get_non_existant_profile(create_instance):
    """
    by default there is no traveler profile created for an instance
    """
    _, status = api_get('/v0/instances/fr/traveler_profiles/standard',
                        check=False)
    assert status == 404
Esempio n. 18
0
def test_bss_provider_post():
    input_json = {'network': 'foo', 'klass': 'jcdecaux', 'args': {'user': '******'}}

    def check(resp):
        assert resp['network'] == input_json['network']
        assert resp['klass'] == input_json['klass']
        assert resp['args'] == input_json['args']
        assert resp['discarded'] == False

    _, status = api_post('v0/bss_providers/',
                         data=json.dumps(input_json),
                         content_type='application/json',
                         check=False)
    assert status == 400

    resp, status = api_post('v0/bss_providers/foo',
                            data=json.dumps(input_json),
                            content_type='application/json',
                            check=False)
    assert status == 201
    check(resp)

    resp = api_get('v0/bss_providers/foo')
    assert 'bss_providers' in resp
    assert len(resp['bss_providers']) == 1
    check(resp['bss_providers'][0])
Esempio n. 19
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
Esempio n. 20
0
def test_get_instance_with_traveler_profile(create_instance):
    resp = api_get('/v0/instances/fr')
    assert len(resp) == 1
    assert 'traveler_profiles' in resp[0]
    assert len(
        resp[0]
        ['traveler_profiles']) == 0, "By default, traveler profiles are empty"
Esempio n. 21
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
Esempio n. 22
0
def test_status_ok():
    """
    Test that the endpoint '/status' returns the db version
    """
    resp = api_get('/v0/status/')
    assert 'db version' in resp
    assert resp['db version'] is not None
def test_equipments_provider_get(default_config):
    """
    Test that the list of providers with their info is correctly returned when queried
    """
    sytral_provider, sytral2_provider = default_config
    resp = api_get('/v0/equipments_providers')
    assert 'equipments_providers' in resp
    assert len(resp['equipments_providers']) == 2

    resp = api_get('/v0/equipments_providers/sytral')
    assert 'equipments_providers' in resp
    assert len(resp['equipments_providers']) == 1

    assert len(resp['equipments_providers'][0]['instances']) == 1
    assert resp['equipments_providers'][0]['instances'][0] == 'sytral_instance'
    assert resp['equipments_providers'][0]['args'] == sytral_provider.args
    assert not resp['equipments_providers'][0]['discarded']
Esempio n. 24
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'
Esempio n. 25
0
def test_delete_traveler_profile(create_instance):
    api_post('/v0/instances/fr/traveler_profiles/standard')

    _, status = api_delete('/v0/instances/fr/traveler_profiles/standard', check=False, no_json=True)
    assert status == 204

    _, status = api_get('/v0/instances/fr/traveler_profiles/standard', check=False)
    assert status == 404
Esempio n. 26
0
def test_filter_users_by_key(create_user, create_multiple_users):
    resp_users = api_get('/v0/users')
    assert len(resp_users) == 3
    for user in resp_users:
        api_post(
            '/v0/users/{}/keys'.format(user['id']),
            data=json.dumps({'app_name': 'myApp'}),
            content_type='application/json',
        )

        resp_user = api_get('/v0/users/{}'.format(user['id']))
        assert len(resp_user['keys']) == 1
        assert 'token' in resp_user['keys'][0]

        token = resp_user['keys'][0]['token']
        resp_token = api_get('/v0/users?key={}'.format(token))
        assert resp_token['id'] == user['id']
Esempio n. 27
0
def test_create_traveler_profile(create_instance, traveler_profile_params):
    resp = api_post('/v0/instances/fr/traveler_profiles/standard',
                    data=json.dumps(traveler_profile_params),
                    content_type='application/json')

    check_traveler_profile(resp, traveler_profile_params)
    resp = api_get('/v0/instances/fr/traveler_profiles/standard')
    check_traveler_profile(resp[0], traveler_profile_params)
Esempio n. 28
0
def test_wrong_get_piv_with_id():
    """
    GET /piv/id.contributor (so with an id) is not allowed, only POST is possible
    """
    resp, status = api_get("/piv/{}".format(PIV_CONTRIBUTOR_ID), check=False)
    assert status == 405
    assert resp.get(
        "message") == "The method is not allowed for the requested URL."
Esempio n. 29
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
Esempio n. 30
0
def test_index_ok():
    """
    Test that the endpoint '/' returns a list of endpoints with their url
    """
    resp = api_get('/')
    assert resp is not None
    for endpoint in resp.keys():
        assert 'href' in resp[endpoint]
Esempio n. 31
0
def test_add_user_without_shape(mock_rabbit):
    """
    creation of a user without shape
    When we get this user, we should see
    shape = None and has_shape = False
    """
    user = {'login': '******', 'email': '*****@*****.**'}
    data = json.dumps(user)
    resp = api_post('/v0/users/', data=data, content_type='application/json')

    def check(u):
        gen = (k for k in user if k != 'shape')
        for k in gen:
            assert u[k] == user[k]
        assert u['end_point']['name'] == 'navitia.io'
        assert u['type'] == 'with_free_instances'
        assert u['block_until'] is None
        # User created but not modified yet
        assert u['created_at'] is not None
        assert u['updated_at'] is None
        assert u['blocked_at'] is None

    check(resp)
    assert resp['shape'] is None
    assert resp['has_shape'] is False
    assert mock_rabbit.called
    assert_default_scop_shape(resp)

    # we did not give any coord, so we don't have some
    assert resp['default_coord'] is None

    # with disable_geojson=true by default
    resp = api_get('/v0/users/')
    assert len(resp) == 1
    check(resp[0])
    assert resp[0]['shape'] is None
    assert resp[0]['has_shape'] is False
    assert_default_scop_shape(resp[0])

    # with disable_geojson=false
    resp = api_get('/v0/users/?disable_geojson=false')
    assert len(resp) == 1
    check(resp[0])
    assert resp[0]['shape'] is None
    assert resp[0]['has_shape'] is False
    assert_default_scop_shape(resp[0])
Esempio n. 32
0
def test_status(setup_database):
    resp = api_get('/status')

    assert 'version' in resp
    assert 'db_pool_status' in resp
    assert 'db_version' in resp
    assert 'navitia_url' in resp
    assert 'last_update' in resp
    assert 'realtime.ire' in resp['last_update']
    assert 'realtime.timeo' in resp['last_update']

    assert '2015-11-04T07:32:00Z' in resp['last_update']['realtime.ire']
    assert '2015-11-04T07:42:00Z' in resp['last_update']['realtime.timeo']
Esempio n. 33
0
def test_end_point():
    resp = api_get('/')
    assert 'status' in resp
    assert 'ire' in resp