From bc79d86aaf65d6addcd21005ab1cd0a55dbb840b Mon Sep 17 00:00:00 2001 From: Erik Reid <erik.reid@geant.org> Date: Wed, 11 Dec 2019 15:36:24 +0100 Subject: [PATCH] basic poller route test --- test/test_poller_routes.py | 54 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 test/test_poller_routes.py diff --git a/test/test_poller_routes.py b/test/test_poller_routes.py new file mode 100644 index 00000000..199a0658 --- /dev/null +++ b/test/test_poller_routes.py @@ -0,0 +1,54 @@ +import json + +import jsonschema +import pytest + +from inventory_provider.tasks import worker + +DEFAULT_REQUEST_HEADERS = { + "Content-type": "application/json", + "Accept": ["application/json"] +} + + +INTERFACE_LIST_SCHEMA = { + '$schema': 'http://json-schema.org/draft-07/schema#', + + 'definitions': { + 'ifc-info': { + 'type': 'object', + 'properties': { + 'description': {'type': 'string'}, + 'router': {'type': 'string'}, + 'interface': {'type': 'string'} + }, + 'required': ['router', 'interface', 'description'], + 'additionalProperties': False + }, + }, + + 'type': 'array', + 'items': { '$ref': '#/definitions/ifc-info' } +} + + +@pytest.mark.parametrize('category', ['mdvpn', 'lhcone', 'MDVpn', 'LHCONE']) +def test_service_category(client, mocked_worker_module, category): + worker._build_interface_services() + rv = client.get( + f'/poller/services/{category}', + 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, INTERFACE_LIST_SCHEMA) + assert response_data, 'expected a non-empty list' + + +@pytest.mark.parametrize('category', ['mdvpn ', ' mdvpn', 'mdvpn1', 'aaa']) +def test_service_category_not_found(client, mocked_worker_module, category): + worker._build_interface_services() + rv = client.get( + f'/poller/services/{category}', + headers=DEFAULT_REQUEST_HEADERS) + assert rv.status_code == 404 -- GitLab