74 lines
1.5 KiB
Go
74 lines
1.5 KiB
Go
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" {
|
|
}
|
|
`
|