diff --git a/test/test_netconf_data.py b/test/test_netconf_data.py index 46185b4dc9d8547f02732c0e143697bfdb4eb771..26984a3a8b6003fe0c794a6ebb9d00da6ac7d8aa 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 + +