From efc7012fbcd6671bb4a2c1237479a8a58e2ebd53 Mon Sep 17 00:00:00 2001
From: Erik Reid <erik.reid@geant.org>
Date: Mon, 24 Dec 2018 12:07:54 +0100
Subject: [PATCH] validate interface list format

---
 test/test_netconf_data.py | 34 +++++++++++++++++++++++++++++++---
 1 file changed, 31 insertions(+), 3 deletions(-)

diff --git a/test/test_netconf_data.py b/test/test_netconf_data.py
index 46185b4d..26984a3a 100644
--- a/test/test_netconf_data.py
+++ b/test/test_netconf_data.py
@@ -1,6 +1,10 @@
 import os
-from inventory_provider import netconf
+
+import jsonschema
 from lxml import etree
+import pytest
+
+from inventory_provider import netconf
 
 TEST_DATA_DIR = os.path.join(os.path.dirname(__file__), 'data')
 
@@ -23,9 +27,33 @@ class MockedJunosDevice(object):
         pass
 
 
-def test_query_doc_and_validate(mocker, router, data_config):
+@pytest.fixture
+def netconf_doc(mocker, router, data_config):
     mocker.patch(
         'inventory_provider.netconf.Device',
         MockedJunosDevice)
-    netconf.load_config(router, data_config['ssh'])
+    return netconf.load_config(router, data_config['ssh'])
+
+
+def test_query_doc_and_validate(netconf_doc):
+
+    schema = {
+        "$schema": "http://json-schema.org/draft-07/schema#",
+        "type": "array",
+        "items": {
+            "type": "object",
+            "properties": {
+                "name": {"type": "string"},
+                "description": {"type": "string"}
+            },
+            "required": ["name", "description"],
+            "additionalProperties": False
+        }
+    }
+
+    interfaces = list(netconf.list_interfaces(netconf_doc))
+    jsonschema.validate(interfaces, schema)
+    assert interfaces  # at least shouldn't be empty
+
+
 
-- 
GitLab