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 }