Skip to content

Commit 8ea400b

Browse files
committed
Added tests.
1 parent d0278ec commit 8ea400b

2 files changed

Lines changed: 201 additions & 0 deletions

File tree

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
package aws
2+
3+
import (
4+
"fmt"
5+
"net"
6+
"regexp"
7+
"sort"
8+
"strconv"
9+
"testing"
10+
"time"
11+
12+
"github.com/hashicorp/terraform/helper/resource"
13+
"github.com/hashicorp/terraform/terraform"
14+
)
15+
16+
func TestAccAWSIPRanges(t *testing.T) {
17+
resource.Test(t, resource.TestCase{
18+
PreCheck: func() { testAccPreCheck(t) },
19+
Providers: testAccProviders,
20+
Steps: []resource.TestStep{
21+
resource.TestStep{
22+
Config: testAccAWSIPRangesConfig,
23+
Check: resource.ComposeTestCheckFunc(
24+
testAccAWSIPRanges("data.aws_ip_ranges.some"),
25+
),
26+
},
27+
},
28+
})
29+
}
30+
31+
func testAccAWSIPRanges(n string) resource.TestCheckFunc {
32+
return func(s *terraform.State) error {
33+
34+
r := s.RootModule().Resources[n]
35+
a := r.Primary.Attributes
36+
37+
var (
38+
cidrBlockSize int
39+
createDate time.Time
40+
err error
41+
syncToken int
42+
)
43+
44+
if cidrBlockSize, err = strconv.Atoi(a["cidr_blocks.#"]); err != nil {
45+
return err
46+
}
47+
48+
if cidrBlockSize < 10 {
49+
return fmt.Errorf("cidr_blocks for eu-west-1 seem suspiciously low: %d", cidrBlockSize)
50+
}
51+
52+
if createDate, err = time.Parse("2006-01-02-15-04-05", a["create_date"]); err != nil {
53+
return err
54+
}
55+
56+
if syncToken, err = strconv.Atoi(a["sync_token"]); err != nil {
57+
return err
58+
}
59+
60+
if syncToken != int(createDate.Unix()) {
61+
return fmt.Errorf("sync_token %d does not match create_date %s", syncToken, createDate)
62+
}
63+
64+
var cidrBlocks sort.StringSlice = make([]string, cidrBlockSize)
65+
66+
for i := range make([]string, cidrBlockSize) {
67+
68+
block := a[fmt.Sprintf("cidr_blocks.%d", i)]
69+
70+
if _, _, err := net.ParseCIDR(block); err != nil {
71+
return fmt.Errorf("malformed CIDR block %s: %s", block, err)
72+
}
73+
74+
cidrBlocks[i] = block
75+
76+
}
77+
78+
if !sort.IsSorted(cidrBlocks) {
79+
return fmt.Errorf("unexpected order of cidr_blocks: %s", cidrBlocks)
80+
}
81+
82+
var (
83+
regionMember = regexp.MustCompile(`regions\.\d+`)
84+
regions, services int
85+
serviceMember = regexp.MustCompile(`services\.\d+`)
86+
)
87+
88+
for k, v := range a {
89+
90+
if regionMember.MatchString(k) {
91+
92+
if !(v == "eu-west-1" || v == "EU-central-1") {
93+
return fmt.Errorf("unexpected region %s", v)
94+
}
95+
96+
regions = regions + 1
97+
98+
}
99+
100+
if serviceMember.MatchString(k) {
101+
102+
if v != "EC2" {
103+
return fmt.Errorf("unexpected service %s", v)
104+
}
105+
106+
services = services + 1
107+
}
108+
109+
}
110+
111+
if regions != 2 {
112+
return fmt.Errorf("unexpected number of regions: %d", regions)
113+
}
114+
115+
if services != 1 {
116+
return fmt.Errorf("unexpected number of services: %d", services)
117+
}
118+
119+
return nil
120+
}
121+
}
122+
123+
const testAccAWSIPRangesConfig = `
124+
data "aws_ip_ranges" "some" {
125+
regions = [ "eu-west-1", "EU-central-1" ]
126+
services = [ "EC2" ]
127+
}
128+
`
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package fastly
2+
3+
import (
4+
"fmt"
5+
"net"
6+
"sort"
7+
"strconv"
8+
"testing"
9+
10+
"github.com/hashicorp/terraform/helper/resource"
11+
"github.com/hashicorp/terraform/terraform"
12+
)
13+
14+
func TestAccFastlyIPRanges(t *testing.T) {
15+
resource.Test(t, resource.TestCase{
16+
PreCheck: func() { testAccPreCheck(t) },
17+
Providers: testAccProviders,
18+
Steps: []resource.TestStep{
19+
resource.TestStep{
20+
Config: testAccFastlyIPRangesConfig,
21+
Check: resource.ComposeTestCheckFunc(
22+
testAccFastlyIPRanges("data.fastly_ip_ranges.some"),
23+
),
24+
},
25+
},
26+
})
27+
}
28+
29+
func testAccFastlyIPRanges(n string) resource.TestCheckFunc {
30+
return func(s *terraform.State) error {
31+
32+
r := s.RootModule().Resources[n]
33+
a := r.Primary.Attributes
34+
35+
var (
36+
cidrBlockSize int
37+
err error
38+
)
39+
40+
if cidrBlockSize, err = strconv.Atoi(a["cidr_blocks.#"]); err != nil {
41+
return err
42+
}
43+
44+
if cidrBlockSize < 10 {
45+
return fmt.Errorf("cidr_blocks seem suspiciously low: %d", cidrBlockSize)
46+
}
47+
48+
var cidrBlocks sort.StringSlice = make([]string, cidrBlockSize)
49+
50+
for i := range make([]string, cidrBlockSize) {
51+
52+
block := a[fmt.Sprintf("cidr_blocks.%d", i)]
53+
54+
if _, _, err := net.ParseCIDR(block); err != nil {
55+
return fmt.Errorf("malformed CIDR block %s: %s", block, err)
56+
}
57+
58+
cidrBlocks[i] = block
59+
60+
}
61+
62+
if !sort.IsSorted(cidrBlocks) {
63+
return fmt.Errorf("unexpected order of cidr_blocks: %s", cidrBlocks)
64+
}
65+
66+
return nil
67+
}
68+
}
69+
70+
const testAccFastlyIPRangesConfig = `
71+
data "fastly_ip_ranges" "some" {
72+
}
73+
`

0 commit comments

Comments
 (0)