tweaks to restore TypeSet functionality

This commit is contained in:
clint shryock 2017-01-19 09:17:10 -06:00
parent 25f9aeb30a
commit 2cf64ef72c
3 changed files with 28 additions and 10 deletions

View File

@ -269,7 +269,7 @@ func expandCacheBehavior(m map[string]interface{}) *cloudfront.CacheBehavior {
} }
if v, ok := m["lambda_function_association"]; ok { if v, ok := m["lambda_function_association"]; ok {
cb.LambdaFunctionAssociations = expandLambdaFunctionAssociations(v) cb.LambdaFunctionAssociations = expandLambdaFunctionAssociations(v.(*schema.Set).List())
} }
if v, ok := m["smooth_streaming"]; ok { if v, ok := m["smooth_streaming"]; ok {

View File

@ -1,11 +1,14 @@
package aws package aws
import ( import (
"bytes"
"fmt"
"reflect" "reflect"
"testing" "testing"
"github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/cloudfront" "github.com/aws/aws-sdk-go/service/cloudfront"
"github.com/hashicorp/terraform/helper/hashcode"
"github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform/helper/schema"
) )
@ -46,8 +49,20 @@ func trustedSignersConf() []interface{} {
return []interface{}{"1234567890EX", "1234567891EX"} return []interface{}{"1234567890EX", "1234567891EX"}
} }
func lambdaFunctionAssociationsConf() []interface{} { func lambdaSetHash(v interface{}) int {
s := []interface{}{ var buf bytes.Buffer
m := v.(map[string]interface{})
if v, ok := m["event_type"]; ok {
buf.WriteString(fmt.Sprintf("%s-", v.(string)))
}
if v, ok := m["lambda_arn"]; ok {
buf.WriteString(fmt.Sprintf("%d-", v.(string)))
}
return hashcode.String(buf.String())
}
func lambdaFunctionAssociationsConf() *schema.Set {
x := []interface{}{
map[string]interface{}{ map[string]interface{}{
"event_type": "viewer-request", "event_type": "viewer-request",
"lambda_arn": "arn:aws:lambda:us-east-1:999999999:function1:alias", "lambda_arn": "arn:aws:lambda:us-east-1:999999999:function1:alias",
@ -57,6 +72,9 @@ func lambdaFunctionAssociationsConf() []interface{} {
"lambda_arn": "arn:aws:lambda:us-east-1:999999999:function2:alias", "lambda_arn": "arn:aws:lambda:us-east-1:999999999:function2:alias",
}, },
} }
s := schema.NewSet(lambdaSetHash, x)
return s return s
} }
@ -454,7 +472,7 @@ func TestCloudFrontStructure_expandTrustedSigners_empty(t *testing.T) {
func TestCloudFrontStructure_expandLambdaFunctionAssociations(t *testing.T) { func TestCloudFrontStructure_expandLambdaFunctionAssociations(t *testing.T) {
data := lambdaFunctionAssociationsConf() data := lambdaFunctionAssociationsConf()
lfa := expandLambdaFunctionAssociations(data) lfa := expandLambdaFunctionAssociations(data.List())
if *lfa.Quantity != 2 { if *lfa.Quantity != 2 {
t.Fatalf("Expected Quantity to be 2, got %v", *lfa.Quantity) t.Fatalf("Expected Quantity to be 2, got %v", *lfa.Quantity)
} }
@ -471,17 +489,17 @@ func TestCloudFrontStructure_expandLambdaFunctionAssociations(t *testing.T) {
func TestCloudFrontStructure_flattenlambdaFunctionAssociations(t *testing.T) { func TestCloudFrontStructure_flattenlambdaFunctionAssociations(t *testing.T) {
in := lambdaFunctionAssociationsConf() in := lambdaFunctionAssociationsConf()
lfa := expandLambdaFunctionAssociations(in) lfa := expandLambdaFunctionAssociations(in.List())
out := flattenLambdaFunctionAssociations(lfa) out := flattenLambdaFunctionAssociations(lfa)
if reflect.DeepEqual(in, out) != true { if reflect.DeepEqual(in.List(), out) != true {
t.Fatalf("Expected out to be %v, got %v", in, out) t.Fatalf("Expected out to be %v, got %v", in, out)
} }
} }
func TestCloudFrontStructure_expandlambdaFunctionAssociations_empty(t *testing.T) { func TestCloudFrontStructure_expandlambdaFunctionAssociations_empty(t *testing.T) {
data := []interface{}{} data := new(schema.Set)
lfa := expandLambdaFunctionAssociations(data) lfa := expandLambdaFunctionAssociations(data.List())
if *lfa.Quantity != 0 { if *lfa.Quantity != 0 {
t.Fatalf("Expected Quantity to be 0, got %v", *lfa.Quantity) t.Fatalf("Expected Quantity to be 0, got %v", *lfa.Quantity)
} }

View File

@ -103,7 +103,7 @@ func resourceAwsCloudFrontDistribution() *schema.Resource {
}, },
}, },
"lambda_function_association": { "lambda_function_association": {
Type: schema.TypeList, Type: schema.TypeSet,
Optional: true, Optional: true,
MaxItems: 4, MaxItems: 4,
Elem: &schema.Resource{ Elem: &schema.Resource{
@ -250,7 +250,7 @@ func resourceAwsCloudFrontDistribution() *schema.Resource {
}, },
}, },
"lambda_function_association": { "lambda_function_association": {
Type: schema.TypeList, Type: schema.TypeSet,
Optional: true, Optional: true,
MaxItems: 4, MaxItems: 4,
Elem: &schema.Resource{ Elem: &schema.Resource{