77 lines
2.1 KiB
Python
77 lines
2.1 KiB
Python
import unittest
|
|
|
|
from dns_sync.adapters import (
|
|
CERTIFICATES,
|
|
PROXY_HOSTS,
|
|
DiscoveredObject,
|
|
ObjectReference,
|
|
)
|
|
from dns_sync.object_normalizer import normalize_discovered_object
|
|
|
|
|
|
class ReferenceNormalizationTests(unittest.TestCase):
|
|
def test_adapter_reference_survives_central_normalization(self):
|
|
certificate = ObjectReference(
|
|
relation="certificate",
|
|
object_type=CERTIFICATES,
|
|
local_key="67",
|
|
)
|
|
discovered = DiscoveredObject(
|
|
object_type=PROXY_HOSTS,
|
|
local_key="12",
|
|
payload={
|
|
"domain_names": ["app.example.com"],
|
|
"forward_scheme": "http",
|
|
"forward_host": "192.168.1.20",
|
|
"forward_port": 8080,
|
|
"enabled": True,
|
|
},
|
|
references=[certificate],
|
|
)
|
|
|
|
normalized = normalize_discovered_object(discovered)
|
|
|
|
self.assertIsInstance(discovered.references, tuple)
|
|
self.assertEqual(normalized.references, (certificate,))
|
|
self.assertEqual(
|
|
normalized.references[0].local_key,
|
|
"67",
|
|
)
|
|
self.assertIsNone(
|
|
normalized.references[0].logical_key,
|
|
)
|
|
|
|
def test_duplicate_references_are_rejected(self):
|
|
certificate = ObjectReference(
|
|
relation="certificate",
|
|
object_type=CERTIFICATES,
|
|
local_key="67",
|
|
)
|
|
|
|
with self.assertRaisesRegex(
|
|
ValueError,
|
|
"cannot contain duplicates",
|
|
):
|
|
DiscoveredObject(
|
|
object_type=PROXY_HOSTS,
|
|
local_key="12",
|
|
payload={},
|
|
references=(certificate, certificate),
|
|
)
|
|
|
|
def test_non_reference_values_are_rejected(self):
|
|
with self.assertRaisesRegex(
|
|
ValueError,
|
|
"ObjectReference instances",
|
|
):
|
|
DiscoveredObject(
|
|
object_type=PROXY_HOSTS,
|
|
local_key="12",
|
|
payload={},
|
|
references=("certificate:67",),
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|