From d89540ad20196b36d811d8406f7f014af4abfc6e Mon Sep 17 00:00:00 2001 From: Erik Reid <erik.reid@geant.org> Date: Thu, 7 Feb 2019 16:06:47 +0100 Subject: [PATCH] ix_public_peers test --- test/test_ix_public_peers.py | 58 ++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 test/test_ix_public_peers.py diff --git a/test/test_ix_public_peers.py b/test/test_ix_public_peers.py new file mode 100644 index 00000000..5b9866cb --- /dev/null +++ b/test/test_ix_public_peers.py @@ -0,0 +1,58 @@ +import os +import jsonschema +from lxml import etree +import pytest + +import inventory_provider +from inventory_provider import juniper + +TEST_DATA_DIRNAME = os.path.realpath(os.path.join( + inventory_provider.__path__[0], + '..', + 'test', + 'data')) + +ROUTER_NAME = 'mx1.vie.at.geant.net' + + +@pytest.fixture +def netconf(): + netconf_filename = os.path.join( + TEST_DATA_DIRNAME, + ROUTER_NAME + '-netconf.xml') + doc = etree.parse(netconf_filename) + juniper.validate_netconf_config(doc) + return doc + + +def test_ix_public_peers(netconf): + + schema = { + "$schema": "http://json-schema.org/draft-07/schema#", + + "type": "object", + "properties": { + "name": { + "type": "string", + "oneOf": [ + {"pattern": r'^(\d+\.){3}\d+$'}, + {"pattern": r'^([a-f\d]{4}:){7}[a-f\d]{4}$'} + ] + }, + "description": {"type": "string"}, + "as": { + "type": "object", + "properties": { + "local": {"type": "integer"}, + "peer": {"type": "integer"}, + }, + "required": ["local", "peer"], + "additionalProperties": False + } + }, + "required": ["name", "description", "as"], + "additionalProperties": False + } + + for p in juniper.ix_public_peers(netconf): + jsonschema.validate(p, schema) -- GitLab