Skip to content

Commit 00ab5f1

Browse files
committed
refactor(block): extract test checks helpers
1 parent 5215248 commit 00ab5f1

File tree

5 files changed

+134
-128
lines changed

5 files changed

+134
-128
lines changed

internal/services/block/snapshot_data_source_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55

66
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
77
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
8+
"github.com/scaleway/terraform-provider-scaleway/v2/internal/services/block/testfuncs"
89
)
910

1011
func TestAccDataSourceSnapshot_Basic(t *testing.T) {
@@ -14,7 +15,7 @@ func TestAccDataSourceSnapshot_Basic(t *testing.T) {
1415
PreCheck: func() { acctest.PreCheck(t) },
1516
ProviderFactories: tt.ProviderFactories,
1617
CheckDestroy: resource.ComposeTestCheckFunc(
17-
isSnapshotDestroyed(tt),
18+
blocktestfuncs.IsSnapshotDestroyed(tt),
1819
),
1920
Steps: []resource.TestStep{
2021
{
@@ -38,7 +39,7 @@ func TestAccDataSourceSnapshot_Basic(t *testing.T) {
3839
}
3940
`,
4041
Check: resource.ComposeTestCheckFunc(
41-
isSnapshotPresent(tt, "scaleway_block_snapshot.main"),
42+
blocktestfuncs.IsSnapshotPresent(tt, "scaleway_block_snapshot.main"),
4243

4344
resource.TestCheckResourceAttrPair("scaleway_block_snapshot.main", "name", "data.scaleway_block_snapshot.find_by_name", "name"),
4445
resource.TestCheckResourceAttrPair("scaleway_block_snapshot.main", "name", "data.scaleway_block_snapshot.find_by_id", "name"),
Lines changed: 3 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
11
package block_test
22

33
import (
4-
"fmt"
54
"testing"
65

76
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
8-
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
9-
blockSDK "github.com/scaleway/scaleway-sdk-go/api/block/v1alpha1"
107
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
11-
"github.com/scaleway/terraform-provider-scaleway/v2/internal/httperrors"
12-
"github.com/scaleway/terraform-provider-scaleway/v2/internal/services/block"
8+
"github.com/scaleway/terraform-provider-scaleway/v2/internal/services/block/testfuncs"
139
)
1410

1511
func TestAccSnapshot_Basic(t *testing.T) {
@@ -19,7 +15,7 @@ func TestAccSnapshot_Basic(t *testing.T) {
1915
resource.ParallelTest(t, resource.TestCase{
2016
PreCheck: func() { acctest.PreCheck(t) },
2117
ProviderFactories: tt.ProviderFactories,
22-
CheckDestroy: isSnapshotDestroyed(tt),
18+
CheckDestroy: blocktestfuncs.IsSnapshotDestroyed(tt),
2319
Steps: []resource.TestStep{
2420
{
2521
Config: `
@@ -34,65 +30,11 @@ func TestAccSnapshot_Basic(t *testing.T) {
3430
}
3531
`,
3632
Check: resource.ComposeTestCheckFunc(
37-
isSnapshotPresent(tt, "scaleway_block_snapshot.main"),
33+
blocktestfuncs.IsSnapshotPresent(tt, "scaleway_block_snapshot.main"),
3834
acctest.CheckResourceAttrUUID("scaleway_block_snapshot.main", "id"),
3935
resource.TestCheckResourceAttr("scaleway_block_snapshot.main", "name", "test-block-snapshot-basic"),
4036
),
4137
},
4238
},
4339
})
4440
}
45-
46-
func isSnapshotPresent(tt *acctest.TestTools, n string) resource.TestCheckFunc {
47-
return func(state *terraform.State) error {
48-
rs, ok := state.RootModule().Resources[n]
49-
if !ok {
50-
return fmt.Errorf("resource not found: %s", n)
51-
}
52-
53-
api, zone, id, err := block.NewAPIWithZoneAndID(tt.Meta, rs.Primary.ID)
54-
if err != nil {
55-
return err
56-
}
57-
58-
_, err = api.GetSnapshot(&blockSDK.GetSnapshotRequest{
59-
SnapshotID: id,
60-
Zone: zone,
61-
})
62-
if err != nil {
63-
return err
64-
}
65-
66-
return nil
67-
}
68-
}
69-
70-
func isSnapshotDestroyed(tt *acctest.TestTools) resource.TestCheckFunc {
71-
return func(state *terraform.State) error {
72-
for _, rs := range state.RootModule().Resources {
73-
if rs.Type != "scaleway_block_snapshot" {
74-
continue
75-
}
76-
77-
api, zone, id, err := block.NewAPIWithZoneAndID(tt.Meta, rs.Primary.ID)
78-
if err != nil {
79-
return err
80-
}
81-
82-
err = api.DeleteSnapshot(&blockSDK.DeleteSnapshotRequest{
83-
SnapshotID: id,
84-
Zone: zone,
85-
})
86-
87-
if err == nil {
88-
return fmt.Errorf("block snapshot (%s) still exists", rs.Primary.ID)
89-
}
90-
91-
if !httperrors.Is404(err) {
92-
return err
93-
}
94-
}
95-
96-
return nil
97-
}
98-
}
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
package blocktestfuncs
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
8+
blockSDK "github.com/scaleway/scaleway-sdk-go/api/block/v1alpha1"
9+
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
10+
"github.com/scaleway/terraform-provider-scaleway/v2/internal/httperrors"
11+
"github.com/scaleway/terraform-provider-scaleway/v2/internal/services/block"
12+
)
13+
14+
func IsSnapshotPresent(tt *acctest.TestTools, n string) resource.TestCheckFunc {
15+
return func(state *terraform.State) error {
16+
rs, ok := state.RootModule().Resources[n]
17+
if !ok {
18+
return fmt.Errorf("resource not found: %s", n)
19+
}
20+
21+
api, zone, id, err := block.NewAPIWithZoneAndID(tt.Meta, rs.Primary.ID)
22+
if err != nil {
23+
return err
24+
}
25+
26+
_, err = api.GetSnapshot(&blockSDK.GetSnapshotRequest{
27+
SnapshotID: id,
28+
Zone: zone,
29+
})
30+
if err != nil {
31+
return err
32+
}
33+
34+
return nil
35+
}
36+
}
37+
38+
func IsVolumePresent(tt *acctest.TestTools, n string) resource.TestCheckFunc {
39+
return func(state *terraform.State) error {
40+
rs, ok := state.RootModule().Resources[n]
41+
if !ok {
42+
return fmt.Errorf("resource not found: %s", n)
43+
}
44+
45+
api, zone, id, err := block.NewAPIWithZoneAndID(tt.Meta, rs.Primary.ID)
46+
if err != nil {
47+
return err
48+
}
49+
50+
_, err = api.GetVolume(&blockSDK.GetVolumeRequest{
51+
VolumeID: id,
52+
Zone: zone,
53+
})
54+
if err != nil {
55+
return err
56+
}
57+
58+
return nil
59+
}
60+
}
61+
62+
func IsVolumeDestroyed(tt *acctest.TestTools) resource.TestCheckFunc {
63+
return func(state *terraform.State) error {
64+
for _, rs := range state.RootModule().Resources {
65+
if rs.Type != "scaleway_block_volume" {
66+
continue
67+
}
68+
69+
api, zone, id, err := block.NewAPIWithZoneAndID(tt.Meta, rs.Primary.ID)
70+
if err != nil {
71+
return err
72+
}
73+
74+
err = api.DeleteVolume(&blockSDK.DeleteVolumeRequest{
75+
VolumeID: id,
76+
Zone: zone,
77+
})
78+
79+
if err == nil {
80+
return fmt.Errorf("block volume (%s) still exists", rs.Primary.ID)
81+
}
82+
83+
if !httperrors.Is404(err) && !httperrors.Is410(err) {
84+
return err
85+
}
86+
}
87+
88+
return nil
89+
}
90+
}
91+
92+
func IsSnapshotDestroyed(tt *acctest.TestTools) resource.TestCheckFunc {
93+
return func(state *terraform.State) error {
94+
for _, rs := range state.RootModule().Resources {
95+
if rs.Type != "scaleway_block_snapshot" {
96+
continue
97+
}
98+
99+
api, zone, id, err := block.NewAPIWithZoneAndID(tt.Meta, rs.Primary.ID)
100+
if err != nil {
101+
return err
102+
}
103+
104+
err = api.DeleteSnapshot(&blockSDK.DeleteSnapshotRequest{
105+
SnapshotID: id,
106+
Zone: zone,
107+
})
108+
109+
if err == nil {
110+
return fmt.Errorf("block snapshot (%s) still exists", rs.Primary.ID)
111+
}
112+
113+
if !httperrors.Is404(err) {
114+
return err
115+
}
116+
}
117+
118+
return nil
119+
}
120+
}

internal/services/block/volume_data_source_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55

66
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
77
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
8+
"github.com/scaleway/terraform-provider-scaleway/v2/internal/services/block/testfuncs"
89
)
910

1011
func TestAccDataSourceVolume_Basic(t *testing.T) {
@@ -14,7 +15,7 @@ func TestAccDataSourceVolume_Basic(t *testing.T) {
1415
PreCheck: func() { acctest.PreCheck(t) },
1516
ProviderFactories: tt.ProviderFactories,
1617
CheckDestroy: resource.ComposeTestCheckFunc(
17-
isVolumeDestroyed(tt),
18+
blocktestfuncs.IsVolumeDestroyed(tt),
1819
),
1920
Steps: []resource.TestStep{
2021
{
@@ -34,7 +35,7 @@ func TestAccDataSourceVolume_Basic(t *testing.T) {
3435
}
3536
`,
3637
Check: resource.ComposeTestCheckFunc(
37-
isVolumePresent(tt, "scaleway_block_volume.main"),
38+
blocktestfuncs.IsVolumePresent(tt, "scaleway_block_volume.main"),
3839

3940
resource.TestCheckResourceAttrPair("scaleway_block_volume.main", "name", "data.scaleway_block_volume.find_by_name", "name"),
4041
resource.TestCheckResourceAttrPair("scaleway_block_volume.main", "name", "data.scaleway_block_volume.find_by_id", "name"),
Lines changed: 5 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
11
package block_test
22

33
import (
4-
"fmt"
54
"testing"
65

76
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
8-
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
9-
blockSDK "github.com/scaleway/scaleway-sdk-go/api/block/v1alpha1"
107
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
11-
"github.com/scaleway/terraform-provider-scaleway/v2/internal/httperrors"
12-
"github.com/scaleway/terraform-provider-scaleway/v2/internal/services/block"
8+
"github.com/scaleway/terraform-provider-scaleway/v2/internal/services/block/testfuncs"
139
)
1410

1511
func TestAccVolume_Basic(t *testing.T) {
@@ -19,7 +15,7 @@ func TestAccVolume_Basic(t *testing.T) {
1915
resource.ParallelTest(t, resource.TestCase{
2016
PreCheck: func() { acctest.PreCheck(t) },
2117
ProviderFactories: tt.ProviderFactories,
22-
CheckDestroy: isVolumeDestroyed(tt),
18+
CheckDestroy: blocktestfuncs.IsVolumeDestroyed(tt),
2319
Steps: []resource.TestStep{
2420
{
2521
Config: `
@@ -30,7 +26,7 @@ func TestAccVolume_Basic(t *testing.T) {
3026
}
3127
`,
3228
Check: resource.ComposeTestCheckFunc(
33-
isVolumePresent(tt, "scaleway_block_volume.main"),
29+
blocktestfuncs.IsVolumePresent(tt, "scaleway_block_volume.main"),
3430
acctest.CheckResourceAttrUUID("scaleway_block_volume.main", "id"),
3531
resource.TestCheckResourceAttr("scaleway_block_volume.main", "name", "test-block-volume-basic"),
3632
resource.TestCheckResourceAttr("scaleway_block_volume.main", "size_in_gb", "20"),
@@ -47,7 +43,7 @@ func TestAccVolume_FromSnapshot(t *testing.T) {
4743
resource.ParallelTest(t, resource.TestCase{
4844
PreCheck: func() { acctest.PreCheck(t) },
4945
ProviderFactories: tt.ProviderFactories,
50-
CheckDestroy: isVolumeDestroyed(tt),
46+
CheckDestroy: blocktestfuncs.IsVolumeDestroyed(tt),
5147
Steps: []resource.TestStep{
5248
{
5349
Config: `
@@ -69,7 +65,7 @@ func TestAccVolume_FromSnapshot(t *testing.T) {
6965
}
7066
`,
7167
Check: resource.ComposeTestCheckFunc(
72-
isVolumePresent(tt, "scaleway_block_volume.main"),
68+
blocktestfuncs.IsVolumePresent(tt, "scaleway_block_volume.main"),
7369
acctest.CheckResourceAttrUUID("scaleway_block_volume.main", "id"),
7470
resource.TestCheckResourceAttrPair("scaleway_block_volume.main", "snapshot_id", "scaleway_block_snapshot.main", "id"),
7571
resource.TestCheckResourceAttrPair("scaleway_block_volume.main", "size_in_gb", "scaleway_block_volume.base", "size_in_gb"),
@@ -78,57 +74,3 @@ func TestAccVolume_FromSnapshot(t *testing.T) {
7874
},
7975
})
8076
}
81-
82-
func isVolumePresent(tt *acctest.TestTools, n string) resource.TestCheckFunc {
83-
return func(state *terraform.State) error {
84-
rs, ok := state.RootModule().Resources[n]
85-
if !ok {
86-
return fmt.Errorf("resource not found: %s", n)
87-
}
88-
89-
api, zone, id, err := block.NewAPIWithZoneAndID(tt.Meta, rs.Primary.ID)
90-
if err != nil {
91-
return err
92-
}
93-
94-
_, err = api.GetVolume(&blockSDK.GetVolumeRequest{
95-
VolumeID: id,
96-
Zone: zone,
97-
})
98-
if err != nil {
99-
return err
100-
}
101-
102-
return nil
103-
}
104-
}
105-
106-
func isVolumeDestroyed(tt *acctest.TestTools) resource.TestCheckFunc {
107-
return func(state *terraform.State) error {
108-
for _, rs := range state.RootModule().Resources {
109-
if rs.Type != "scaleway_block_volume" {
110-
continue
111-
}
112-
113-
api, zone, id, err := block.NewAPIWithZoneAndID(tt.Meta, rs.Primary.ID)
114-
if err != nil {
115-
return err
116-
}
117-
118-
err = api.DeleteVolume(&blockSDK.DeleteVolumeRequest{
119-
VolumeID: id,
120-
Zone: zone,
121-
})
122-
123-
if err == nil {
124-
return fmt.Errorf("block volume (%s) still exists", rs.Primary.ID)
125-
}
126-
127-
if !httperrors.Is404(err) && !httperrors.Is410(err) {
128-
return err
129-
}
130-
}
131-
132-
return nil
133-
}
134-
}

0 commit comments

Comments
 (0)