Skip to content

Commit 10cb0b7

Browse files
ACCT-10261 adding acceptance test for perm group order
1 parent c0f2f7a commit 10cb0b7

File tree

2 files changed

+88
-0
lines changed

2 files changed

+88
-0
lines changed

internal/services/api_token/resource_test.go

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"github.com/cloudflare/terraform-provider-cloudflare/internal/acctest"
77
"github.com/cloudflare/terraform-provider-cloudflare/internal/utils"
88
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
9+
"github.com/hashicorp/terraform-plugin-testing/plancheck"
910
)
1011

1112
func TestAccAPIToken_Basic(t *testing.T) {
@@ -21,12 +22,14 @@ func TestAccAPIToken_Basic(t *testing.T) {
2122
Config: testAccCloudflareAPITokenWithoutCondition(rnd, rnd, permissionID),
2223
Check: resource.ComposeTestCheckFunc(
2324
resource.TestCheckResourceAttr(resourceID, "name", rnd),
25+
resource.TestCheckResourceAttr(resourceID, "policies.0.permission_groups.0.id", permissionID),
2426
),
2527
},
2628
{
2729
Config: testAccCloudflareAPITokenWithoutCondition(rnd, rnd+"-updated", permissionID),
2830
Check: resource.ComposeTestCheckFunc(
2931
resource.TestCheckResourceAttr(resourceID, "name", rnd+"-updated"),
32+
resource.TestCheckResourceAttr(resourceID, "policies.0.permission_groups.0.id", permissionID),
3033
),
3134
},
3235
},
@@ -132,3 +135,67 @@ func TestAccAPIToken_TokenTTL(t *testing.T) {
132135
func testAccCloudflareAPITokenWithTTL(rnd string, permissionID string) string {
133136
return acctest.LoadTestCase("apitokenwithttl.tf", rnd, permissionID)
134137
}
138+
139+
func TestAccAPIToken_PermissionGroupOrder(t *testing.T) {
140+
rnd := utils.GenerateRandomResourceName()
141+
name := "cloudflare_api_token." + rnd
142+
permissionID1 := "82e64a83756745bbbb1c9c2701bf816b" // DNS read
143+
permissionID2 := "e199d584e69344eba202452019deafe3" // Disable ESC read
144+
145+
resource.Test(t, resource.TestCase{
146+
PreCheck: func() { acctest.TestAccPreCheck(t) },
147+
ProtoV6ProviderFactories: acctest.TestAccProtoV6ProviderFactories,
148+
Steps: []resource.TestStep{
149+
{
150+
Config: acctest.LoadTestCase("api_token-permissiongroup-order.tf", rnd, permissionID1, permissionID2),
151+
Check: resource.ComposeTestCheckFunc(
152+
resource.TestCheckResourceAttr(name, "name", rnd),
153+
resource.TestCheckResourceAttr(name, "policies.0.permission_groups.0.id", permissionID1),
154+
resource.TestCheckResourceAttr(name, "policies.0.permission_groups.1.id", permissionID2),
155+
),
156+
},
157+
{
158+
Config: acctest.LoadTestCase("api_token-permissiongroup-order.tf", rnd, permissionID2, permissionID1),
159+
// changing the order of permission groups should not affect plan
160+
ConfigPlanChecks: resource.ConfigPlanChecks{
161+
PreApply: []plancheck.PlanCheck{
162+
plancheck.ExpectEmptyPlan(),
163+
},
164+
},
165+
},
166+
},
167+
})
168+
169+
resource.Test(t, resource.TestCase{
170+
PreCheck: func() { acctest.TestAccPreCheck(t) },
171+
ProtoV6ProviderFactories: acctest.TestAccProtoV6ProviderFactories,
172+
Steps: []resource.TestStep{
173+
{
174+
Config: acctest.LoadTestCase("api_token-permissiongroup-order.tf", rnd, permissionID2, permissionID1),
175+
Check: resource.ComposeTestCheckFunc(
176+
resource.TestCheckResourceAttr(name, "name", rnd),
177+
resource.TestCheckResourceAttr(name, "policies.0.permission_groups.0.id", permissionID1),
178+
resource.TestCheckResourceAttr(name, "policies.0.permission_groups.1.id", permissionID2),
179+
),
180+
},
181+
{
182+
Config: acctest.LoadTestCase("api_token-permissiongroup-order.tf", rnd, permissionID2, permissionID1),
183+
// re-applying same change does not produce drift
184+
ConfigPlanChecks: resource.ConfigPlanChecks{
185+
PreApply: []plancheck.PlanCheck{
186+
plancheck.ExpectEmptyPlan(),
187+
},
188+
},
189+
},
190+
{
191+
Config: acctest.LoadTestCase("api_token-permissiongroup-order.tf", rnd, permissionID1, permissionID2),
192+
// changing the order of permission groups should not affect plan
193+
ConfigPlanChecks: resource.ConfigPlanChecks{
194+
PreApply: []plancheck.PlanCheck{
195+
plancheck.ExpectEmptyPlan(),
196+
},
197+
},
198+
},
199+
},
200+
})
201+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
resource "cloudflare_api_token" "%[1]s" {
2+
name = "%[1]s"
3+
status = "active"
4+
5+
policies = [{
6+
effect = "allow"
7+
permission_groups = [{
8+
id = "%[2]s"
9+
},{
10+
id = "%[3]s"
11+
}]
12+
resources = {
13+
"com.cloudflare.api.account.zone.*" = "*"
14+
}
15+
}]
16+
}
17+
18+
data "cloudflare_api_token" "%[1]s" {
19+
token_id = cloudflare_api_token.%[1]s.id
20+
depends_on = [cloudflare_api_token.%[1]s]
21+
}

0 commit comments

Comments
 (0)