github.phpd.cn/hashicorp/packer@v1.3.2/builder/amazon/common/access_config_test.go (about)

     1  package common
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/aws/aws-sdk-go/aws"
     7  	"github.com/aws/aws-sdk-go/aws/session"
     8  	"github.com/aws/aws-sdk-go/service/ec2/ec2iface"
     9  )
    10  
    11  func testAccessConfig() *AccessConfig {
    12  	return &AccessConfig{
    13  		getEC2Connection: func() ec2iface.EC2API {
    14  			return &mockEC2Client{}
    15  		},
    16  	}
    17  }
    18  
    19  func TestAccessConfigPrepare_Region(t *testing.T) {
    20  	c := testAccessConfig()
    21  
    22  	c.RawRegion = "us-east-12"
    23  	err := c.ValidateRegion(c.RawRegion)
    24  	if err == nil {
    25  		t.Fatalf("should have region validation err: %s", c.RawRegion)
    26  	}
    27  
    28  	c.RawRegion = "us-east-1"
    29  	err = c.ValidateRegion(c.RawRegion)
    30  	if err != nil {
    31  		t.Fatalf("shouldn't have region validation err: %s", c.RawRegion)
    32  	}
    33  
    34  	c.RawRegion = "custom"
    35  	err = c.ValidateRegion(c.RawRegion)
    36  	if err == nil {
    37  		t.Fatalf("should have region validation err: %s", c.RawRegion)
    38  	}
    39  
    40  	c.RawRegion = "custom"
    41  	c.SkipValidation = true
    42  	// testing whole prepare func here; this is checking that validation is
    43  	// skipped, so we don't need a mock connection
    44  	if err := c.Prepare(nil); err != nil {
    45  		t.Fatalf("shouldn't have err: %s", err)
    46  	}
    47  
    48  	c.SkipValidation = false
    49  	c.RawRegion = ""
    50  	if err := c.Prepare(nil); err != nil {
    51  		t.Fatalf("shouldn't have err: %s", err)
    52  	}
    53  }
    54  
    55  func TestAccessConfigPrepare_RegionRestricted(t *testing.T) {
    56  	c := testAccessConfig()
    57  
    58  	// Create a Session with a custom region
    59  	c.session = session.Must(session.NewSession(&aws.Config{
    60  		Region: aws.String("us-gov-west-1"),
    61  	}))
    62  
    63  	if err := c.Prepare(nil); err != nil {
    64  		t.Fatalf("shouldn't have err: %s", err)
    65  	}
    66  
    67  	if !c.IsGovCloud() {
    68  		t.Fatal("We should be in gov region.")
    69  	}
    70  }