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