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()