terraform-provider-google/google/resource_compute_address_test.go

153 lines
4.1 KiB
Go
Raw Normal View History

2014-08-25 18:48:20 +00:00
package google
import (
"fmt"
2014-08-25 18:48:20 +00:00
"testing"
"github.com/hashicorp/terraform/helper/acctest"
2014-08-25 18:48:20 +00:00
"github.com/hashicorp/terraform/helper/resource"
"github.com/hashicorp/terraform/terraform"
"google.golang.org/api/compute/v1"
2014-08-25 18:48:20 +00:00
)
// Unit tests
func TestComputeAddressIdParsing(t *testing.T) {
cases := map[string]struct {
ImportId string
ExpectedError bool
ExpectedCanonicalId string
Config *Config
}{
"id is a full self link": {
ImportId: "https://www.googleapis.com/compute/v1/projects/test-project/regions/us-central1/addresses/test-address",
ExpectedError: false,
ExpectedCanonicalId: "projects/test-project/regions/us-central1/addresses/test-address",
},
"id is a partial self link": {
ImportId: "projects/test-project/regions/us-central1/addresses/test-address",
ExpectedError: false,
ExpectedCanonicalId: "projects/test-project/regions/us-central1/addresses/test-address",
},
"id is project/region/address": {
ImportId: "test-project/us-central1/test-address",
ExpectedError: false,
ExpectedCanonicalId: "projects/test-project/regions/us-central1/addresses/test-address",
},
"id is region/address": {
ImportId: "us-central1/test-address",
ExpectedError: false,
ExpectedCanonicalId: "projects/default-project/regions/us-central1/addresses/test-address",
Config: &Config{Project: "default-project"},
},
"id is address": {
ImportId: "test-address",
ExpectedError: false,
ExpectedCanonicalId: "projects/default-project/regions/us-east1/addresses/test-address",
Config: &Config{Project: "default-project", Region: "us-east1"},
},
"id has invalid format": {
ImportId: "i/n/v/a/l/i/d",
ExpectedError: true,
},
}
for tn, tc := range cases {
addressId, err := parseComputeAddressId(tc.ImportId, tc.Config)
if tc.ExpectedError && err == nil {
t.Fatalf("bad: %s, expected an error", tn)
}
if err != nil {
if tc.ExpectedError {
continue
}
t.Fatalf("bad: %s, err: %#v", tn, err)
}
if addressId.canonicalId() != tc.ExpectedCanonicalId {
t.Fatalf("bad: %s, expected canonical id to be `%s` but is `%s`", tn, tc.ExpectedCanonicalId, addressId.canonicalId())
}
}
}
// Acceptance tests
func TestAccComputeAddress_basic(t *testing.T) {
t.Parallel()
var addr compute.Address
2014-08-25 18:48:20 +00:00
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckComputeAddressDestroy,
2014-08-25 18:48:20 +00:00
Steps: []resource.TestStep{
resource.TestStep{
Config: testAccComputeAddress_basic,
2014-08-25 18:48:20 +00:00
Check: resource.ComposeTestCheckFunc(
testAccCheckComputeAddressExists(
"google_compute_address.foobar", &addr),
2014-08-25 18:48:20 +00:00
),
},
},
})
}
func testAccCheckComputeAddressDestroy(s *terraform.State) error {
config := testAccProvider.Meta().(*Config)
2014-08-25 18:48:20 +00:00
for _, rs := range s.RootModule().Resources {
if rs.Type != "google_compute_address" {
2014-08-25 18:48:20 +00:00
continue
}
addressId, err := parseComputeAddressId(rs.Primary.ID, nil)
_, err = config.clientCompute.Addresses.Get(
config.Project, addressId.Region, addressId.Name).Do()
2014-08-25 18:48:20 +00:00
if err == nil {
return fmt.Errorf("Address still exists")
2014-08-25 18:48:20 +00:00
}
}
return nil
}
func testAccCheckComputeAddressExists(n string, addr *compute.Address) resource.TestCheckFunc {
2014-08-25 18:48:20 +00:00
return func(s *terraform.State) error {
rs, ok := s.RootModule().Resources[n]
2014-08-25 18:48:20 +00:00
if !ok {
return fmt.Errorf("Not found: %s", n)
}
if rs.Primary.ID == "" {
return fmt.Errorf("No ID is set")
2014-08-25 18:48:20 +00:00
}
config := testAccProvider.Meta().(*Config)
2014-08-25 18:48:20 +00:00
addressId, err := parseComputeAddressId(rs.Primary.ID, nil)
found, err := config.clientCompute.Addresses.Get(
config.Project, addressId.Region, addressId.Name).Do()
2014-08-25 18:48:20 +00:00
if err != nil {
return err
}
if found.Name != addressId.Name {
return fmt.Errorf("Addr not found")
2014-08-25 18:48:20 +00:00
}
*addr = *found
2014-08-25 18:48:20 +00:00
return nil
}
}
var testAccComputeAddress_basic = fmt.Sprintf(`
resource "google_compute_address" "foobar" {
name = "address-test-%s"
}`, acctest.RandString(10))