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