-
Notifications
You must be signed in to change notification settings - Fork 9.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
providers/aws: add tests for autoscaling launch configuration
- Loading branch information
Showing
1 changed file
with
128 additions
and
0 deletions.
There are no files selected for viewing
128 changes: 128 additions & 0 deletions
128
builtin/providers/aws/resource_aws_launch_configuration_test.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,128 @@ | ||
package aws | ||
|
||
import ( | ||
"fmt" | ||
"testing" | ||
|
||
"github.com/hashicorp/terraform/helper/resource" | ||
"github.com/hashicorp/terraform/terraform" | ||
"github.com/mitchellh/goamz/autoscaling" | ||
) | ||
|
||
func TestAccAWSLaunchConfiguration(t *testing.T) { | ||
var conf autoscaling.LaunchConfiguration | ||
|
||
resource.Test(t, resource.TestCase{ | ||
PreCheck: func() { testAccPreCheck(t) }, | ||
Providers: testAccProviders, | ||
CheckDestroy: testAccCheckAWSLaunchConfigurationDestroy, | ||
Steps: []resource.TestStep{ | ||
resource.TestStep{ | ||
Config: testAccAWSLaunchConfigurationConfig, | ||
Check: resource.ComposeTestCheckFunc( | ||
testAccCheckAWSLaunchConfigurationExists("aws_launch_configuration.bar", &conf), | ||
testAccCheckAWSLaunchConfigurationAttributes(&conf), | ||
resource.TestCheckResourceAttr( | ||
"aws_launch_configuration.bar", "image_id", "ami-fb8e9292"), | ||
resource.TestCheckResourceAttr( | ||
"aws_launch_configuration.bar", "name", "foobar-terraform-test"), | ||
resource.TestCheckResourceAttr( | ||
"aws_launch_configuration.bar", "instance_type", "t1.micro"), | ||
), | ||
}, | ||
}, | ||
}) | ||
} | ||
|
||
func testAccCheckAWSLaunchConfigurationDestroy(s *terraform.State) error { | ||
conn := testAccProvider.autoscalingconn | ||
|
||
for _, rs := range s.Resources { | ||
if rs.Type != "aws_launch_configuration" { | ||
continue | ||
} | ||
|
||
// Try to find the Group | ||
describeGroups, err := conn.DescribeLaunchConfigurations( | ||
&autoscaling.DescribeLaunchConfigurations{ | ||
Names: []string{rs.ID}, | ||
}) | ||
|
||
if err == nil { | ||
if len(describeGroups.LaunchConfigurations) != 0 && | ||
describeGroups.LaunchConfigurations[0].Name == rs.ID { | ||
return fmt.Errorf("Launch Configuration still exists") | ||
} | ||
} | ||
|
||
// Verify the error | ||
providerErr, ok := err.(*autoscaling.Error) | ||
if !ok { | ||
return err | ||
} | ||
if providerErr.Code != "InvalidLaunchConfiguration.NotFound" { | ||
return err | ||
} | ||
} | ||
|
||
return nil | ||
} | ||
|
||
func testAccCheckAWSLaunchConfigurationAttributes(conf *autoscaling.LaunchConfiguration) resource.TestCheckFunc { | ||
return func(s *terraform.State) error { | ||
if conf.ImageId != "ami-fb8e9292" { | ||
return fmt.Errorf("Bad image_id: %s", conf.ImageId) | ||
} | ||
|
||
if conf.Name != "foobar-terraform-test" { | ||
return fmt.Errorf("Bad name: %s", conf.Name) | ||
} | ||
|
||
if conf.InstanceType != "t1.micro" { | ||
return fmt.Errorf("Bad instance_type: %s", conf.InstanceType) | ||
} | ||
|
||
return nil | ||
} | ||
} | ||
|
||
func testAccCheckAWSLaunchConfigurationExists(n string, res *autoscaling.LaunchConfiguration) resource.TestCheckFunc { | ||
return func(s *terraform.State) error { | ||
rs, ok := s.Resources[n] | ||
if !ok { | ||
return fmt.Errorf("Not found: %s", n) | ||
} | ||
|
||
if rs.ID == "" { | ||
return fmt.Errorf("No Launch Configuration ID is set") | ||
} | ||
|
||
conn := testAccProvider.autoscalingconn | ||
|
||
describeOpts := autoscaling.DescribeLaunchConfigurations{ | ||
Names: []string{rs.ID}, | ||
} | ||
describe, err := conn.DescribeLaunchConfigurations(&describeOpts) | ||
|
||
if err != nil { | ||
return err | ||
} | ||
|
||
if len(describe.LaunchConfigurations) != 1 || | ||
describe.LaunchConfigurations[0].Name != rs.ID { | ||
return fmt.Errorf("Launch Configuration Group not found") | ||
} | ||
|
||
*res = describe.LaunchConfigurations[0] | ||
|
||
return nil | ||
} | ||
} | ||
|
||
const testAccAWSLaunchConfigurationConfig = ` | ||
resource "aws_launch_configuration" "bar" { | ||
name = "foobar-terraform-test" | ||
image_id = "ami-fb8e9292" | ||
instance_type = "t1.micro" | ||
} | ||
` |