github.com/vtorhonen/terraform@v0.9.0-beta2.0.20170307220345-5d894e4ffda7/builtin/providers/aws/resource_aws_lambda_alias_test.go (about) 1 package aws 2 3 import ( 4 "fmt" 5 "regexp" 6 "testing" 7 8 "github.com/aws/aws-sdk-go/aws" 9 "github.com/aws/aws-sdk-go/service/lambda" 10 "github.com/hashicorp/terraform/helper/resource" 11 "github.com/hashicorp/terraform/terraform" 12 ) 13 14 func TestAccAWSLambdaAlias_basic(t *testing.T) { 15 var conf lambda.AliasConfiguration 16 17 resource.Test(t, resource.TestCase{ 18 PreCheck: func() { testAccPreCheck(t) }, 19 Providers: testAccProviders, 20 CheckDestroy: testAccCheckAwsLambdaAliasDestroy, 21 Steps: []resource.TestStep{ 22 resource.TestStep{ 23 Config: testAccAwsLambdaAliasConfig, 24 Check: resource.ComposeTestCheckFunc( 25 testAccCheckAwsLambdaAliasExists("aws_lambda_alias.lambda_alias_test", &conf), 26 testAccCheckAwsLambdaAttributes(&conf), 27 resource.TestMatchResourceAttr("aws_lambda_alias.lambda_alias_test", "arn", regexp.MustCompile(`^arn:aws:lambda:[a-z]+-[a-z]+-[0-9]+:\d{12}:function:example_lambda_name_create:testalias$`)), 28 ), 29 }, 30 }, 31 }) 32 } 33 34 func testAccCheckAwsLambdaAliasDestroy(s *terraform.State) error { 35 conn := testAccProvider.Meta().(*AWSClient).lambdaconn 36 37 for _, rs := range s.RootModule().Resources { 38 if rs.Type != "aws_lambda_alias" { 39 continue 40 } 41 42 _, err := conn.GetAlias(&lambda.GetAliasInput{ 43 FunctionName: aws.String(rs.Primary.ID), 44 }) 45 46 if err == nil { 47 return fmt.Errorf("Lambda alias was not deleted") 48 } 49 50 } 51 52 return nil 53 } 54 55 func testAccCheckAwsLambdaAliasExists(n string, mapping *lambda.AliasConfiguration) resource.TestCheckFunc { 56 return func(s *terraform.State) error { 57 rs, ok := s.RootModule().Resources[n] 58 if !ok { 59 return fmt.Errorf("Lambda alias not found: %s", n) 60 } 61 62 if rs.Primary.ID == "" { 63 return fmt.Errorf("Lambda alias not set") 64 } 65 66 conn := testAccProvider.Meta().(*AWSClient).lambdaconn 67 68 params := &lambda.GetAliasInput{ 69 FunctionName: aws.String(rs.Primary.ID), 70 Name: aws.String("testalias"), 71 } 72 73 getAliasConfiguration, err := conn.GetAlias(params) 74 if err != nil { 75 return err 76 } 77 78 *mapping = *getAliasConfiguration 79 80 return nil 81 } 82 } 83 84 func testAccCheckAwsLambdaAttributes(mapping *lambda.AliasConfiguration) resource.TestCheckFunc { 85 return func(s *terraform.State) error { 86 name := *mapping.Name 87 arn := *mapping.AliasArn 88 if arn == "" { 89 return fmt.Errorf("Could not read Lambda alias ARN") 90 } 91 if name == "" { 92 return fmt.Errorf("Could not read Lambda alias name") 93 } 94 return nil 95 } 96 } 97 98 const testAccAwsLambdaAliasConfig = ` 99 resource "aws_iam_role" "iam_for_lambda" { 100 name = "iam_for_lambda" 101 102 assume_role_policy = <<EOF 103 { 104 "Version": "2012-10-17", 105 "Statement": [ 106 { 107 "Action": "sts:AssumeRole", 108 "Principal": { 109 "Service": "lambda.amazonaws.com" 110 }, 111 "Effect": "Allow", 112 "Sid": "" 113 } 114 ] 115 } 116 EOF 117 } 118 119 resource "aws_iam_policy" "policy_for_role" { 120 name = "policy_for_role" 121 path = "/" 122 description = "IAM policy for for Lamda alias testing" 123 124 policy = <<EOF 125 { 126 "Version": "2012-10-17", 127 "Statement": [ 128 { 129 "Effect": "Allow", 130 "Action": [ 131 "lambda:*" 132 ], 133 "Resource": "*" 134 } 135 ] 136 } 137 EOF 138 } 139 140 resource "aws_iam_policy_attachment" "policy_attachment_for_role" { 141 name = "policy_attachment_for_role" 142 roles = ["${aws_iam_role.iam_for_lambda.name}"] 143 policy_arn = "${aws_iam_policy.policy_for_role.arn}" 144 } 145 146 resource "aws_lambda_function" "lambda_function_test_create" { 147 filename = "test-fixtures/lambdatest.zip" 148 function_name = "example_lambda_name_create" 149 role = "${aws_iam_role.iam_for_lambda.arn}" 150 handler = "exports.example" 151 runtime = "nodejs4.3" 152 } 153 154 resource "aws_lambda_alias" "lambda_alias_test" { 155 name = "testalias" 156 description = "a sample description" 157 function_name = "${aws_lambda_function.lambda_function_test_create.arn}" 158 function_version = "$LATEST" 159 } 160 `