Skip to content

Commit 0209b56

Browse files
authored
chore(lb): add support for cassettes based acceptance tests (#642)
1 parent 5f2db7d commit 0209b56

16 files changed

+6795
-176
lines changed

scaleway/data_source_lb_ip_beta_test.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ import (
77
)
88

99
func TestAccScalewayDataSourceLbIPBeta_Basic(t *testing.T) {
10+
tt := NewTestTools(t)
11+
defer tt.Cleanup()
1012
resource.ParallelTest(t, resource.TestCase{
11-
PreCheck: func() { testAccPreCheck(t) },
12-
Providers: testAccProviders,
13-
CheckDestroy: testAccCheckScalewayLbIPBetaDestroy,
13+
PreCheck: func() { testAccPreCheck(t) },
14+
ProviderFactories: tt.ProviderFactories,
15+
CheckDestroy: testAccCheckScalewayLbIPBetaDestroy(tt),
1416
Steps: []resource.TestStep{
1517
{
1618
Config: `
@@ -26,7 +28,7 @@ func TestAccScalewayDataSourceLbIPBeta_Basic(t *testing.T) {
2628
}
2729
`,
2830
Check: resource.ComposeTestCheckFunc(
29-
testAccCheckScalewayLbIPBetaExists("data.scaleway_lb_ip_beta.test"),
31+
testAccCheckScalewayLbIPBetaExists(tt, "data.scaleway_lb_ip_beta.test"),
3032
resource.TestCheckResourceAttrPair("data.scaleway_lb_ip_beta.test", "ip_address", "scaleway_lb_ip_beta.test", "ip_address"),
3133
resource.TestCheckResourceAttrPair("data.scaleway_lb_ip_beta.test2", "ip_address", "scaleway_lb_ip_beta.test", "ip_address"),
3234
),

scaleway/helpers_lb.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,13 @@ func expandLbACL(i interface{}) *lb.ACL {
7171
return acl
7272
}
7373
func flattenLbACLAction(action *lb.ACLAction) interface{} {
74-
return map[string]interface{}{
75-
"type": action.Type,
74+
return []map[string]interface{}{
75+
{
76+
"type": action.Type,
77+
},
7678
}
7779
}
80+
7881
func expandLbACLAction(raw interface{}) *lb.ACLAction {
7982
if raw == nil || len(raw.([]interface{})) != 1 {
8083
return nil
@@ -85,13 +88,16 @@ func expandLbACLAction(raw interface{}) *lb.ACLAction {
8588
}
8689
}
8790
func flattenLbACLMatch(match *lb.ACLMatch) interface{} {
88-
return map[string]interface{}{
89-
"ip_subnet": flattenSliceStringPtr(match.IPSubnet),
90-
"http_filter": match.HTTPFilter.String(),
91-
"http_filter_value": flattenSliceStringPtr(match.HTTPFilterValue),
92-
"invert": match.Invert,
91+
return []map[string]interface{}{
92+
{
93+
"ip_subnet": flattenSliceStringPtr(match.IPSubnet),
94+
"http_filter": match.HTTPFilter.String(),
95+
"http_filter_value": flattenSliceStringPtr(match.HTTPFilterValue),
96+
"invert": match.Invert,
97+
},
9398
}
9499
}
100+
95101
func expandLbACLMatch(raw interface{}) *lb.ACLMatch {
96102
if raw == nil || len(raw.([]interface{})) != 1 {
97103
return nil

scaleway/resource_lb_backend_beta_test.go

Lines changed: 45 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@ import (
99
"github.com/scaleway/scaleway-sdk-go/api/lb/v1"
1010
)
1111

12-
func TestAccScalewayLbBackendBeta(t *testing.T) {
12+
func TestAccScalewayLbBackend_Basic(t *testing.T) {
13+
tt := NewTestTools(t)
14+
defer tt.Cleanup()
1315
resource.ParallelTest(t, resource.TestCase{
14-
PreCheck: func() { testAccPreCheck(t) },
15-
Providers: testAccProviders,
16-
CheckDestroy: testAccCheckScalewayLbBackendBetaDestroy,
16+
PreCheck: func() { testAccPreCheck(t) },
17+
ProviderFactories: tt.ProviderFactories,
18+
CheckDestroy: testAccCheckScalewayLbBackendBetaDestroy(tt),
1719
Steps: []resource.TestStep{
1820
{
1921
Config: `
@@ -32,11 +34,12 @@ func TestAccScalewayLbBackendBeta(t *testing.T) {
3234
name = "bkd01"
3335
forward_protocol = "tcp"
3436
forward_port = 80
37+
proxy_protocol = "none"
3538
server_ips = [ scaleway_instance_ip.ip01.address ]
3639
}
3740
`,
3841
Check: resource.ComposeTestCheckFunc(
39-
testAccCheckScalewayLbBackendBetaExists("scaleway_lb_backend_beta.bkd01"),
42+
testAccCheckScalewayLbBackendBetaExists(tt, "scaleway_lb_backend_beta.bkd01"),
4043
resource.TestCheckResourceAttr("scaleway_lb_backend_beta.bkd01", "forward_port_algorithm", "roundrobin"),
4144
resource.TestCheckResourceAttr("scaleway_lb_backend_beta.bkd01", "sticky_sessions", "none"),
4245
resource.TestCheckResourceAttr("scaleway_lb_backend_beta.bkd01", "proxy_protocol", "none"),
@@ -82,7 +85,7 @@ func TestAccScalewayLbBackendBeta(t *testing.T) {
8285
}
8386
`,
8487
Check: resource.ComposeTestCheckFunc(
85-
testAccCheckScalewayLbBackendBetaExists("scaleway_lb_backend_beta.bkd01"),
88+
testAccCheckScalewayLbBackendBetaExists(tt, "scaleway_lb_backend_beta.bkd01"),
8689
resource.TestCheckResourceAttrPair("scaleway_lb_backend_beta.bkd01", "server_ips.0", "scaleway_instance_ip.ip02", "address"),
8790
resource.TestCheckResourceAttr("scaleway_lb_backend_beta.bkd01", "health_check_delay", "10s"),
8891
resource.TestCheckResourceAttr("scaleway_lb_backend_beta.bkd01", "health_check_timeout", "15s"),
@@ -96,10 +99,12 @@ func TestAccScalewayLbBackendBeta(t *testing.T) {
9699
}
97100

98101
func TestAccScalewayLbBackendBeta_HealthCheck(t *testing.T) {
102+
tt := NewTestTools(t)
103+
defer tt.Cleanup()
99104
resource.ParallelTest(t, resource.TestCase{
100-
PreCheck: func() { testAccPreCheck(t) },
101-
Providers: testAccProviders,
102-
CheckDestroy: testAccCheckScalewayLbBackendBetaDestroy,
105+
PreCheck: func() { testAccPreCheck(t) },
106+
ProviderFactories: tt.ProviderFactories,
107+
CheckDestroy: testAccCheckScalewayLbBackendBetaDestroy(tt),
103108
Steps: []resource.TestStep{
104109
{
105110
Config: `
@@ -183,14 +188,14 @@ func TestAccScalewayLbBackendBeta_HealthCheck(t *testing.T) {
183188
})
184189
}
185190

186-
func testAccCheckScalewayLbBackendBetaExists(n string) resource.TestCheckFunc {
187-
return func(s *terraform.State) error {
188-
rs, ok := s.RootModule().Resources[n]
191+
func testAccCheckScalewayLbBackendBetaExists(tt *TestTools, n string) resource.TestCheckFunc {
192+
return func(state *terraform.State) error {
193+
rs, ok := state.RootModule().Resources[n]
189194
if !ok {
190195
return fmt.Errorf("resource not found: %s", n)
191196
}
192197

193-
lbAPI, region, ID, err := lbAPIWithRegionAndID(testAccProvider.Meta(), rs.Primary.ID)
198+
lbAPI, region, ID, err := lbAPIWithRegionAndID(tt.Meta, rs.Primary.ID)
194199
if err != nil {
195200
return err
196201
}
@@ -207,32 +212,34 @@ func testAccCheckScalewayLbBackendBetaExists(n string) resource.TestCheckFunc {
207212
}
208213
}
209214

210-
func testAccCheckScalewayLbBackendBetaDestroy(s *terraform.State) error {
211-
for _, rs := range s.RootModule().Resources {
212-
if rs.Type != "scaleway_lb_backend_beta" {
213-
continue
214-
}
215-
216-
lbAPI, region, ID, err := lbAPIWithRegionAndID(testAccProvider.Meta(), rs.Primary.ID)
217-
if err != nil {
218-
return err
219-
}
220-
221-
_, err = lbAPI.GetBackend(&lb.GetBackendRequest{
222-
Region: region,
223-
BackendID: ID,
224-
})
225-
226-
// If no error resource still exist
227-
if err == nil {
228-
return fmt.Errorf("LB Backend (%s) still exists", rs.Primary.ID)
215+
func testAccCheckScalewayLbBackendBetaDestroy(tt *TestTools) resource.TestCheckFunc {
216+
return func(state *terraform.State) error {
217+
for _, rs := range state.RootModule().Resources {
218+
if rs.Type != "scaleway_lb_backend_beta" {
219+
continue
220+
}
221+
222+
lbAPI, region, ID, err := lbAPIWithRegionAndID(tt.Meta, rs.Primary.ID)
223+
if err != nil {
224+
return err
225+
}
226+
227+
_, err = lbAPI.GetBackend(&lb.GetBackendRequest{
228+
Region: region,
229+
BackendID: ID,
230+
})
231+
232+
// If no error resource still exist
233+
if err == nil {
234+
return fmt.Errorf("LB Backend (%s) still exists", rs.Primary.ID)
235+
}
236+
237+
// Unexpected api error we return it
238+
if !is404Error(err) {
239+
return err
240+
}
229241
}
230242

231-
// Unexpected api error we return it
232-
if !is404Error(err) {
233-
return err
234-
}
243+
return nil
235244
}
236-
237-
return nil
238245
}

scaleway/resource_lb_beta_test.go

Lines changed: 38 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,13 @@ func testSweepLB(region string) error {
4343
return nil
4444
}
4545

46-
func TestAccScalewayLbAndIPBeta(t *testing.T) {
46+
func TestAccScalewayLbLb_WithIP(t *testing.T) {
47+
tt := NewTestTools(t)
48+
defer tt.Cleanup()
4749
resource.ParallelTest(t, resource.TestCase{
48-
PreCheck: func() { testAccPreCheck(t) },
49-
Providers: testAccProviders,
50-
CheckDestroy: testAccCheckScalewayLbBetaDestroy,
50+
PreCheck: func() { testAccPreCheck(t) },
51+
ProviderFactories: tt.ProviderFactories,
52+
CheckDestroy: testAccCheckScalewayLbBetaDestroy(tt),
5153
Steps: []resource.TestStep{
5254
{
5355
Config: `
@@ -61,8 +63,8 @@ func TestAccScalewayLbAndIPBeta(t *testing.T) {
6163
}
6264
`,
6365
Check: resource.ComposeTestCheckFunc(
64-
testAccCheckScalewayLbBetaExists("scaleway_lb_beta.lb01"),
65-
testAccCheckScalewayLbIPBetaExists("scaleway_lb_ip_beta.ip01"),
66+
testAccCheckScalewayLbBetaExists(tt, "scaleway_lb_beta.lb01"),
67+
testAccCheckScalewayLbIPBetaExists(tt, "scaleway_lb_ip_beta.ip01"),
6668
resource.TestCheckResourceAttr("scaleway_lb_beta.lb01", "name", "test-lb"),
6769
testCheckResourceAttrUUID("scaleway_lb_beta.lb01", "ip_id"),
6870
testCheckResourceAttrIPv4("scaleway_lb_beta.lb01", "ip_address"),
@@ -75,21 +77,21 @@ func TestAccScalewayLbAndIPBeta(t *testing.T) {
7577
}
7678
`,
7779
Check: resource.ComposeTestCheckFunc(
78-
testAccCheckScalewayLbIPBetaExists("scaleway_lb_ip_beta.ip01"),
80+
testAccCheckScalewayLbIPBetaExists(tt, "scaleway_lb_ip_beta.ip01"),
7981
),
8082
},
8183
},
8284
})
8385
}
8486

85-
func testAccCheckScalewayLbBetaExists(n string) resource.TestCheckFunc {
87+
func testAccCheckScalewayLbBetaExists(tt *TestTools, n string) resource.TestCheckFunc {
8688
return func(s *terraform.State) error {
8789
rs, ok := s.RootModule().Resources[n]
8890
if !ok {
8991
return fmt.Errorf("resource not found: %s", n)
9092
}
9193

92-
lbAPI, region, ID, err := lbAPIWithRegionAndID(testAccProvider.Meta(), rs.Primary.ID)
94+
lbAPI, region, ID, err := lbAPIWithRegionAndID(tt.Meta, rs.Primary.ID)
9395
if err != nil {
9496
return err
9597
}
@@ -107,32 +109,34 @@ func testAccCheckScalewayLbBetaExists(n string) resource.TestCheckFunc {
107109
}
108110
}
109111

110-
func testAccCheckScalewayLbBetaDestroy(s *terraform.State) error {
111-
for _, rs := range s.RootModule().Resources {
112-
if rs.Type != "scaleway_lb_beta" {
113-
continue
112+
func testAccCheckScalewayLbBetaDestroy(tt *TestTools) resource.TestCheckFunc {
113+
return func(state *terraform.State) error {
114+
for _, rs := range state.RootModule().Resources {
115+
if rs.Type != "scaleway_lb_beta" {
116+
continue
117+
}
118+
119+
lbAPI, region, ID, err := lbAPIWithRegionAndID(tt.Meta, rs.Primary.ID)
120+
if err != nil {
121+
return err
122+
}
123+
124+
_, err = lbAPI.GetLB(&lb.GetLBRequest{
125+
Region: region,
126+
LBID: ID,
127+
})
128+
129+
// If no error resource still exist
130+
if err == nil {
131+
return fmt.Errorf("load Balancer (%s) still exists", rs.Primary.ID)
132+
}
133+
134+
// Unexpected api error we return it
135+
if !is404Error(err) {
136+
return err
137+
}
114138
}
115139

116-
lbAPI, region, ID, err := lbAPIWithRegionAndID(testAccProvider.Meta(), rs.Primary.ID)
117-
if err != nil {
118-
return err
119-
}
120-
121-
_, err = lbAPI.GetLB(&lb.GetLBRequest{
122-
Region: region,
123-
LBID: ID,
124-
})
125-
126-
// If no error resource still exist
127-
if err == nil {
128-
return fmt.Errorf("Load Balancer (%s) still exists", rs.Primary.ID)
129-
}
130-
131-
// Unexpected api error we return it
132-
if !is404Error(err) {
133-
return err
134-
}
140+
return nil
135141
}
136-
137-
return nil
138142
}

scaleway/resource_lb_certificate_beta.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,13 @@ func resourceScalewayLbCertificateBeta() *schema.Resource {
8080
Description: "The main domain name of the certificate",
8181
},
8282
"subject_alternative_name": {
83-
Type: schema.TypeString,
83+
Type: schema.TypeList,
8484
Computed: true,
8585
Description: "The alternative domain names of the certificate",
86+
Elem: &schema.Schema{
87+
Type: schema.TypeString,
88+
Description: "The domain name",
89+
},
8690
},
8791
"fingerprint": {
8892
Type: schema.TypeString,

scaleway/resource_lb_certificate_beta_test.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,20 @@ import (
66
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
77
)
88

9-
func TestAccScalewayLbCertificateBeta(t *testing.T) {
9+
func TestAccScalewayLbCertificate_Basic(t *testing.T) {
1010
/**
1111
* Note regarding the usage of xip.io
1212
* See the discussion on https://github.com/terraform-providers/terraform-provider-scaleway/pull/396
1313
* Long story short, scaleway API will not permit you to request a certificate in case common name is not pointed
1414
* to the load balancer IP (which is unknown before creating it). In production, this can be overcome by introducing
1515
* an additional step which creates a DNS record and depending on it, but for test purposes, xip.io is an ideal solution.
1616
*/
17+
tt := NewTestTools(t)
18+
defer tt.Cleanup()
1719
resource.ParallelTest(t, resource.TestCase{
18-
PreCheck: func() { testAccPreCheck(t) },
19-
Providers: testAccProviders,
20-
CheckDestroy: testAccCheckScalewayLbBetaDestroy,
20+
PreCheck: func() { testAccPreCheck(t) },
21+
ProviderFactories: tt.ProviderFactories,
22+
CheckDestroy: testAccCheckScalewayLbBetaDestroy(tt),
2123
Steps: []resource.TestStep{
2224
{
2325
Config: `

0 commit comments

Comments
 (0)