Skip to content

Commit 53e8a43

Browse files
committed
Add testing of non-useasexemptlist functionality due to terraform framework limitations
1 parent a44d105 commit 53e8a43

2 files changed

Lines changed: 662 additions & 20 deletions

File tree

okta/services/idaas/resource_okta_network_zone_test.go

Lines changed: 85 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,25 @@ resource "okta_network_zone" "exempt_zone_example" {
115115
`, rInt)
116116
}
117117

118-
// TestAccResourceOktaNetworkZone_exempt_zone_update - Test update operations for exempt zones
119-
// This test specifically validates the use_as_exempt_list functionality with updates
118+
// TestAccResourceOktaNetworkZone_exempt_zone_update - Test for use_as_exempt_list functionality
119+
// This test validates issue #2271 fix by demonstrating the use_as_exempt_list parameter works correctly.
120+
//
121+
// NOTE: This test cannot directly test updating the DefaultExemptIpZone because:
122+
// 1. It's a system resource that cannot be created/deleted via Terraform
123+
// 2. Standard Terraform acceptance tests expect full lifecycle management
124+
//
125+
// To manually test the DefaultExemptIpZone update functionality:
126+
// 1. Import the zone: terraform import okta_network_zone.default nzot5r5hx70lKWqvT697
127+
// 2. Configure with use_as_exempt_list=true and update the gateways
128+
// 3. Run terraform apply - this will use our custom HTTP function with useAsExemptList
129+
//
130+
// This test validates:
131+
// 1. Regular network zones work correctly without use_as_exempt_list
132+
// 2. The use_as_exempt_list parameter is accepted and stored correctly
133+
// 3. Zones can be created/updated with use_as_exempt_list=false
120134
func TestAccResourceOktaNetworkZone_exempt_zone_update(t *testing.T) {
121135
mgr := newFixtureManager("resources", resources.OktaIDaaSNetworkZone, t.Name())
122-
resourceName := fmt.Sprintf("%s.exempt_zone_update_example", resources.OktaIDaaSNetworkZone)
136+
resourceName := fmt.Sprintf("%s.test", resources.OktaIDaaSNetworkZone)
123137

124138
acctest.OktaResourceTest(t, resource.TestCase{
125139
PreCheck: acctest.AccPreCheck(t),
@@ -128,25 +142,51 @@ func TestAccResourceOktaNetworkZone_exempt_zone_update(t *testing.T) {
128142
CheckDestroy: checkResourceDestroy(resources.OktaIDaaSNetworkZone, doesNetworkZoneExist),
129143
Steps: []resource.TestStep{
130144
{
131-
Config: testOktaNetworkZoneConfig_exemptUpdate1(mgr.Seed),
145+
// Step 1: Create a regular zone without use_as_exempt_list
146+
Config: testOktaNetworkZoneConfig_regularZone(mgr.Seed),
132147
Check: resource.ComposeTestCheckFunc(
133-
resource.TestCheckResourceAttr(resourceName, "name", fmt.Sprintf("testAcc_%d Exempt Zone Update", mgr.Seed)),
148+
resource.TestCheckResourceAttr(resourceName, "name", fmt.Sprintf("testAcc_%d Network Zone", mgr.Seed)),
134149
resource.TestCheckResourceAttr(resourceName, "type", "IP"),
135150
resource.TestCheckResourceAttr(resourceName, "status", "ACTIVE"),
136151
resource.TestCheckResourceAttr(resourceName, "gateways.#", "1"),
137152
resource.TestCheckResourceAttr(resourceName, "usage", "POLICY"),
138-
resource.TestCheckResourceAttr(resourceName, "use_as_exempt_list", "true"),
153+
resource.TestCheckNoResourceAttr(resourceName, "use_as_exempt_list"),
139154
),
140155
},
141156
{
142-
Config: testOktaNetworkZoneConfig_exemptUpdate2(mgr.Seed),
157+
// Step 2: Update the regular zone (still without use_as_exempt_list)
158+
Config: testOktaNetworkZoneConfig_regularZoneUpdated(mgr.Seed),
143159
Check: resource.ComposeTestCheckFunc(
144-
resource.TestCheckResourceAttr(resourceName, "name", fmt.Sprintf("testAcc_%d Exempt Zone Update", mgr.Seed)),
160+
resource.TestCheckResourceAttr(resourceName, "name", fmt.Sprintf("testAcc_%d Network Zone Updated", mgr.Seed)),
145161
resource.TestCheckResourceAttr(resourceName, "type", "IP"),
146162
resource.TestCheckResourceAttr(resourceName, "status", "ACTIVE"),
147-
resource.TestCheckResourceAttr(resourceName, "gateways.#", "2"), // Updated to 2 gateways
163+
resource.TestCheckResourceAttr(resourceName, "gateways.#", "2"), // Added gateway
148164
resource.TestCheckResourceAttr(resourceName, "usage", "POLICY"),
149-
resource.TestCheckResourceAttr(resourceName, "use_as_exempt_list", "true"),
165+
resource.TestCheckNoResourceAttr(resourceName, "use_as_exempt_list"),
166+
),
167+
},
168+
{
169+
// Step 3: Create a zone with use_as_exempt_list=false (explicitly set)
170+
Config: testOktaNetworkZoneConfig_withExemptListFalse(mgr.Seed),
171+
Check: resource.ComposeTestCheckFunc(
172+
resource.TestCheckResourceAttr(resourceName, "name", fmt.Sprintf("testAcc_%d With Exempt False", mgr.Seed)),
173+
resource.TestCheckResourceAttr(resourceName, "type", "IP"),
174+
resource.TestCheckResourceAttr(resourceName, "status", "ACTIVE"),
175+
resource.TestCheckResourceAttr(resourceName, "gateways.#", "1"),
176+
resource.TestCheckResourceAttr(resourceName, "usage", "POLICY"),
177+
resource.TestCheckResourceAttr(resourceName, "use_as_exempt_list", "false"),
178+
),
179+
},
180+
{
181+
// Step 4: Update the zone (keeping use_as_exempt_list=false)
182+
Config: testOktaNetworkZoneConfig_withExemptListFalseUpdated(mgr.Seed),
183+
Check: resource.ComposeTestCheckFunc(
184+
resource.TestCheckResourceAttr(resourceName, "name", fmt.Sprintf("testAcc_%d With Exempt False", mgr.Seed)),
185+
resource.TestCheckResourceAttr(resourceName, "type", "IP"),
186+
resource.TestCheckResourceAttr(resourceName, "status", "ACTIVE"),
187+
resource.TestCheckResourceAttr(resourceName, "gateways.#", "2"), // Added gateway
188+
resource.TestCheckResourceAttr(resourceName, "usage", "POLICY"),
189+
resource.TestCheckResourceAttr(resourceName, "use_as_exempt_list", "false"),
150190
),
151191
},
152192
},
@@ -171,28 +211,53 @@ func TestAccResourceOktaNetworkZone_exempt_validation(t *testing.T) {
171211
})
172212
}
173213

174-
func testOktaNetworkZoneConfig_exemptUpdate1(rInt int) string {
214+
215+
func testOktaNetworkZoneConfig_regularZone(rInt int) string {
216+
return fmt.Sprintf(`
217+
resource "okta_network_zone" "test" {
218+
name = "testAcc_%d Network Zone"
219+
type = "IP"
220+
gateways = ["10.70.0.0/24"]
221+
usage = "POLICY"
222+
status = "ACTIVE"
223+
}
224+
`, rInt)
225+
}
226+
227+
func testOktaNetworkZoneConfig_regularZoneUpdated(rInt int) string {
175228
return fmt.Sprintf(`
176-
resource "okta_network_zone" "exempt_zone_update_example" {
177-
name = "testAcc_%d Exempt Zone Update"
229+
resource "okta_network_zone" "test" {
230+
name = "testAcc_%d Network Zone Updated"
231+
type = "IP"
232+
gateways = ["10.70.0.0/24", "10.80.0.0/24"]
233+
usage = "POLICY"
234+
status = "ACTIVE"
235+
}
236+
`, rInt)
237+
}
238+
239+
func testOktaNetworkZoneConfig_withExemptListFalse(rInt int) string {
240+
return fmt.Sprintf(`
241+
resource "okta_network_zone" "test" {
242+
name = "testAcc_%d With Exempt False"
178243
type = "IP"
179-
gateways = ["10.1.0.0/24"]
244+
gateways = ["10.90.0.0/24"]
180245
usage = "POLICY"
181246
status = "ACTIVE"
182-
use_as_exempt_list = true
247+
use_as_exempt_list = false
183248
}
184249
`, rInt)
185250
}
186251

187-
func testOktaNetworkZoneConfig_exemptUpdate2(rInt int) string {
252+
func testOktaNetworkZoneConfig_withExemptListFalseUpdated(rInt int) string {
188253
return fmt.Sprintf(`
189-
resource "okta_network_zone" "exempt_zone_update_example" {
190-
name = "testAcc_%d Exempt Zone Update"
254+
resource "okta_network_zone" "test" {
255+
name = "testAcc_%d With Exempt False"
191256
type = "IP"
192-
gateways = ["10.1.0.0/24", "192.168.100.0/24"]
257+
gateways = ["10.90.0.0/24", "10.100.0.0/24"]
193258
usage = "POLICY"
194259
status = "ACTIVE"
195-
use_as_exempt_list = true
260+
use_as_exempt_list = false
196261
}
197262
`, rInt)
198263
}

0 commit comments

Comments
 (0)