Added tests.
This commit is contained in:
parent
d0278ecf0f
commit
8ea400b442
|
@ -0,0 +1,128 @@
|
|||
package aws
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"regexp"
|
||||
"sort"
|
||||
"strconv"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/hashicorp/terraform/helper/resource"
|
||||
"github.com/hashicorp/terraform/terraform"
|
||||
)
|
||||
|
||||
func TestAccAWSIPRanges(t *testing.T) {
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
Providers: testAccProviders,
|
||||
Steps: []resource.TestStep{
|
||||
resource.TestStep{
|
||||
Config: testAccAWSIPRangesConfig,
|
||||
Check: resource.ComposeTestCheckFunc(
|
||||
testAccAWSIPRanges("data.aws_ip_ranges.some"),
|
||||
),
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func testAccAWSIPRanges(n string) resource.TestCheckFunc {
|
||||
return func(s *terraform.State) error {
|
||||
|
||||
r := s.RootModule().Resources[n]
|
||||
a := r.Primary.Attributes
|
||||
|
||||
var (
|
||||
cidrBlockSize int
|
||||
createDate time.Time
|
||||
err error
|
||||
syncToken int
|
||||
)
|
||||
|
||||
if cidrBlockSize, err = strconv.Atoi(a["cidr_blocks.#"]); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if cidrBlockSize < 10 {
|
||||
return fmt.Errorf("cidr_blocks for eu-west-1 seem suspiciously low: %d", cidrBlockSize)
|
||||
}
|
||||
|
||||
if createDate, err = time.Parse("2006-01-02-15-04-05", a["create_date"]); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if syncToken, err = strconv.Atoi(a["sync_token"]); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if syncToken != int(createDate.Unix()) {
|
||||
return fmt.Errorf("sync_token %d does not match create_date %s", syncToken, createDate)
|
||||
}
|
||||
|
||||
var cidrBlocks sort.StringSlice = make([]string, cidrBlockSize)
|
||||
|
||||
for i := range make([]string, cidrBlockSize) {
|
||||
|
||||
block := a[fmt.Sprintf("cidr_blocks.%d", i)]
|
||||
|
||||
if _, _, err := net.ParseCIDR(block); err != nil {
|
||||
return fmt.Errorf("malformed CIDR block %s: %s", block, err)
|
||||
}
|
||||
|
||||
cidrBlocks[i] = block
|
||||
|
||||
}
|
||||
|
||||
if !sort.IsSorted(cidrBlocks) {
|
||||
return fmt.Errorf("unexpected order of cidr_blocks: %s", cidrBlocks)
|
||||
}
|
||||
|
||||
var (
|
||||
regionMember = regexp.MustCompile(`regions\.\d+`)
|
||||
regions, services int
|
||||
serviceMember = regexp.MustCompile(`services\.\d+`)
|
||||
)
|
||||
|
||||
for k, v := range a {
|
||||
|
||||
if regionMember.MatchString(k) {
|
||||
|
||||
if !(v == "eu-west-1" || v == "EU-central-1") {
|
||||
return fmt.Errorf("unexpected region %s", v)
|
||||
}
|
||||
|
||||
regions = regions + 1
|
||||
|
||||
}
|
||||
|
||||
if serviceMember.MatchString(k) {
|
||||
|
||||
if v != "EC2" {
|
||||
return fmt.Errorf("unexpected service %s", v)
|
||||
}
|
||||
|
||||
services = services + 1
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if regions != 2 {
|
||||
return fmt.Errorf("unexpected number of regions: %d", regions)
|
||||
}
|
||||
|
||||
if services != 1 {
|
||||
return fmt.Errorf("unexpected number of services: %d", services)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
const testAccAWSIPRangesConfig = `
|
||||
data "aws_ip_ranges" "some" {
|
||||
regions = [ "eu-west-1", "EU-central-1" ]
|
||||
services = [ "EC2" ]
|
||||
}
|
||||
`
|
|
@ -0,0 +1,73 @@
|
|||
package fastly
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"sort"
|
||||
"strconv"
|
||||
"testing"
|
||||
|
||||
"github.com/hashicorp/terraform/helper/resource"
|
||||
"github.com/hashicorp/terraform/terraform"
|
||||
)
|
||||
|
||||
func TestAccFastlyIPRanges(t *testing.T) {
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
Providers: testAccProviders,
|
||||
Steps: []resource.TestStep{
|
||||
resource.TestStep{
|
||||
Config: testAccFastlyIPRangesConfig,
|
||||
Check: resource.ComposeTestCheckFunc(
|
||||
testAccFastlyIPRanges("data.fastly_ip_ranges.some"),
|
||||
),
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func testAccFastlyIPRanges(n string) resource.TestCheckFunc {
|
||||
return func(s *terraform.State) error {
|
||||
|
||||
r := s.RootModule().Resources[n]
|
||||
a := r.Primary.Attributes
|
||||
|
||||
var (
|
||||
cidrBlockSize int
|
||||
err error
|
||||
)
|
||||
|
||||
if cidrBlockSize, err = strconv.Atoi(a["cidr_blocks.#"]); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if cidrBlockSize < 10 {
|
||||
return fmt.Errorf("cidr_blocks seem suspiciously low: %d", cidrBlockSize)
|
||||
}
|
||||
|
||||
var cidrBlocks sort.StringSlice = make([]string, cidrBlockSize)
|
||||
|
||||
for i := range make([]string, cidrBlockSize) {
|
||||
|
||||
block := a[fmt.Sprintf("cidr_blocks.%d", i)]
|
||||
|
||||
if _, _, err := net.ParseCIDR(block); err != nil {
|
||||
return fmt.Errorf("malformed CIDR block %s: %s", block, err)
|
||||
}
|
||||
|
||||
cidrBlocks[i] = block
|
||||
|
||||
}
|
||||
|
||||
if !sort.IsSorted(cidrBlocks) {
|
||||
return fmt.Errorf("unexpected order of cidr_blocks: %s", cidrBlocks)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
const testAccFastlyIPRangesConfig = `
|
||||
data "fastly_ip_ranges" "some" {
|
||||
}
|
||||
`
|
Loading…
Reference in New Issue