From 5b8ef6cf63e66e4221225e2ebc8861842068c211 Mon Sep 17 00:00:00 2001 From: Erik Reid <erik.reid@geant.org> Date: Wed, 11 Dec 2019 12:55:14 +0100 Subject: [PATCH] added schema validation to test --- inventory_provider/tasks/worker.py | 6 +++--- test/test_worker_utils.py | 34 +++++++++++++++++++++++++++--- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py index 70f79385..9ed2eb25 100644 --- a/inventory_provider/tasks/worker.py +++ b/inventory_provider/tasks/worker.py @@ -589,7 +589,7 @@ def _build_interface_services(update_callback=lambda s: None): assert ifc_name == info['name'] yield { - 'hostname': router_name, + 'router': router_name, 'interface': info['name'], 'description': info['description'] } @@ -609,8 +609,8 @@ def _build_interface_services(update_callback=lambda s: None): if not service_type: continue rp.set( - f'{service_type}:interface-services' - f':{ifc["hostname"]}:{ifc["interface"]}', + f'interface-services:{service_type}:' + f':{ifc["router"]}:{ifc["interface"]}', json.dumps(ifc)) rp.execute() diff --git a/test/test_worker_utils.py b/test/test_worker_utils.py index db4e353d..e86a9af3 100644 --- a/test/test_worker_utils.py +++ b/test/test_worker_utils.py @@ -2,6 +2,7 @@ tests of a few worker utilities """ import contextlib +import json import os import jsonschema @@ -28,10 +29,37 @@ def test_build_interface_services(mocked_worker_module): :param mocked_redis: :return: """ + + ifc_list_schema = { + '$schema': 'http://json-schema.org/draft-07/schema#', + + 'definitions': { + 'ifc-info': { + 'type': 'object', + 'properties': { + 'description': {'type': 'string'}, + 'router': {'type': 'string'}, + 'interface': {'type': 'string'} + }, + 'required': ['router', 'interface', 'description'], + 'additionalProperties': False + }, + }, + + 'type': 'array', + 'items': { '$ref': '#/definitions/ifc-info' } + } + db = backend_db() # also forces initialization worker._build_interface_services() - l = [v for (k, v) in db.items() - if k.startswith('interface-services:')] - print(len(l)) + mdvpn = [json.loads(v) for (k, v) in db.items() + if k.startswith('interface-services:mdvpn')] + jsonschema.validate(mdvpn, ifc_list_schema) + assert mdvpn, 'expected at least one interface' + + lhcone = [json.loads(v) for (k, v) in db.items() + if k.startswith('interface-services:mdvpn')] + jsonschema.validate(lhcone, ifc_list_schema) + assert lhcone, 'expected at least one interface' -- GitLab