Fix handling of CAA records with iodef tag (fixes: #421). (#422)

This commit is contained in:
Andrew Starr-Bochicchio 2020-04-24 11:06:22 -04:00 committed by GitHub
parent 11fd5a433a
commit d8c7d2ed7b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 46 additions and 1 deletions

View File

@ -197,7 +197,7 @@ func resourceDigitalOceanRecordRead(d *schema.ResourceData, meta interface{}) er
}
if t := rec.Type; t == "CNAME" || t == "MX" || t == "NS" || t == "SRV" || t == "CAA" {
if rec.Data != "@" {
if rec.Data != "@" && rec.Tag != "iodef" {
rec.Data += "."
}
}

View File

@ -525,6 +525,38 @@ func TestAccDigitalOceanRecord_CaaUpdated(t *testing.T) {
})
}
func TestAccDigitalOceanRecord_iodefCAA(t *testing.T) {
var record godo.DomainRecord
domain := fmt.Sprintf("foobar-test-terraform-%s.com", acctest.RandString(10))
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckDigitalOceanRecordDestroy,
Steps: []resource.TestStep{
{
Config: fmt.Sprintf(
testAccCheckDigitalOceanRecordConfig_iodef, domain),
Check: resource.ComposeTestCheckFunc(
testAccCheckDigitalOceanRecordExists("digitalocean_record.CAA_iodef", &record),
resource.TestCheckResourceAttr(
"digitalocean_record.CAA_iodef", "name", "@"),
resource.TestCheckResourceAttr(
"digitalocean_record.CAA_iodef", "domain", domain),
resource.TestCheckResourceAttr(
"digitalocean_record.CAA_iodef", "value", "mailto:caa-failures@example.com"),
resource.TestCheckResourceAttr(
"digitalocean_record.CAA_iodef", "type", "CAA"),
resource.TestCheckResourceAttr(
"digitalocean_record.CAA_iodef", "flags", "0"),
resource.TestCheckResourceAttr(
"digitalocean_record.CAA_iodef", "tag", "iodef"),
),
},
},
})
}
func testAccCheckDigitalOceanRecordDestroy(s *terraform.State) error {
client := testAccProvider.Meta().(*CombinedConfig).godoClient()
@ -813,3 +845,16 @@ resource "digitalocean_record" "foo_record" {
flags = "%s"
tag = "%s"
}`
const testAccCheckDigitalOceanRecordConfig_iodef = `
resource "digitalocean_domain" "foobar" {
name = "%s"
}
resource "digitalocean_record" "CAA_iodef" {
domain = digitalocean_domain.foobar.name
type = "CAA"
tag = "iodef"
flags = "0"
name = "@"
value = "mailto:caa-failures@example.com"
}`