github.com/ezbercih/terraform@v0.1.1-0.20140729011846-3c33865e0839/builtin/providers/aws/resource_aws_vpc_test.go (about) 1 package aws 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/hashicorp/terraform/helper/resource" 8 "github.com/hashicorp/terraform/terraform" 9 "github.com/mitchellh/goamz/ec2" 10 ) 11 12 func TestAccVpc(t *testing.T) { 13 var vpc ec2.VPC 14 15 resource.Test(t, resource.TestCase{ 16 PreCheck: func() { testAccPreCheck(t) }, 17 Providers: testAccProviders, 18 CheckDestroy: testAccCheckVpcDestroy, 19 Steps: []resource.TestStep{ 20 resource.TestStep{ 21 Config: testAccVpcConfig, 22 Check: resource.ComposeTestCheckFunc( 23 testAccCheckVpcExists("aws_vpc.foo", &vpc), 24 testAccCheckVpcCidr(&vpc, "10.1.0.0/16"), 25 resource.TestCheckResourceAttr( 26 "aws_vpc.foo", "cidr_block", "10.1.0.0/16"), 27 ), 28 }, 29 }, 30 }) 31 } 32 33 func testAccCheckVpcDestroy(s *terraform.State) error { 34 conn := testAccProvider.ec2conn 35 36 for _, rs := range s.Resources { 37 if rs.Type != "aws_vpc" { 38 continue 39 } 40 41 // Try to find the VPC 42 resp, err := conn.DescribeVpcs([]string{rs.ID}, ec2.NewFilter()) 43 if err == nil { 44 if len(resp.VPCs) > 0 { 45 return fmt.Errorf("VPCs still exist.") 46 } 47 48 return nil 49 } 50 51 // Verify the error is what we want 52 ec2err, ok := err.(*ec2.Error) 53 if !ok { 54 return err 55 } 56 if ec2err.Code != "InvalidVpcID.NotFound" { 57 return err 58 } 59 } 60 61 return nil 62 } 63 64 func testAccCheckVpcCidr(vpc *ec2.VPC, expected string) resource.TestCheckFunc { 65 return func(s *terraform.State) error { 66 if vpc.CidrBlock != expected { 67 return fmt.Errorf("Bad cidr: %s", vpc.CidrBlock) 68 } 69 70 return nil 71 } 72 } 73 74 func testAccCheckVpcExists(n string, vpc *ec2.VPC) resource.TestCheckFunc { 75 return func(s *terraform.State) error { 76 rs, ok := s.Resources[n] 77 if !ok { 78 return fmt.Errorf("Not found: %s", n) 79 } 80 81 if rs.ID == "" { 82 return fmt.Errorf("No VPC ID is set") 83 } 84 85 conn := testAccProvider.ec2conn 86 resp, err := conn.DescribeVpcs([]string{rs.ID}, ec2.NewFilter()) 87 if err != nil { 88 return err 89 } 90 if len(resp.VPCs) == 0 { 91 return fmt.Errorf("VPC not found") 92 } 93 94 *vpc = resp.VPCs[0] 95 96 return nil 97 } 98 } 99 100 const testAccVpcConfig = ` 101 resource "aws_vpc" "foo" { 102 cidr_block = "10.1.0.0/16" 103 } 104 `