From be023de7588bbcdff74b21b66819ee8abf693224 Mon Sep 17 00:00:00 2001 From: Praful Makani Date: Wed, 25 Sep 2019 15:44:37 +0530 Subject: [PATCH 1/2] added CAA record support --- .../java/com/google/cloud/dns/RecordSet.java | 9 ++++-- .../com/google/cloud/dns/RecordSetTest.java | 13 ++++++++ .../com/google/cloud/dns/it/ITDnsTest.java | 30 +++++++++++++++++++ 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/google-cloud-clients/google-cloud-dns/src/main/java/com/google/cloud/dns/RecordSet.java b/google-cloud-clients/google-cloud-dns/src/main/java/com/google/cloud/dns/RecordSet.java index 7b8f321cfd85..30e3137916ee 100644 --- a/google-cloud-clients/google-cloud-dns/src/main/java/com/google/cloud/dns/RecordSet.java +++ b/google-cloud-clients/google-cloud-dns/src/main/java/com/google/cloud/dns/RecordSet.java @@ -70,8 +70,8 @@ public ResourceRecordSet apply(RecordSet recordSet) { /** * Enum for the DNS record types supported by Cloud DNS. * - *

Google Cloud DNS currently supports records of type A, AAAA, CNAME, MX NAPTR, NS, PTR, SOA, - * SPF, SRV, TXT. + *

Google Cloud DNS currently supports records of type A, AAAA, CAA, CNAME, MX NAPTR, NS, PTR, + * SOA, SPF, SRV, TXT. * * @see Cloud DNS * supported record types @@ -93,6 +93,11 @@ public Type apply(String constant) { public static final Type A = type.createAndRegister("A"); /** IPv6 Address record, which is used to map host names to their IPv6 address. */ public static final Type AAAA = type.createAndRegister("AAAA"); + /** + * Certificate Authority (CA) Authorization, which specifies which CAs are allowed to create + * certificates for a domain. + */ + public static final Type CAA = type.createAndRegister("CAA"); /** Canonical name record, which is used to alias names. */ public static final Type CNAME = type.createAndRegister("CNAME"); /** Mail exchange record, which is used in routing requests to mail servers. */ diff --git a/google-cloud-clients/google-cloud-dns/src/test/java/com/google/cloud/dns/RecordSetTest.java b/google-cloud-clients/google-cloud-dns/src/test/java/com/google/cloud/dns/RecordSetTest.java index a614ee9ad539..27e2919d8437 100644 --- a/google-cloud-clients/google-cloud-dns/src/test/java/com/google/cloud/dns/RecordSetTest.java +++ b/google-cloud-clients/google-cloud-dns/src/test/java/com/google/cloud/dns/RecordSetTest.java @@ -31,15 +31,25 @@ public class RecordSetTest { private static final TimeUnit UNIT = TimeUnit.HOURS; private static final Integer UNIT_TTL = 1; private static final RecordSet.Type TYPE = RecordSet.Type.AAAA; + private static final RecordSet.Type CAA_TYPE = RecordSet.Type.CAA; private static final RecordSet RECORD_SET = RecordSet.newBuilder(NAME, TYPE).setTtl(UNIT_TTL, UNIT).build(); + private static final RecordSet CAA_RECORD_SET = + RecordSet.newBuilder(NAME, CAA_TYPE) + .setTtl(UNIT_TTL, UNIT) + .addRecord("0 issue \"ca.example.com\"") + .build(); @Test public void testDefaultDnsRecord() { RecordSet recordSet = RecordSet.newBuilder(NAME, TYPE).build(); + RecordSet caaRecordSet = RecordSet.newBuilder(NAME, CAA_TYPE).build(); assertEquals(0, recordSet.getRecords().size()); + assertEquals(0, caaRecordSet.getRecords().size()); assertEquals(TYPE, recordSet.getType()); assertEquals(NAME, recordSet.getName()); + assertEquals(CAA_TYPE, caaRecordSet.getType()); + assertEquals(NAME, caaRecordSet.getName()); } @Test @@ -56,6 +66,9 @@ public void testBuilder() { assertEquals(2, anotherRecord.getRecords().size()); assertTrue(anotherRecord.getRecords().contains(testingRecord)); assertTrue(anotherRecord.getRecords().contains(anotherTestingRecord)); + assertEquals(NAME, CAA_RECORD_SET.getName()); + assertEquals(CAA_TYPE, CAA_RECORD_SET.getType()); + assertEquals(1, CAA_RECORD_SET.getRecords().size()); } @Test diff --git a/google-cloud-clients/google-cloud-dns/src/test/java/com/google/cloud/dns/it/ITDnsTest.java b/google-cloud-clients/google-cloud-dns/src/test/java/com/google/cloud/dns/it/ITDnsTest.java index 6aa7e30b547b..cb0e51c3d0fc 100644 --- a/google-cloud-clients/google-cloud-dns/src/test/java/com/google/cloud/dns/it/ITDnsTest.java +++ b/google-cloud-clients/google-cloud-dns/src/test/java/com/google/cloud/dns/it/ITDnsTest.java @@ -2066,4 +2066,34 @@ public void testBatchCombined() { DNS.delete(ZONE1.getName()); } } + + @Test + public void testCaaRecord() { + try { + Zone zone = DNS.create(ZONE1); + String caa = "0 issue \"ca.example.net\""; + RecordSet toCreate = + RecordSet.newBuilder("www." + zone.getDnsName(), RecordSet.Type.CAA) + .setTtl(5, TimeUnit.MINUTES) + .addRecord(caa) + .build(); + ChangeRequestInfo changeRequest = ChangeRequestInfo.newBuilder().add(toCreate).build(); + ChangeRequest addRequest = zone.applyChangeRequest(changeRequest); + assertEquals(1, addRequest.getAdditions().size()); + assertEquals(0, addRequest.getDeletions().size()); + assertNotNull(addRequest.getGeneratedId()); + ChangeRequestInfo.Builder deleteRequest = ChangeRequestInfo.newBuilder(); + for (RecordSet recordSet : zone.listRecordSets().iterateAll()) { + if (toCreate.getName().equals(recordSet.getName())) { + deleteRequest.delete(recordSet); + } + } + ChangeRequest deleteRequest1 = zone.applyChangeRequest(deleteRequest.build()); + assertEquals(0, deleteRequest1.getAdditions().size()); + assertEquals(1, deleteRequest1.getDeletions().size()); + assertNotNull(deleteRequest1.getGeneratedId()); + } finally { + DNS.delete(ZONE1.getName()); + } + } } From dac11e9d9925f434e7927b661b81ccf02db04873 Mon Sep 17 00:00:00 2001 From: Praful Makani Date: Wed, 25 Sep 2019 16:11:18 +0530 Subject: [PATCH 2/2] modified method name --- .../src/test/java/com/google/cloud/dns/it/ITDnsTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google-cloud-clients/google-cloud-dns/src/test/java/com/google/cloud/dns/it/ITDnsTest.java b/google-cloud-clients/google-cloud-dns/src/test/java/com/google/cloud/dns/it/ITDnsTest.java index cb0e51c3d0fc..5fd8d138fc1d 100644 --- a/google-cloud-clients/google-cloud-dns/src/test/java/com/google/cloud/dns/it/ITDnsTest.java +++ b/google-cloud-clients/google-cloud-dns/src/test/java/com/google/cloud/dns/it/ITDnsTest.java @@ -2068,7 +2068,7 @@ public void testBatchCombined() { } @Test - public void testCaaRecord() { + public void testCAARecord() { try { Zone zone = DNS.create(ZONE1); String caa = "0 issue \"ca.example.net\"";