From 3771f48db2845a95cde99d07e898dc59ff781a96 Mon Sep 17 00:00:00 2001
From: Erik Reid <erik.reid@geant.org>
Date: Sun, 14 Feb 2021 11:38:33 +0100
Subject: [PATCH] refactored a bit

in the end wasn't necessary, and there was no net change
---
 test/test_worker_utils.py | 100 ++++++++++++++++++++------------------
 1 file changed, 54 insertions(+), 46 deletions(-)

diff --git a/test/test_worker_utils.py b/test/test_worker_utils.py
index fda3215a..ab7e87f9 100644
--- a/test/test_worker_utils.py
+++ b/test/test_worker_utils.py
@@ -91,55 +91,61 @@ def test_build_juniper_peering_db(mocked_worker_module):
     # same as inventory_provider.juniper.PEERING_LIST_SCHEMA,
     # but with "hostname" in every returned record
 
+    LOGICAL_SYSTEM_PEERING_SCHEMA = {
+        "type": "object",
+        "properties": {
+            "logical-system": {"type": "string"},
+            "group": {"type": "string"},
+            "description": {"type": "string"},
+            "address": {"type": "string"},
+            "remote-asn": {"type": "integer"},
+            "local-asn": {"type": "integer"},
+            "hostname": {"type": "string"}
+        },
+        # local/remote-asn and/or description are not always present,
+        # just based on empirical tests - not a problem
+        "required": ["logical-system", "group", "address"],
+        "additionalProperties": False
+    }
+
+    TOP_LEVEL_PEERING_SCHEMA = {
+        "type": "object",
+        "properties": {
+            "group": {"type": "string"},
+            "description": {"type": "string"},
+            "address": {"type": "string"},
+            "remote-asn": {"type": "integer"},
+            "local-asn": {"type": "integer"},
+            "hostname": {"type": "string"}
+        },
+        # lots of internal peerings - so maybe no explicit asn's
+        "required": ["group", "address"],
+        "additionalProperties": False
+    }
+
+    INSTANCE_PEERING = {
+        "type": "object",
+        "properties": {
+            "instance": {"type": "string"},
+            "group": {"type": "string"},
+            "description": {"type": "string"},
+            "address": {"type": "string"},
+            "remote-asn": {"type": "integer"},
+            "local-asn": {"type": "integer"},
+            "hostname": {"type": "string"}
+        },
+        # description and-or local-asn is not always present,
+        # just based on empirical tests - not a problem
+        "required": ["instance", "group", "address", "remote-asn"],
+        "additionalProperties": False
+    }
+
     PEERING_LIST_SCHEMA = {
         "$schema": "http://json-schema.org/draft-07/schema#",
         "definitions": {
-            "top-level-peering": {
-                "type": "object",
-                "properties": {
-                    "group": {"type": "string"},
-                    "description": {"type": "string"},
-                    "address": {"type": "string"},
-                    "remote-asn": {"type": "integer"},
-                    "local-asn": {"type": "integer"},
-                    "hostname": {"type": "string"}
-                },
-                # lots of internal peerings - so maybe no explicit asn's
-                "required": ["group", "address"],
-                "additionalProperties": False
-            },
-            "instance-peering": {
-                "type": "object",
-                "properties": {
-                    "instance": {"type": "string"},
-                    "group": {"type": "string"},
-                    "description": {"type": "string"},
-                    "address": {"type": "string"},
-                    "remote-asn": {"type": "integer"},
-                    "local-asn": {"type": "integer"},
-                    "hostname": {"type": "string"}
-                },
-                # description and-or local-asn is not always present,
-                # just based on empirical tests - not a problem
-                "required": ["instance", "group", "address", "remote-asn"],
-                "additionalProperties": False
-            },
-            "logical-system-peering": {
-                "type": "object",
-                "properties": {
-                    "logical-system": {"type": "string"},
-                    "group": {"type": "string"},
-                    "description": {"type": "string"},
-                    "address": {"type": "string"},
-                    "remote-asn": {"type": "integer"},
-                    "local-asn": {"type": "integer"},
-                    "hostname": {"type": "string"}
-                },
-                # local/remote-asn and/or description are not always present,
-                # just based on empirical tests - not a problem
-                "required": ["logical-system", "group", "address"],
-                "additionalProperties": False
-            },
+            "top-level-peering": TOP_LEVEL_PEERING_SCHEMA,
+            "instance-peering": INSTANCE_PEERING,
+            "logical-system-peering": LOGICAL_SYSTEM_PEERING_SCHEMA,
             "peering": {
                 "oneOf": [
                     {"$ref": "#/definitions/top-level-peering"},
@@ -154,6 +160,8 @@ def test_build_juniper_peering_db(mocked_worker_module):
 
     db = backend_db()  # also forces initialization
 
+    # remove the juniper-peerings:* items that
+    # will be created by _build_juniper_peering_db
     def _x(k):
         if not k.startswith('juniper-peerings'):
             return False
-- 
GitLab