From e61e5eab99b0f5511a43aa9938f46231b54487a2 Mon Sep 17 00:00:00 2001
From: Erik Reid <erik.reid@geant.org>
Date: Wed, 11 Dec 2019 14:35:43 +0100
Subject: [PATCH] added test of _build_subnet_db

---
 test/test_worker_utils.py | 50 +++++++++++++++++++++++++++++++++++----
 1 file changed, 45 insertions(+), 5 deletions(-)

diff --git a/test/test_worker_utils.py b/test/test_worker_utils.py
index 186f0117..b8e36ccb 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
-- 
GitLab