import json import jsonschema import pytest from inventory_provider.routes.mic import SITES_LIST_SCHEMA, \ NODES_LIST_SCHEMA, INTERFACES_LIST_SCHEMA, IMPACT_SCHEMA DEFAULT_REQUEST_HEADERS = { "Content-type": "application/json", "Accept": ["application/json"] } def test_get_sites(client, mocked_redis): rv = client.get( '/mic/sites', headers=DEFAULT_REQUEST_HEADERS) assert rv.status_code == 200 assert rv.is_json response_data = json.loads(rv.data.decode('utf-8')) jsonschema.validate(response_data, SITES_LIST_SCHEMA) def test_get_nodes(client, mocked_redis): rv = client.get( '/mic/nodes/AMSTERDAM', headers=DEFAULT_REQUEST_HEADERS) assert rv.status_code == 200 assert rv.is_json response_data = json.loads(rv.data.decode('utf-8')) jsonschema.validate(response_data, NODES_LIST_SCHEMA) def test_get_interfaces(client, mocked_redis): rv = client.get( '/mic/interfaces/MX1.LON.UK', headers=DEFAULT_REQUEST_HEADERS) assert rv.status_code == 200 assert rv.is_json response_data = json.loads(rv.data.decode('utf-8')) jsonschema.validate(response_data, INTERFACES_LIST_SCHEMA) @pytest.mark.parametrize('endpoint', [ '/mic/impact/AMSTERDAM/MX1.AMS.NL/AE21', '/mic/impact/LONDON/MX1.LON.UK', '/mic/impact/GENEVA']) def test_get_impact(endpoint, client, mocked_redis): rv = client.get(endpoint, headers=DEFAULT_REQUEST_HEADERS) assert rv.status_code == 200 assert rv.is_json response_data = json.loads(rv.data.decode('utf-8')) jsonschema.validate(response_data, IMPACT_SCHEMA)