github.phpd.cn/hashicorp/packer@v1.3.2/builder/amazon/common/interpolate_build_info_test.go (about) 1 package common 2 3 import ( 4 "reflect" 5 "testing" 6 7 "github.com/aws/aws-sdk-go/aws" 8 "github.com/aws/aws-sdk-go/service/ec2" 9 "github.com/hashicorp/packer/helper/multistep" 10 ) 11 12 func testImage() *ec2.Image { 13 return &ec2.Image{ 14 ImageId: aws.String("ami-abcd1234"), 15 Name: aws.String("ami_test_name"), 16 Tags: []*ec2.Tag{ 17 { 18 Key: aws.String("key-1"), 19 Value: aws.String("value-1"), 20 }, 21 { 22 Key: aws.String("key-2"), 23 Value: aws.String("value-2"), 24 }, 25 }, 26 } 27 } 28 29 func testState() multistep.StateBag { 30 state := new(multistep.BasicStateBag) 31 return state 32 } 33 34 func TestInterpolateBuildInfo_extractBuildInfo_noSourceImage(t *testing.T) { 35 state := testState() 36 buildInfo := extractBuildInfo("foo", state) 37 38 expected := BuildInfoTemplate{ 39 BuildRegion: "foo", 40 } 41 if !reflect.DeepEqual(*buildInfo, expected) { 42 t.Fatalf("Unexpected BuildInfoTemplate: expected %#v got %#v\n", expected, *buildInfo) 43 } 44 } 45 46 func TestInterpolateBuildInfo_extractBuildInfo_withSourceImage(t *testing.T) { 47 state := testState() 48 state.Put("source_image", testImage()) 49 buildInfo := extractBuildInfo("foo", state) 50 51 expected := BuildInfoTemplate{ 52 BuildRegion: "foo", 53 SourceAMI: "ami-abcd1234", 54 SourceAMIName: "ami_test_name", 55 SourceAMITags: map[string]string{ 56 "key-1": "value-1", 57 "key-2": "value-2", 58 }, 59 } 60 if !reflect.DeepEqual(*buildInfo, expected) { 61 t.Fatalf("Unexpected BuildInfoTemplate: expected %#v got %#v\n", expected, *buildInfo) 62 } 63 }