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  }