diff --git a/test/test_worker_utils.py b/test/test_worker_utils.py index 186f01173f18db0d1f29f4ce0f834e00618ff98e..b8e36ccbfd83a4b3d215a9769591e2c30080c43c 100644 --- a/test/test_worker_utils.py +++ b/test/test_worker_utils.py @@ -1,9 +1,7 @@ """ tests of a few worker utilities """ -import contextlib import json -import os import re import jsonschema @@ -25,9 +23,8 @@ def backend_db(): def test_build_interface_services(mocked_worker_module): """ - not a very meaningful test ... basically only for sanity & coverage - :param data_config: - :param mocked_redis: + checks that valid interface service objects are created + :param mocked_worker_module: fixture :return: """ @@ -86,3 +83,46 @@ def test_build_interface_services(mocked_worker_module): expected_seen_types = set(['mdvpn', 'lhcone']) assert seen_types == expected_seen_types + + +def test_build_subnet_db(mocked_worker_module): + """ + checks that valid reverse subnet objects are created + :param mocked_worker_module: fixture + :return: + """ + + address_schema = { + '$schema': 'http://json-schema.org/draft-07/schema#', + + 'type': 'object', + 'properties': { + 'name': {'type': 'string'}, + 'interface address': {'type': 'string'}, + 'interface name': {'type': 'string'}, + 'router': {'type': 'string'} + }, + 'required': ['name', 'interface address', 'interface name', 'router'], + 'additionalProperties': False + } + + db = backend_db() # also forces initialization + worker._build_subnet_db() + + found_record = False + for key, value in db.items(): + + if not key.startswith('reverse_interface_addresses:'): + continue + + found_record = True + + m = re.match('^reverse_interface_addresses:(.+)', key) + assert m + address = m.group(1) + + value = json.loads(value) + jsonschema.validate(value, address_schema) + assert value['name'] == address + + assert found_record \ No newline at end of file