github.com/minamijoyo/terraform@v0.7.8-0.20161029001309-18b3736ba44b/builtin/providers/aws/resource_aws_api_gateway_deployment_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/aws/awserr" 9 "github.com/aws/aws-sdk-go/service/apigateway" 10 "github.com/hashicorp/terraform/helper/resource" 11 "github.com/hashicorp/terraform/terraform" 12 ) 13 14 func TestAccAWSAPIGatewayDeployment_basic(t *testing.T) { 15 var conf apigateway.Deployment 16 17 resource.Test(t, resource.TestCase{ 18 PreCheck: func() { testAccPreCheck(t) }, 19 Providers: testAccProviders, 20 CheckDestroy: testAccCheckAWSAPIGatewayDeploymentDestroy, 21 Steps: []resource.TestStep{ 22 resource.TestStep{ 23 Config: testAccAWSAPIGatewayDeploymentConfig, 24 Check: resource.ComposeTestCheckFunc( 25 testAccCheckAWSAPIGatewayDeploymentExists("aws_api_gateway_deployment.test", &conf), 26 resource.TestCheckResourceAttr( 27 "aws_api_gateway_deployment.test", "stage_name", "test"), 28 resource.TestCheckResourceAttr( 29 "aws_api_gateway_deployment.test", "description", "This is a test"), 30 resource.TestCheckResourceAttr( 31 "aws_api_gateway_deployment.test", "variables.a", "2"), 32 ), 33 }, 34 }, 35 }) 36 } 37 38 func testAccCheckAWSAPIGatewayDeploymentExists(n string, res *apigateway.Deployment) resource.TestCheckFunc { 39 return func(s *terraform.State) error { 40 rs, ok := s.RootModule().Resources[n] 41 if !ok { 42 return fmt.Errorf("Not found: %s", n) 43 } 44 45 if rs.Primary.ID == "" { 46 return fmt.Errorf("No API Gateway Deployment ID is set") 47 } 48 49 conn := testAccProvider.Meta().(*AWSClient).apigateway 50 51 req := &apigateway.GetDeploymentInput{ 52 DeploymentId: aws.String(rs.Primary.ID), 53 RestApiId: aws.String(s.RootModule().Resources["aws_api_gateway_rest_api.test"].Primary.ID), 54 } 55 describe, err := conn.GetDeployment(req) 56 if err != nil { 57 return err 58 } 59 60 if *describe.Id != rs.Primary.ID { 61 return fmt.Errorf("APIGateway Deployment not found") 62 } 63 64 *res = *describe 65 66 return nil 67 } 68 } 69 70 func testAccCheckAWSAPIGatewayDeploymentDestroy(s *terraform.State) error { 71 conn := testAccProvider.Meta().(*AWSClient).apigateway 72 73 for _, rs := range s.RootModule().Resources { 74 if rs.Type != "aws_api_gateway_resource" { 75 continue 76 } 77 78 req := &apigateway.GetDeploymentsInput{ 79 RestApiId: aws.String(s.RootModule().Resources["aws_api_gateway_rest_api.test"].Primary.ID), 80 } 81 describe, err := conn.GetDeployments(req) 82 83 if err == nil { 84 if len(describe.Items) != 0 && 85 *describe.Items[0].Id == rs.Primary.ID { 86 return fmt.Errorf("API Gateway Deployment still exists") 87 } 88 } 89 90 aws2err, ok := err.(awserr.Error) 91 if !ok { 92 return err 93 } 94 if aws2err.Code() != "NotFoundException" { 95 return err 96 } 97 98 return nil 99 } 100 101 return nil 102 } 103 104 const testAccAWSAPIGatewayDeploymentConfig = ` 105 resource "aws_api_gateway_rest_api" "test" { 106 name = "test" 107 } 108 109 resource "aws_api_gateway_resource" "test" { 110 rest_api_id = "${aws_api_gateway_rest_api.test.id}" 111 parent_id = "${aws_api_gateway_rest_api.test.root_resource_id}" 112 path_part = "test" 113 } 114 115 resource "aws_api_gateway_method" "test" { 116 rest_api_id = "${aws_api_gateway_rest_api.test.id}" 117 resource_id = "${aws_api_gateway_resource.test.id}" 118 http_method = "GET" 119 authorization = "NONE" 120 } 121 122 resource "aws_api_gateway_method_response" "error" { 123 rest_api_id = "${aws_api_gateway_rest_api.test.id}" 124 resource_id = "${aws_api_gateway_resource.test.id}" 125 http_method = "${aws_api_gateway_method.test.http_method}" 126 status_code = "400" 127 } 128 129 resource "aws_api_gateway_integration" "test" { 130 rest_api_id = "${aws_api_gateway_rest_api.test.id}" 131 resource_id = "${aws_api_gateway_resource.test.id}" 132 http_method = "${aws_api_gateway_method.test.http_method}" 133 134 type = "HTTP" 135 uri = "https://www.google.de" 136 integration_http_method = "GET" 137 } 138 139 resource "aws_api_gateway_integration_response" "test" { 140 rest_api_id = "${aws_api_gateway_rest_api.test.id}" 141 resource_id = "${aws_api_gateway_resource.test.id}" 142 http_method = "${aws_api_gateway_integration.test.http_method}" 143 status_code = "${aws_api_gateway_method_response.error.status_code}" 144 } 145 146 resource "aws_api_gateway_deployment" "test" { 147 depends_on = ["aws_api_gateway_integration.test"] 148 149 rest_api_id = "${aws_api_gateway_rest_api.test.id}" 150 stage_name = "test" 151 description = "This is a test" 152 153 variables = { 154 "a" = "2" 155 } 156 } 157 `