github.com/andresvia/terraform@v0.6.15-0.20160412045437-d51c75946785/builtin/providers/aws/resource_aws_ebs_volume_test.go (about) 1 package aws 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/aws/aws-sdk-go/aws" 8 "github.com/aws/aws-sdk-go/service/ec2" 9 "github.com/hashicorp/terraform/helper/resource" 10 "github.com/hashicorp/terraform/terraform" 11 ) 12 13 func TestAccAWSEBSVolume_basic(t *testing.T) { 14 var v ec2.Volume 15 resource.Test(t, resource.TestCase{ 16 PreCheck: func() { testAccPreCheck(t) }, 17 Providers: testAccProviders, 18 Steps: []resource.TestStep{ 19 resource.TestStep{ 20 Config: testAccAwsEbsVolumeConfig, 21 Check: resource.ComposeTestCheckFunc( 22 testAccCheckVolumeExists("aws_ebs_volume.test", &v), 23 ), 24 }, 25 }, 26 }) 27 } 28 29 func TestAccAWSEBSVolume_NoIops(t *testing.T) { 30 var v ec2.Volume 31 resource.Test(t, resource.TestCase{ 32 PreCheck: func() { testAccPreCheck(t) }, 33 Providers: testAccProviders, 34 Steps: []resource.TestStep{ 35 resource.TestStep{ 36 Config: testAccAwsEbsVolumeConfigWithNoIops, 37 Check: resource.ComposeTestCheckFunc( 38 testAccCheckVolumeExists("aws_ebs_volume.iops_test", &v), 39 ), 40 }, 41 }, 42 }) 43 } 44 45 func TestAccAWSEBSVolume_withTags(t *testing.T) { 46 var v ec2.Volume 47 resource.Test(t, resource.TestCase{ 48 PreCheck: func() { testAccPreCheck(t) }, 49 Providers: testAccProviders, 50 Steps: []resource.TestStep{ 51 resource.TestStep{ 52 Config: testAccAwsEbsVolumeConfigWithTags, 53 Check: resource.ComposeTestCheckFunc( 54 testAccCheckVolumeExists("aws_ebs_volume.tags_test", &v), 55 ), 56 }, 57 }, 58 }) 59 } 60 61 func testAccCheckVolumeExists(n string, v *ec2.Volume) resource.TestCheckFunc { 62 return func(s *terraform.State) error { 63 rs, ok := s.RootModule().Resources[n] 64 if !ok { 65 return fmt.Errorf("Not found: %s", n) 66 } 67 68 if rs.Primary.ID == "" { 69 return fmt.Errorf("No ID is set") 70 } 71 72 conn := testAccProvider.Meta().(*AWSClient).ec2conn 73 74 request := &ec2.DescribeVolumesInput{ 75 VolumeIds: []*string{aws.String(rs.Primary.ID)}, 76 } 77 78 response, err := conn.DescribeVolumes(request) 79 if err == nil { 80 if response.Volumes != nil && len(response.Volumes) > 0 { 81 *v = *response.Volumes[0] 82 return nil 83 } 84 } 85 return fmt.Errorf("Error finding EC2 volume %s", rs.Primary.ID) 86 } 87 } 88 89 const testAccAwsEbsVolumeConfig = ` 90 resource "aws_ebs_volume" "test" { 91 availability_zone = "us-west-2a" 92 size = 1 93 } 94 ` 95 96 const testAccAwsEbsVolumeConfigWithTags = ` 97 resource "aws_ebs_volume" "tags_test" { 98 availability_zone = "us-west-2a" 99 size = 1 100 tags { 101 Name = "TerraformTest" 102 } 103 } 104 ` 105 106 const testAccAwsEbsVolumeConfigWithNoIops = ` 107 resource "aws_ebs_volume" "iops_test" { 108 availability_zone = "us-west-2a" 109 size = 10 110 type = "gp2" 111 iops = 0 112 tags { 113 Name = "TerraformTest" 114 } 115 } 116 `