@@ -2,42 +2,14 @@ package infoblox
2
2
3
3
import (
4
4
"fmt"
5
+ "regexp"
5
6
"testing"
6
7
7
8
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
8
9
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
9
10
ibclient "github.com/infobloxopen/infoblox-go-client/v2"
10
11
)
11
12
12
- var testAccresourceIPv4NetworkCreate = fmt .Sprintf (`
13
- resource "infoblox_ipv4_network" "foo"{
14
- network_view="default"
15
- cidr="10.10.0.0/24"
16
- reserve_ip = 5
17
- gateway = "10.10.0.250"
18
- comment = "10.0.0.0/24 network created"
19
- ext_attrs = jsonencode({
20
- "Network Name"= "demo-network"
21
- "Tenant ID" = "terraform_test_tenant"
22
- "Location" = "Test loc."
23
- "Site" = "Test site"
24
- })
25
- }` )
26
-
27
- var testAccresourceIPv6NetworkCreate = fmt .Sprintf (`
28
- resource "infoblox_ipv6_network" "foo"{
29
- network_view="default"
30
- cidr="2001:db8:abcd:12::/64"
31
- reserve_ipv6 = 10
32
- comment = "2001:db8:abcd:12::/64 network created"
33
- ext_attrs = jsonencode({
34
- "Tenant ID" = "terraform_test_tenant"
35
- "Network Name"= "demo-network"
36
- "Location" = "Test loc."
37
- "Site" = "Test site"
38
- })
39
- }` )
40
-
41
13
func validateNetwork (
42
14
resourceName string ,
43
15
expectedValue * ibclient.Network ) resource.TestCheckFunc {
@@ -122,14 +94,29 @@ func testAccCheckNetworkDestroy(s *terraform.State) error {
122
94
return nil
123
95
}
124
96
97
+ var updateNotAllowedErrorRegexp = regexp .MustCompile ("changing the value of '.+' field is not allowed" )
98
+
125
99
func TestAcc_resourceNetwork_ipv4 (t * testing.T ) {
126
100
resource .Test (t , resource.TestCase {
127
101
PreCheck : func () { testAccPreCheck (t ) },
128
102
Providers : testAccProviders ,
129
103
CheckDestroy : testAccCheckNetworkDestroy ,
130
104
Steps : []resource.TestStep {
131
105
{
132
- Config : testAccresourceIPv4NetworkCreate ,
106
+ Config : `
107
+ resource "infoblox_ipv4_network" "foo"{
108
+ network_view="default"
109
+ cidr="10.10.0.0/24"
110
+ reserve_ip = 5
111
+ gateway = "10.10.0.250"
112
+ comment = "10.0.0.0/24 network created"
113
+ ext_attrs = jsonencode({
114
+ "Network Name"= "demo-network"
115
+ "Tenant ID" = "terraform_test_tenant"
116
+ "Location" = "Test loc."
117
+ "Site" = "Test site"
118
+ })
119
+ }` ,
133
120
Check : validateNetwork (
134
121
"infoblox_ipv4_network.foo" ,
135
122
& ibclient.Network {
@@ -144,6 +131,76 @@ func TestAcc_resourceNetwork_ipv4(t *testing.T) {
144
131
},
145
132
),
146
133
},
134
+ {
135
+ Config : `
136
+ resource "infoblox_ipv4_network" "foo"{
137
+ network_view="default"
138
+ cidr="10.10.0.0/24"
139
+ reserve_ip = 6
140
+ gateway = "10.10.0.250"
141
+ comment = "10.0.0.0/24 network created"
142
+ ext_attrs = jsonencode({
143
+ "Network Name"= "demo-network"
144
+ "Tenant ID" = "terraform_test_tenant"
145
+ "Location" = "Test loc."
146
+ "Site" = "Test site"
147
+ })
148
+ }` ,
149
+ ExpectError : updateNotAllowedErrorRegexp ,
150
+ },
151
+ {
152
+ Config : `
153
+ resource "infoblox_ipv4_network" "foo"{
154
+ network_view="default"
155
+ cidr="10.10.0.0/24"
156
+ reserve_ip = 6
157
+ gateway = "10.10.0.250"
158
+ comment = "10.0.0.0/24 network created"
159
+ ext_attrs = jsonencode({
160
+ "Network Name"= "demo-network"
161
+ "Tenant ID" = "terraform_test_tenant"
162
+ "Location" = "Test loc."
163
+ "Site" = "Test site"
164
+ })
165
+ }` ,
166
+ // double-check that the next update (with the same changes) returns an error as well
167
+ // (in case the field to be updated is 'computed' and the main code do not clear it to the previous state)
168
+ ExpectError : updateNotAllowedErrorRegexp ,
169
+ },
170
+ {
171
+ Config : `
172
+ resource "infoblox_ipv4_network" "foo"{
173
+ network_view="default"
174
+ cidr="10.10.0.0/24"
175
+ reserve_ip = 5
176
+ gateway = "10.10.0.251"
177
+ comment = "10.0.0.0/24 network created"
178
+ ext_attrs = jsonencode({
179
+ "Network Name"= "demo-network"
180
+ "Tenant ID" = "terraform_test_tenant"
181
+ "Location" = "Test loc."
182
+ "Site" = "Test site"
183
+ })
184
+ }` ,
185
+ ExpectError : updateNotAllowedErrorRegexp ,
186
+ },
187
+ {
188
+ Config : `
189
+ resource "infoblox_ipv4_network" "foo"{
190
+ network_view="default"
191
+ cidr="10.10.0.0/24"
192
+ reserve_ip = 5
193
+ gateway = "10.10.0.251"
194
+ comment = "10.0.0.0/24 network created"
195
+ ext_attrs = jsonencode({
196
+ "Network Name"= "demo-network"
197
+ "Tenant ID" = "terraform_test_tenant"
198
+ "Location" = "Test loc."
199
+ "Site" = "Test site"
200
+ })
201
+ }` ,
202
+ ExpectError : updateNotAllowedErrorRegexp ,
203
+ },
147
204
},
148
205
})
149
206
}
@@ -155,7 +212,19 @@ func TestAcc_resourceNetwork_ipv6(t *testing.T) {
155
212
CheckDestroy : testAccCheckNetworkDestroy ,
156
213
Steps : []resource.TestStep {
157
214
{
158
- Config : testAccresourceIPv6NetworkCreate ,
215
+ Config : `
216
+ resource "infoblox_ipv6_network" "foo"{
217
+ network_view="default"
218
+ cidr="2001:db8:abcd:12::/64"
219
+ reserve_ipv6 = 10
220
+ comment = "2001:db8:abcd:12::/64 network created"
221
+ ext_attrs = jsonencode({
222
+ "Tenant ID" = "terraform_test_tenant"
223
+ "Network Name"= "demo-network"
224
+ "Location" = "Test loc."
225
+ "Site" = "Test site"
226
+ })
227
+ }` ,
159
228
Check : validateNetwork (
160
229
"infoblox_ipv6_network.foo" ,
161
230
& ibclient.Network {
@@ -170,6 +239,38 @@ func TestAcc_resourceNetwork_ipv6(t *testing.T) {
170
239
},
171
240
),
172
241
},
242
+ {
243
+ Config : `
244
+ resource "infoblox_ipv6_network" "foo"{
245
+ network_view="default"
246
+ cidr="2001:db8:abcd:12::/64"
247
+ reserve_ipv6 = 11
248
+ comment = "2001:db8:abcd:12::/64 network created"
249
+ ext_attrs = jsonencode({
250
+ "Tenant ID" = "terraform_test_tenant"
251
+ "Network Name"= "demo-network"
252
+ "Location" = "Test loc."
253
+ "Site" = "Test site"
254
+ })
255
+ }` ,
256
+ ExpectError : updateNotAllowedErrorRegexp ,
257
+ },
258
+ {
259
+ Config : `
260
+ resource "infoblox_ipv6_network" "foo"{
261
+ network_view="default"
262
+ cidr="2001:db8:abcd:12::/64"
263
+ reserve_ipv6 = 11
264
+ comment = "2001:db8:abcd:12::/64 network created"
265
+ ext_attrs = jsonencode({
266
+ "Tenant ID" = "terraform_test_tenant"
267
+ "Network Name"= "demo-network"
268
+ "Location" = "Test loc."
269
+ "Site" = "Test site"
270
+ })
271
+ }` ,
272
+ ExpectError : updateNotAllowedErrorRegexp ,
273
+ },
173
274
},
174
275
})
175
276
}
0 commit comments