Standardize Verizon plugin client boundary
This commit is contained in:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user