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