From a1c8bc60e71c4da19acbf7cae8c3ac45f68a8817 Mon Sep 17 00:00:00 2001 From: John Jelinek IV Date: Tue, 17 May 2016 18:56:59 -0500 Subject: [PATCH] [WIP] AWS APIGateway Custom Authorizer --- .../aws/resource_aws_api_gateway_method.go | 6 ++ .../resource_aws_api_gateway_method_test.go | 64 +++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/builtin/providers/aws/resource_aws_api_gateway_method.go b/builtin/providers/aws/resource_aws_api_gateway_method.go index ad9b327af877..428f7988fe00 100644 --- a/builtin/providers/aws/resource_aws_api_gateway_method.go +++ b/builtin/providers/aws/resource_aws_api_gateway_method.go @@ -45,6 +45,11 @@ func resourceAwsApiGatewayMethod() *schema.Resource { Required: true, }, + "authorizer_id": &schema.Schema{ + Type: schema.TypeString, + Optional: true, + }, + "api_key_required": &schema.Schema{ Type: schema.TypeBool, Optional: true, @@ -89,6 +94,7 @@ func resourceAwsApiGatewayMethodCreate(d *schema.ResourceData, meta interface{}) // TODO reimplement once [GH-2143](https://github.com/hashicorp/terraform/issues/2143) has been implemented RequestParameters: aws.BoolMap(parameters), ApiKeyRequired: aws.Bool(d.Get("api_key_required").(bool)), + AuthorizerId: aws.String(d.Get("authorizer_id").(string)), }) if err != nil { return fmt.Errorf("Error creating API Gateway Method: %s", err) diff --git a/builtin/providers/aws/resource_aws_api_gateway_method_test.go b/builtin/providers/aws/resource_aws_api_gateway_method_test.go index 23b2593ae362..c5dd61985775 100644 --- a/builtin/providers/aws/resource_aws_api_gateway_method_test.go +++ b/builtin/providers/aws/resource_aws_api_gateway_method_test.go @@ -44,6 +44,39 @@ func TestAccAWSAPIGatewayMethod_basic(t *testing.T) { }) } +func TestAccAWSAPIGatewayMethod_customauthorizer(t *testing.T) { + var conf apigateway.Method + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckAWSAPIGatewayMethodDestroy, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccAWSAPIGatewayMethodConfigWithCustomAuthorizer, + Check: resource.ComposeTestCheckFunc( + testAccCheckAWSAPIGatewayMethodExists("aws_api_gateway_method.test", &conf), + testAccCheckAWSAPIGatewayMethodAttributes(&conf), + resource.TestCheckResourceAttr( + "aws_api_gateway_method.test", "http_method", "GET"), + resource.TestCheckResourceAttr( + "aws_api_gateway_method.test", "authorization", "CUSTOM"), + resource.TestCheckResourceAttr( + "aws_api_gateway_method.test", "request_models.application/json", "Error"), + ), + }, + + resource.TestStep{ + Config: testAccAWSAPIGatewayMethodConfigUpdate, + Check: resource.ComposeTestCheckFunc( + testAccCheckAWSAPIGatewayMethodExists("aws_api_gateway_method.test", &conf), + testAccCheckAWSAPIGatewayMethodAttributesUpdate(&conf), + ), + }, + }, + }) +} + func testAccCheckAWSAPIGatewayMethodAttributes(conf *apigateway.Method) resource.TestCheckFunc { return func(s *terraform.State) error { if *conf.HttpMethod != "GET" { @@ -154,6 +187,37 @@ func testAccCheckAWSAPIGatewayMethodDestroy(s *terraform.State) error { return nil } +const testAccAWSAPIGatewayMethodConfigWithCustomAuthorizer = ` +resource "aws_api_gateway_rest_api" "test" { + name = "test" +} + +resource "aws_api_gateway_resource" "test" { + rest_api_id = "${aws_api_gateway_rest_api.test.id}" + parent_id = "${aws_api_gateway_rest_api.test.root_resource_id}" + path_part = "test" +} + +resource "aws_api_gateway_method" "test" { + rest_api_id = "${aws_api_gateway_rest_api.test.id}" + resource_id = "${aws_api_gateway_resource.test.id}" + http_method = "GET" + authorization = "CUSTOM" + authorizer_id = "efjvkr" + + request_models = { + "application/json" = "Error" + } + + request_parameters_in_json = <