2019-04-10 20:56:01 +00:00
|
|
|
package digitalocean
|
|
|
|
|
|
|
|
import (
|
2019-04-11 15:02:18 +00:00
|
|
|
"context"
|
2019-04-10 20:56:01 +00:00
|
|
|
"fmt"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/hashicorp/terraform/helper/acctest"
|
|
|
|
"github.com/hashicorp/terraform/helper/resource"
|
|
|
|
"github.com/hashicorp/terraform/terraform"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestAccDigitalOceanCDN_Basic(t *testing.T) {
|
2019-04-11 15:02:18 +00:00
|
|
|
digitalOceanBucketName := fmt.Sprintf("tf-cdn-test-bucket-%d", acctest.RandInt())
|
2019-04-10 20:56:01 +00:00
|
|
|
cdnConfig := fmt.Sprintf(testAccCheckDigitalOceanCDNConfig_basic, digitalOceanBucketName)
|
|
|
|
|
|
|
|
resource.Test(t, resource.TestCase{
|
|
|
|
PreCheck: func() { testAccPreCheck(t) },
|
|
|
|
Providers: testAccProviders,
|
|
|
|
CheckDestroy: testAccCheckDigitalOceanCDNDestroy,
|
|
|
|
Steps: []resource.TestStep{
|
|
|
|
{
|
|
|
|
Config: cdnConfig,
|
|
|
|
Check: resource.ComposeTestCheckFunc(
|
|
|
|
testAccCheckDigitalOceanCDNExists("digitalocean_cdn.foobar"),
|
|
|
|
resource.TestCheckResourceAttr(
|
|
|
|
"digitalocean_cdn.foobar", "origin", digitalOceanBucketName+".ams3.digitaloceanspaces.com"),
|
|
|
|
resource.TestCheckResourceAttr("digitalocean_cdn.foobar", "ttl", "3600"),
|
|
|
|
),
|
|
|
|
},
|
|
|
|
},
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2019-04-11 15:02:18 +00:00
|
|
|
func TestAccDigitalOceanCDN_withTTL(t *testing.T) {
|
|
|
|
digitalOceanBucketName := fmt.Sprintf("tf-cdn-test-bucket-%d", acctest.RandInt())
|
|
|
|
cdnConfig := fmt.Sprintf(testAccCheckDigitalOceanCDNConfig_withTTL, digitalOceanBucketName)
|
|
|
|
|
|
|
|
resource.Test(t, resource.TestCase{
|
|
|
|
PreCheck: func() { testAccPreCheck(t) },
|
|
|
|
Providers: testAccProviders,
|
|
|
|
CheckDestroy: testAccCheckDigitalOceanCDNDestroy,
|
|
|
|
Steps: []resource.TestStep{
|
|
|
|
{
|
|
|
|
Config: cdnConfig,
|
|
|
|
Check: resource.ComposeTestCheckFunc(
|
|
|
|
testAccCheckDigitalOceanCDNExists("digitalocean_cdn.foobar"),
|
|
|
|
resource.TestCheckResourceAttr(
|
|
|
|
"digitalocean_cdn.foobar", "origin", digitalOceanBucketName+".ams3.digitaloceanspaces.com"),
|
|
|
|
resource.TestCheckResourceAttr("digitalocean_cdn.foobar", "ttl", "1800"),
|
|
|
|
),
|
|
|
|
},
|
|
|
|
},
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2019-04-12 14:17:44 +00:00
|
|
|
func TestAccDigitalOceanCDN_Create_And_Update(t *testing.T) {
|
|
|
|
digitalOceanBucketName := fmt.Sprintf("tf-cdn-test-bucket-%d", acctest.RandInt())
|
|
|
|
cdnCreateConfig := fmt.Sprintf(testAccCheckDigitalOceanCDNConfig_basic, digitalOceanBucketName)
|
|
|
|
cdnUpdateConfig := fmt.Sprintf(testAccCheckDigitalOceanCDNConfig_withTTL, digitalOceanBucketName)
|
|
|
|
|
|
|
|
resource.Test(t, resource.TestCase{
|
|
|
|
PreCheck: func() { testAccPreCheck(t) },
|
|
|
|
Providers: testAccProviders,
|
|
|
|
CheckDestroy: testAccCheckDigitalOceanCDNDestroy,
|
|
|
|
Steps: []resource.TestStep{
|
|
|
|
{
|
|
|
|
Config: cdnCreateConfig,
|
|
|
|
Check: resource.ComposeTestCheckFunc(
|
|
|
|
testAccCheckDigitalOceanCDNExists("digitalocean_cdn.foobar"),
|
|
|
|
resource.TestCheckResourceAttr(
|
|
|
|
"digitalocean_cdn.foobar", "origin", digitalOceanBucketName+".ams3.digitaloceanspaces.com"),
|
|
|
|
resource.TestCheckResourceAttr("digitalocean_cdn.foobar", "ttl", "3600"),
|
|
|
|
),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Config: cdnUpdateConfig,
|
|
|
|
Check: resource.ComposeTestCheckFunc(
|
|
|
|
testAccCheckDigitalOceanCDNExists("digitalocean_cdn.foobar"),
|
|
|
|
resource.TestCheckResourceAttr(
|
|
|
|
"digitalocean_cdn.foobar", "origin", digitalOceanBucketName+".ams3.digitaloceanspaces.com"),
|
|
|
|
resource.TestCheckResourceAttr("digitalocean_cdn.foobar", "ttl", "1800"),
|
|
|
|
),
|
|
|
|
},
|
|
|
|
},
|
|
|
|
})
|
|
|
|
}
|
2019-04-11 15:02:18 +00:00
|
|
|
|
2019-04-10 20:56:01 +00:00
|
|
|
func testAccCheckDigitalOceanCDNDestroy(s *terraform.State) error {
|
|
|
|
client := testAccProvider.Meta().(*CombinedConfig).godoClient()
|
|
|
|
|
2019-04-11 15:02:18 +00:00
|
|
|
for _, rs := range s.RootModule().Resources {
|
|
|
|
|
|
|
|
if rs.Type != "digitalocean_cdn" {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
|
|
|
|
_, _, err := client.CDNs.Get(context.Background(), rs.Primary.ID)
|
|
|
|
if err == nil {
|
|
|
|
return fmt.Errorf("CDN resource still exists")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-04-10 20:56:01 +00:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func testAccCheckDigitalOceanCDNExists(resource string) resource.TestCheckFunc {
|
|
|
|
return func(s *terraform.State) error {
|
2019-04-11 15:02:18 +00:00
|
|
|
client := testAccProvider.Meta().(*CombinedConfig).godoClient()
|
|
|
|
|
|
|
|
rs, ok := s.RootModule().Resources[resource]
|
|
|
|
|
|
|
|
if !ok {
|
|
|
|
return fmt.Errorf("Not found: %s", resource)
|
|
|
|
}
|
|
|
|
|
|
|
|
if rs.Primary.ID == "" {
|
|
|
|
return fmt.Errorf("No ID set for resource: %s", resource)
|
|
|
|
}
|
|
|
|
|
|
|
|
foundCDN, _, err := client.CDNs.Get(context.Background(), rs.Primary.ID)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
if foundCDN.ID != rs.Primary.ID {
|
|
|
|
return fmt.Errorf("Resource not found: %s : %s", resource, rs.Primary.ID)
|
|
|
|
}
|
2019-04-10 20:56:01 +00:00
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const testAccCheckDigitalOceanCDNConfig_basic = `
|
|
|
|
resource "digitalocean_spaces_bucket" "bucket" {
|
|
|
|
name = "%s"
|
|
|
|
region = "ams3"
|
|
|
|
acl = "public-read"
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "digitalocean_cdn" "foobar" {
|
|
|
|
origin = "${digitalocean_spaces_bucket.bucket.bucket_domain_name}"
|
|
|
|
}`
|
2019-04-11 15:02:18 +00:00
|
|
|
|
|
|
|
const testAccCheckDigitalOceanCDNConfig_withTTL = `
|
|
|
|
resource "digitalocean_spaces_bucket" "bucket" {
|
|
|
|
name = "%s"
|
|
|
|
region = "ams3"
|
|
|
|
acl = "public-read"
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "digitalocean_cdn" "foobar" {
|
|
|
|
origin = "${digitalocean_spaces_bucket.bucket.bucket_domain_name}"
|
|
|
|
ttl = 1800
|
|
|
|
}`
|