Standardize Verizon plugin client boundary

This commit is contained in:
Lyncoln
2026-09-20 23:30:15 -04:00
parent c9a3898055
commit 0719671820
4 changed files with 64 additions and 104 deletions
+33 -33
View File
@@ -12,7 +12,7 @@ from dns_sync.adapters import (
PlanOperation,
)
from dns_sync.config import AppConfig
from dns_sync.models import ProviderRecord
from external_plugins.verizon.client import VerizonRecord
from dns_sync.registry import (
configured_adapter_endpoints,
load_adapter,
@@ -34,7 +34,7 @@ class VerizonAdapterTests(unittest.TestCase):
):
return AppConfig.from_env()
def adapter(self, provider):
def adapter(self, client):
config = self.config()
import dns_sync.registry as registry
@@ -58,8 +58,8 @@ class VerizonAdapterTests(unittest.TestCase):
with patch.object(
module,
"VerizonProvider",
return_value=provider,
"VerizonClient",
return_value=client,
):
endpoint = configured_adapter_endpoints(
"verizon",
@@ -138,7 +138,7 @@ class VerizonAdapterTests(unittest.TestCase):
),
)
def test_generic_adapter_uses_endpoint_not_router_url(self):
def test_client_uses_explicit_endpoint(self):
with patch.dict(
os.environ,
{
@@ -169,33 +169,33 @@ class VerizonAdapterTests(unittest.TestCase):
"verizon://192.168.1.1:8443",
)
self.assertEqual(
adapter.provider.router_url,
adapter.client.router_url,
"https://192.168.1.1:8443",
)
def test_connect_delegates_to_provider(self):
provider = Mock()
adapter = self.adapter(provider)
def test_connect_delegates_to_client(self):
client = Mock()
adapter = self.adapter(client)
adapter.connect()
provider.connect.assert_called_once_with()
client.connect.assert_called_once_with()
def test_discovers_dns_records_with_slot_local_keys(self):
provider = Mock()
provider.list_records.return_value = {
"second.example.com": ProviderRecord(
client = Mock()
client.list_records.return_value = {
"second.example.com": VerizonRecord(
hostname="second.example.com",
ip="192.168.1.101",
metadata={"slot": 42},
),
"first.example.com": ProviderRecord(
"first.example.com": VerizonRecord(
hostname="first.example.com",
ip="192.168.1.101",
metadata={"slot": 41},
),
}
adapter = self.adapter(provider)
adapter = self.adapter(client)
discovered = adapter.discover(DNS_RECORDS)
@@ -213,17 +213,17 @@ class VerizonAdapterTests(unittest.TestCase):
)
def test_create_and_update_delegate_without_backend_ip(self):
provider = Mock()
provider.add_record.return_value = "created"
provider.update_record.return_value = "updated"
provider.list_records.return_value = {
"app.example.com": ProviderRecord(
client = Mock()
client.add_record.return_value = "created"
client.update_record.return_value = "updated"
client.list_records.return_value = {
"app.example.com": VerizonRecord(
hostname="app.example.com",
ip="192.168.1.101",
metadata={"slot": 41},
),
}
adapter = self.adapter(provider)
adapter = self.adapter(client)
desired = self.dns_object(ip="192.168.1.101")
create_result = adapter.apply(
@@ -258,17 +258,17 @@ class VerizonAdapterTests(unittest.TestCase):
"updated",
)
self.assertEqual(
provider.add_record.call_args.args[0].ip,
client.add_record.call_args.args[0].ip,
"192.168.1.101",
)
self.assertEqual(
provider.update_record.call_args.args[0].ip,
client.update_record.call_args.args[0].ip,
"192.168.1.101",
)
def test_noop_does_not_mutate_router(self):
provider = Mock()
adapter = self.adapter(provider)
client = Mock()
adapter = self.adapter(client)
result = adapter.apply(
PlanAction(
@@ -279,24 +279,24 @@ class VerizonAdapterTests(unittest.TestCase):
)
self.assertIsNone(result)
provider.add_record.assert_not_called()
provider.update_record.assert_not_called()
client.add_record.assert_not_called()
client.update_record.assert_not_called()
def test_verify_delegates_expected_dns_record(self):
provider = Mock()
provider.verify_record.return_value = True
adapter = self.adapter(provider)
client = Mock()
client.verify_record.return_value = True
adapter = self.adapter(client)
verified = adapter.verify(self.dns_object())
self.assertTrue(verified)
record = provider.verify_record.call_args.args[0]
record = client.verify_record.call_args.args[0]
self.assertEqual(record.hostname, "app.example.com")
self.assertEqual(record.ip, "192.168.1.101")
def test_unsupported_objects_actions_and_wildcards_fail(self):
provider = Mock()
adapter = self.adapter(provider)
client = Mock()
adapter = self.adapter(client)
with self.assertRaisesRegex(RuntimeError, "cannot discover"):
adapter.discover("certificates")