Skip to content

Commit cb2755a

Browse files
authored
Merge pull request #113 from yanndegat/fix/tests/network
r/cloud_network_private/subnet: fix acctest & rework
2 parents ae571fc + 906e626 commit cb2755a

2 files changed

+97
-110
lines changed

ovh/resource_ovh_publiccloud_private_network_subnet_test.go

+50-63
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,34 @@ import (
66
"testing"
77

88
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
9-
"github.com/hashicorp/terraform-plugin-sdk/terraform"
109
)
1110

12-
var testAccPublicCloudPrivateNetworkSubnetConfig = fmt.Sprintf(`
11+
var testAccPublicCloudPrivateNetworkSubnetConfig_attachVrack = `
1312
resource "ovh_vrack_cloudproject" "attach" {
1413
vrack_id = "%s"
1514
project_id = "%s"
1615
}
1716
1817
data "ovh_cloud_regions" "regions" {
1918
project_id = ovh_vrack_cloudproject.attach.project_id
19+
20+
has_services_up = ["network"]
2021
}
22+
`
23+
24+
var testAccPublicCloudPrivateNetworkSubnetConfig_noAttachVrack = `
25+
data "ovh_cloud_regions" "regions" {
26+
project_id = "%s"
27+
28+
has_services_up = ["network"]
29+
}
30+
`
31+
32+
var testAccPublicCloudPrivateNetworkSubnetConfig_basic = `
33+
%s
2134
2235
resource "ovh_cloud_network_private" "network" {
23-
project_id = ovh_vrack_cloudproject.attach.project_id
36+
project_id = data.ovh_cloud_regions.regions.project_id
2437
vlan_id = 0
2538
name = "terraform_testacc_private_net"
2639
regions = tolist(data.ovh_cloud_regions.regions.names)
@@ -38,20 +51,45 @@ resource "ovh_cloud_network_private_subnet" "subnet" {
3851
dhcp = true
3952
no_gateway = false
4053
}
41-
`, os.Getenv("OVH_VRACK"), os.Getenv("OVH_PUBLIC_CLOUD"))
54+
`
55+
56+
func testAccPublicCloudPrivateNetworkSubnetConfig() string {
57+
attachVrack := fmt.Sprintf(
58+
testAccPublicCloudPrivateNetworkSubnetConfig_attachVrack,
59+
os.Getenv("OVH_VRACK"),
60+
os.Getenv("OVH_PUBLIC_CLOUD"),
61+
)
62+
noAttachVrack := fmt.Sprintf(
63+
testAccPublicCloudPrivateNetworkSubnetConfig_noAttachVrack,
64+
os.Getenv("OVH_PUBLIC_CLOUD"),
65+
)
66+
67+
if os.Getenv("OVH_ATTACH_VRACK") == "0" {
68+
return fmt.Sprintf(
69+
testAccPublicCloudPrivateNetworkSubnetConfig_basic,
70+
noAttachVrack,
71+
)
72+
}
73+
74+
return fmt.Sprintf(
75+
testAccPublicCloudPrivateNetworkSubnetConfig_basic,
76+
attachVrack,
77+
)
78+
}
4279

4380
func TestAccPublicCloudPrivateNetworkSubnet_basic(t *testing.T) {
4481
resource.Test(t, resource.TestCase{
45-
PreCheck: func() { testAccCheckPublicCloudPrivateNetworkSubnetPreCheck(t) },
46-
Providers: testAccProviders,
47-
CheckDestroy: testAccCheckPublicCloudPrivateNetworkSubnetDestroy,
82+
PreCheck: func() { testAccCheckPublicCloudPrivateNetworkSubnetPreCheck(t) },
83+
Providers: testAccProviders,
4884
Steps: []resource.TestStep{
4985
{
50-
Config: testAccPublicCloudPrivateNetworkSubnetConfig,
86+
Config: testAccPublicCloudPrivateNetworkSubnetConfig(),
5187
Check: resource.ComposeTestCheckFunc(
52-
testAccCheckVRackPublicCloudAttachmentExists("ovh_vrack_cloudproject.attach", t),
53-
testAccCheckPublicCloudPrivateNetworkExists("ovh_cloud_network_private.network", t),
54-
testAccCheckPublicCloudPrivateNetworkSubnetExists("ovh_cloud_network_private_subnet.subnet", t),
88+
resource.TestCheckResourceAttrSet("ovh_cloud_network_private_subnet.subnet", "project_id"),
89+
resource.TestCheckResourceAttrSet("ovh_cloud_network_private_subnet.subnet", "network_id"),
90+
resource.TestCheckResourceAttr("ovh_cloud_network_private_subnet.subnet", "start", "192.168.168.100"),
91+
resource.TestCheckResourceAttr("ovh_cloud_network_private_subnet.subnet", "end", "192.168.168.200"),
92+
resource.TestCheckResourceAttr("ovh_cloud_network_private_subnet.subnet", "network", "192.168.168.0/24"),
5593
),
5694
},
5795
},
@@ -61,56 +99,5 @@ func TestAccPublicCloudPrivateNetworkSubnet_basic(t *testing.T) {
6199
func testAccCheckPublicCloudPrivateNetworkSubnetPreCheck(t *testing.T) {
62100
testAccPreCheckPublicCloud(t)
63101
testAccCheckPublicCloudExists(t)
64-
}
65-
66-
func testAccCheckPublicCloudPrivateNetworkSubnetExists(n string, t *testing.T) resource.TestCheckFunc {
67-
return func(s *terraform.State) error {
68-
config := testAccProvider.Meta().(*Config)
69-
70-
rs, ok := s.RootModule().Resources[n]
71-
if !ok {
72-
return fmt.Errorf("Not found: %s", n)
73-
}
74-
75-
if rs.Primary.ID == "" {
76-
return fmt.Errorf("No ID is set")
77-
}
78-
79-
if rs.Primary.Attributes["project_id"] == "" {
80-
return fmt.Errorf("No Project ID is set")
81-
}
82-
83-
if rs.Primary.Attributes["network_id"] == "" {
84-
return fmt.Errorf("No Network ID is set")
85-
}
86-
87-
return publicCloudPrivateNetworkSubnetExists(
88-
rs.Primary.Attributes["project_id"],
89-
rs.Primary.Attributes["network_id"],
90-
rs.Primary.ID,
91-
config.OVHClient,
92-
)
93-
}
94-
}
95-
96-
func testAccCheckPublicCloudPrivateNetworkSubnetDestroy(s *terraform.State) error {
97-
config := testAccProvider.Meta().(*Config)
98-
for _, rs := range s.RootModule().Resources {
99-
if rs.Type != "ovh_cloud_network_private_subnet" {
100-
continue
101-
}
102-
103-
err := publicCloudPrivateNetworkSubnetExists(
104-
rs.Primary.Attributes["project_id"],
105-
rs.Primary.Attributes["network_id"],
106-
rs.Primary.ID,
107-
config.OVHClient,
108-
)
109-
110-
if err == nil {
111-
return fmt.Errorf("VRack > Public Cloud Private Network Subnet still exists")
112-
}
113-
114-
}
115-
return nil
102+
testAccPreCheckVRack(t)
116103
}

ovh/resource_ovh_publiccloud_private_network_test.go

+47-47
Original file line numberDiff line numberDiff line change
@@ -9,27 +9,63 @@ import (
99
"time"
1010

1111
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
12-
"github.com/hashicorp/terraform-plugin-sdk/terraform"
1312
)
1413

15-
var testAccPublicCloudPrivateNetworkConfig = fmt.Sprintf(`
14+
var testAccPublicCloudPrivateNetworkConfig_attachVrack = `
1615
resource "ovh_vrack_cloudproject" "attach" {
1716
vrack_id = "%s"
1817
project_id = "%s"
1918
}
2019
2120
data "ovh_cloud_regions" "regions" {
2221
project_id = ovh_vrack_cloudproject.attach.project_id
22+
23+
has_services_up = ["network"]
24+
}
25+
`
26+
27+
var testAccPublicCloudPrivateNetworkConfig_noAttachVrack = `
28+
data "ovh_cloud_regions" "regions" {
29+
project_id = "%s"
30+
31+
has_services_up = ["network"]
2332
}
33+
`
34+
35+
var testAccPublicCloudPrivateNetworkConfig_basic = `
36+
%s
2437
2538
resource "ovh_cloud_network_private" "network" {
26-
project_id = ovh_vrack_cloudproject.attach.project_id
39+
project_id = data.ovh_cloud_regions.regions.project_id
2740
vlan_id = 0
2841
name = "terraform_testacc_private_net"
2942
regions = tolist(data.ovh_cloud_regions.regions.names)
3043
}
44+
`
45+
46+
func testAccPublicCloudPrivateNetworkConfig() string {
47+
attachVrack := fmt.Sprintf(
48+
testAccPublicCloudPrivateNetworkConfig_attachVrack,
49+
os.Getenv("OVH_VRACK"),
50+
os.Getenv("OVH_PUBLIC_CLOUD"),
51+
)
52+
noAttachVrack := fmt.Sprintf(
53+
testAccPublicCloudPrivateNetworkConfig_noAttachVrack,
54+
os.Getenv("OVH_PUBLIC_CLOUD"),
55+
)
56+
57+
if os.Getenv("OVH_ATTACH_VRACK") == "0" {
58+
return fmt.Sprintf(
59+
testAccPublicCloudPrivateNetworkConfig_basic,
60+
noAttachVrack,
61+
)
62+
}
3163

32-
`, os.Getenv("OVH_VRACK"), os.Getenv("OVH_PUBLIC_CLOUD"))
64+
return fmt.Sprintf(
65+
testAccPublicCloudPrivateNetworkConfig_basic,
66+
attachVrack,
67+
)
68+
}
3369

3470
func init() {
3571
resource.AddTestSweepers("ovh_cloud_network_private", &resource.Sweeper{
@@ -105,15 +141,15 @@ func testSweepCloudNetworkPrivate(region string) error {
105141

106142
func TestAccPublicCloudPrivateNetwork_basic(t *testing.T) {
107143
resource.Test(t, resource.TestCase{
108-
PreCheck: func() { testAccCheckPublicCloudPrivateNetworkPreCheck(t) },
109-
Providers: testAccProviders,
110-
CheckDestroy: testAccCheckPublicCloudPrivateNetworkDestroy,
144+
PreCheck: func() { testAccCheckPublicCloudPrivateNetworkPreCheck(t) },
145+
Providers: testAccProviders,
111146
Steps: []resource.TestStep{
112147
{
113-
Config: testAccPublicCloudPrivateNetworkConfig,
148+
Config: testAccPublicCloudPrivateNetworkConfig(),
114149
Check: resource.ComposeTestCheckFunc(
115-
testAccCheckVRackPublicCloudAttachmentExists("ovh_vrack_cloudproject.attach", t),
116-
testAccCheckPublicCloudPrivateNetworkExists("ovh_cloud_network_private.network", t),
150+
resource.TestCheckResourceAttrSet("ovh_cloud_network_private.network", "project_id"),
151+
resource.TestCheckResourceAttrSet("ovh_cloud_network_private.network", "id"),
152+
resource.TestCheckResourceAttr("ovh_cloud_network_private.network", "vlan_id", "0"),
117153
),
118154
},
119155
},
@@ -123,41 +159,5 @@ func TestAccPublicCloudPrivateNetwork_basic(t *testing.T) {
123159
func testAccCheckPublicCloudPrivateNetworkPreCheck(t *testing.T) {
124160
testAccPreCheckPublicCloud(t)
125161
testAccCheckPublicCloudExists(t)
126-
}
127-
128-
func testAccCheckPublicCloudPrivateNetworkExists(n string, t *testing.T) resource.TestCheckFunc {
129-
return func(s *terraform.State) error {
130-
config := testAccProvider.Meta().(*Config)
131-
132-
rs, ok := s.RootModule().Resources[n]
133-
if !ok {
134-
return fmt.Errorf("Not found: %s", n)
135-
}
136-
137-
if rs.Primary.ID == "" {
138-
return fmt.Errorf("No ID is set")
139-
}
140-
141-
if rs.Primary.Attributes["project_id"] == "" {
142-
return fmt.Errorf("No Project ID is set")
143-
}
144-
145-
return publicCloudPrivateNetworkExists(rs.Primary.Attributes["project_id"], rs.Primary.ID, config.OVHClient)
146-
}
147-
}
148-
149-
func testAccCheckPublicCloudPrivateNetworkDestroy(s *terraform.State) error {
150-
config := testAccProvider.Meta().(*Config)
151-
for _, rs := range s.RootModule().Resources {
152-
if rs.Type != "ovh_cloud_network_private" {
153-
continue
154-
}
155-
156-
err := publicCloudPrivateNetworkExists(rs.Primary.Attributes["project_id"], rs.Primary.ID, config.OVHClient)
157-
if err == nil {
158-
return fmt.Errorf("VRack > Public Cloud Private Network still exists")
159-
}
160-
161-
}
162-
return nil
162+
testAccPreCheckVRack(t)
163163
}

0 commit comments

Comments
 (0)