mirror of
https://github.com/Such-Software/adaptive-multi-protocol-gateway.git
synced 2026-10-17 07:31:32 +02:00
fix(dns): ignore non-MX preference placeholders
This commit is contained in:
+7
-2
@@ -1023,13 +1023,18 @@ class NamecheapDNSProvider:
|
||||
for element in root.iter():
|
||||
if _xml_localname(element.tag) != "host":
|
||||
continue
|
||||
record_type = (element.get("Type") or "").upper()
|
||||
records.append(
|
||||
ProviderDNSRecord(
|
||||
name=element.get("Name") or "@",
|
||||
type=(element.get("Type") or "").upper(),
|
||||
type=record_type,
|
||||
value=element.get("Address") or "",
|
||||
ttl=int(element.get("TTL") or DEFAULT_TTL),
|
||||
mx_pref=_optional_int(element.get("MXPref")),
|
||||
mx_pref=(
|
||||
_optional_int(element.get("MXPref"))
|
||||
if record_type == "MX"
|
||||
else None
|
||||
),
|
||||
)
|
||||
)
|
||||
return DNSZoneSnapshot(
|
||||
|
||||
@@ -5,7 +5,7 @@ from pathlib import Path
|
||||
import tempfile
|
||||
import unittest
|
||||
|
||||
from ampg.dns import DNSZoneSnapshot, ProviderDNSRecord
|
||||
from ampg.dns import DNSZoneSnapshot, NamecheapDNSProvider, ProviderDNSRecord
|
||||
from ampg.dns_manifest import (
|
||||
load_dns_manifest,
|
||||
merge_dns_manifest_records,
|
||||
@@ -60,6 +60,29 @@ class FakeProvider:
|
||||
self.records = tuple(records)
|
||||
|
||||
|
||||
class NamecheapProviderTests(unittest.TestCase):
|
||||
def test_non_mx_preference_placeholder_is_ignored(self):
|
||||
response = """\
|
||||
<ApiResponse Status="OK">
|
||||
<CommandResponse>
|
||||
<DomainDNSGetHostsResult>
|
||||
<host Name="shop" Type="A" Address="192.0.2.1" TTL="300" MXPref="10" />
|
||||
<host Name="@" Type="MX" Address="mx.example" TTL="300" MXPref="20" />
|
||||
</DomainDNSGetHostsResult>
|
||||
</CommandResponse>
|
||||
</ApiResponse>
|
||||
"""
|
||||
provider = NamecheapDNSProvider.__new__(NamecheapDNSProvider)
|
||||
provider._request = lambda _command, _params: response
|
||||
provider._domain_params = lambda _domain: {"SLD": "example", "TLD": "test"}
|
||||
|
||||
snapshot = provider.get_hosts("example.test")
|
||||
|
||||
self.assertEqual("ok", snapshot.status)
|
||||
self.assertIsNone(snapshot.records[0].mx_pref)
|
||||
self.assertEqual(20, snapshot.records[1].mx_pref)
|
||||
|
||||
|
||||
class DNSManifestTests(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.temporary = tempfile.TemporaryDirectory()
|
||||
|
||||
Reference in New Issue
Block a user