import contextlib import json import jsonschema DEFAULT_REQUEST_HEADERS = { "Content-type": "application/json", "Accept": ["application/json"] } def test_get_routers(client): version_schema = { "$schema": "http://json-schema.org/draft-07/schema#", "type": "array", "items": {"type": "string"} } rv = client.post( "data/routers", headers=DEFAULT_REQUEST_HEADERS) assert rv.status_code == 200 response = json.loads(rv.data.decode("utf-8")) jsonschema.validate(response, version_schema) assert response def test_pop_info(client, mocker): """ just check the correct method is called, but mock out all sql access """ expected_pop_info = { 'C': 'bogus connection', 'E': 'bogus equipment name' } @contextlib.contextmanager def mocked_connection(ignored): yield expected_pop_info['C'] mocker.patch( 'inventory_provider.db.db.connection', mocked_connection) mocker.patch( 'inventory_provider.db.opsdb.lookup_pop_info', lambda c, e: {'C': c, 'E': e}) rv = client.get( '/data/pop/{E}'.format(**expected_pop_info), headers=DEFAULT_REQUEST_HEADERS) assert rv.status_code == 200 assert rv.is_json response = json.loads(rv.data.decode('utf-8')) assert response == expected_pop_info def test_pop_not_found(client, mocker): """ just check the correct method is called, but mock out all sql access """ @contextlib.contextmanager def mocked_connection(ignored): yield 'xyz' mocker.patch( 'inventory_provider.db.db.connection', mocked_connection) mocker.patch( 'inventory_provider.db.opsdb.lookup_pop_info', lambda a, b: None) rv = client.get( '/data/pop/aabbcc', headers=DEFAULT_REQUEST_HEADERS) assert rv.status_code == 404