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