From bf818a0139c597bb9f14b04220a5b5892dae188b Mon Sep 17 00:00:00 2001 From: mmuller Date: Thu, 12 Oct 2017 13:53:30 -0700 Subject: [PATCH] Translate multi-part TLD zone names Convert periods to hyphens in multi-part TLDs when using them as a zone name (cloud-dns doesn't allow periods in zone names). ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=172007089 --- .../dns/writer/clouddns/CloudDnsWriter.java | 2 +- .../writer/clouddns/CloudDnsWriterTest.java | 21 ++++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/java/google/registry/dns/writer/clouddns/CloudDnsWriter.java b/java/google/registry/dns/writer/clouddns/CloudDnsWriter.java index 4e278b0c8..90de984a8 100644 --- a/java/google/registry/dns/writer/clouddns/CloudDnsWriter.java +++ b/java/google/registry/dns/writer/clouddns/CloudDnsWriter.java @@ -99,7 +99,7 @@ public class CloudDnsWriter extends BaseDnsWriter { Retrier retrier) { this.dnsConnection = dnsConnection; this.projectId = projectId; - this.zoneName = zoneName; + this.zoneName = zoneName.replace('.', '-'); this.defaultATtl = defaultATtl; this.defaultNsTtl = defaultNsTtl; this.defaultDsTtl = defaultDsTtl; diff --git a/javatests/google/registry/dns/writer/clouddns/CloudDnsWriterTest.java b/javatests/google/registry/dns/writer/clouddns/CloudDnsWriterTest.java index 71dcf7268..c89fa3c6f 100644 --- a/javatests/google/registry/dns/writer/clouddns/CloudDnsWriterTest.java +++ b/javatests/google/registry/dns/writer/clouddns/CloudDnsWriterTest.java @@ -17,7 +17,6 @@ package google.registry.dns.writer.clouddns; import static com.google.common.collect.ImmutableList.toImmutableList; import static com.google.common.io.BaseEncoding.base16; import static com.google.common.truth.Truth.assertThat; -import static com.google.common.truth.Truth8.assertThat; import static google.registry.testing.DatastoreHelper.createTld; import static google.registry.testing.DatastoreHelper.newDomainResource; import static google.registry.testing.DatastoreHelper.newHostResource; @@ -86,6 +85,7 @@ public class CloudDnsWriterTest { @Mock private Dns.Changes.Create createChangeRequest; @Mock private Callable mutateZoneCallable; @Captor ArgumentCaptor recordNameCaptor; + @Captor ArgumentCaptor zoneNameCaptor; @Captor ArgumentCaptor changeCaptor; private CloudDnsWriter writer; private ImmutableSet stubZone; @@ -101,7 +101,7 @@ public class CloudDnsWriterTest { new CloudDnsWriter( dnsConnection, "projectId", - "zoneName", + "triple.secret.tld", // used by testInvalidZoneNames() DEFAULT_A_TTL, DEFAULT_NS_TTL, DEFAULT_DS_TTL, @@ -142,7 +142,7 @@ public class CloudDnsWriterTest { } }); - when(changes.create(anyString(), anyString(), changeCaptor.capture())) + when(changes.create(anyString(), zoneNameCaptor.capture(), changeCaptor.capture())) .thenReturn(createChangeRequest); // Change our stub zone when a request to change the records is executed when(createChangeRequest.execute()) @@ -485,4 +485,19 @@ public class CloudDnsWriterTest { verifyZone(fakeDomainRecords("example.tld", 1, 0, 0, 0)); } + + @Test + public void testInvalidZoneNames() { + createTld("triple.secret.tld"); + persistResource( + fakeDomain( + "example.triple.secret.tld", + ImmutableSet.of(persistResource(fakeHost("0.ip4.example.tld", IPv4))), + 0) + .asBuilder() + .build()); + writer.publishDomain("example.triple.secret.tld"); + writer.commit(); + assertThat(zoneNameCaptor.getValue()).isEqualTo("triple-secret-tld"); + } }