44 "context"
55 "fmt"
66 "os"
7+ "strconv"
78 "strings"
89 "time"
910
@@ -13,6 +14,7 @@ import (
1314 "github.com/grafana/terraform-provider-grafana/v3/internal/common"
1415 "github.com/grafana/terraform-provider-grafana/v3/internal/resources/cloud"
1516 "github.com/grafana/terraform-provider-grafana/v3/internal/testutils"
17+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
1618 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
1719 "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
1820)
@@ -38,6 +40,11 @@ func TestResourceAccessPolicyToken_Basic(t *testing.T) {
3840 "metrics:write" ,
3941 }
4042
43+ randomName := acctest .RandStringFromCharSet (6 , acctest .CharSetAlpha )
44+ initialName := fmt .Sprintf ("initial-%s" , randomName )
45+ initialToken := fmt .Sprintf ("token-%s" , initialName )
46+ updatedName := fmt .Sprintf ("updated-%s" , randomName )
47+
4148 resource .Test (t , resource.TestCase {
4249 ProtoV5ProviderFactories : testutils .ProtoV5ProviderFactories ,
4350 CheckDestroy : resource .ComposeTestCheckFunc (
@@ -46,13 +53,13 @@ func TestResourceAccessPolicyToken_Basic(t *testing.T) {
4653 ),
4754 Steps : []resource.TestStep {
4855 {
49- Config : testAccCloudAccessPolicyTokenConfigBasic ("initial" , "" , "us" , initialScopes , expiresAt ),
56+ Config : testAccCloudAccessPolicyTokenConfigBasic (initialName , "" , "us" , initialScopes , expiresAt ),
5057 Check : resource .ComposeTestCheckFunc (
5158 testAccCloudAccessPolicyCheckExists ("grafana_cloud_access_policy.test" , & policy ),
5259 testAccCloudAccessPolicyTokenCheckExists ("grafana_cloud_access_policy_token.test" , & policyToken ),
5360
54- resource .TestCheckResourceAttr ("grafana_cloud_access_policy.test" , "name" , "initial" ),
55- resource .TestCheckResourceAttr ("grafana_cloud_access_policy.test" , "display_name" , "initial" ),
61+ resource .TestCheckResourceAttr ("grafana_cloud_access_policy.test" , "name" , initialName ),
62+ resource .TestCheckResourceAttr ("grafana_cloud_access_policy.test" , "display_name" , initialName ),
5663 resource .TestCheckResourceAttr ("grafana_cloud_access_policy.test" , "scopes.#" , "6" ),
5764 resource .TestCheckResourceAttr ("grafana_cloud_access_policy.test" , "scopes.0" , "accesspolicies:delete" ),
5865 resource .TestCheckResourceAttr ("grafana_cloud_access_policy.test" , "scopes.1" , "accesspolicies:read" ),
@@ -63,37 +70,54 @@ func TestResourceAccessPolicyToken_Basic(t *testing.T) {
6370 resource .TestCheckResourceAttr ("grafana_cloud_access_policy.test" , "realm.#" , "1" ),
6471 resource .TestCheckResourceAttr ("grafana_cloud_access_policy.test" , "realm.0.type" , "org" ),
6572
66- resource .TestCheckResourceAttr ("grafana_cloud_access_policy_token.test" , "name" , "token-initial" ),
67- resource .TestCheckResourceAttr ("grafana_cloud_access_policy_token.test" , "display_name" , "token-initial" ),
73+ resource .TestCheckResourceAttr ("grafana_cloud_access_policy_token.test" , "name" , initialToken ),
74+ resource .TestCheckResourceAttr ("grafana_cloud_access_policy_token.test" , "display_name" , initialToken ),
6875 resource .TestCheckResourceAttr ("grafana_cloud_access_policy_token.test" , "expires_at" , expiresAt ),
6976 ),
7077 },
7178 {
72- Config : testAccCloudAccessPolicyTokenConfigBasic ("initial" , "updated" , "us" , updatedScopes , expiresAt ),
79+ Config : testAccCloudAccessPolicyTokenConfigBasic (initialName , "" , "us" , initialScopes , expiresAt ),
80+ PreConfig : func () {
81+ orgID , err := strconv .ParseInt (* policy .OrgId , 10 , 32 )
82+ if err != nil {
83+ t .Fatal (err )
84+ }
85+ client := testutils .Provider .Meta ().(* common.Client ).GrafanaCloudAPI
86+ _ , _ , err = client .TokensAPI .DeleteToken (context .Background (), * policyToken .Id ).
87+ Region ("us" ).
88+ OrgId (int32 (orgID )).
89+ XRequestId ("deleting-token" ).Execute ()
90+ if err != nil {
91+ t .Fatalf ("error getting cloud access policy: %s" , err )
92+ }
93+ },
94+ },
95+ {
96+ Config : testAccCloudAccessPolicyTokenConfigBasic (initialName , "updated" , "us" , updatedScopes , expiresAt ),
7397 Check : resource .ComposeTestCheckFunc (
7498 testAccCloudAccessPolicyCheckExists ("grafana_cloud_access_policy.test" , & policy ),
7599 testAccCloudAccessPolicyTokenCheckExists ("grafana_cloud_access_policy_token.test" , & policyToken ),
76100
77- resource .TestCheckResourceAttr ("grafana_cloud_access_policy.test" , "name" , "initial" ),
101+ resource .TestCheckResourceAttr ("grafana_cloud_access_policy.test" , "name" , initialName ),
78102 resource .TestCheckResourceAttr ("grafana_cloud_access_policy.test" , "display_name" , "updated" ),
79103 resource .TestCheckResourceAttr ("grafana_cloud_access_policy.test" , "scopes.#" , "1" ),
80104 resource .TestCheckResourceAttr ("grafana_cloud_access_policy.test" , "scopes.0" , "metrics:write" ),
81105 resource .TestCheckResourceAttr ("grafana_cloud_access_policy.test" , "realm.#" , "1" ),
82106 resource .TestCheckResourceAttr ("grafana_cloud_access_policy.test" , "realm.0.type" , "org" ),
83107
84- resource .TestCheckResourceAttr ("grafana_cloud_access_policy_token.test" , "name" , "token-initial" ),
108+ resource .TestCheckResourceAttr ("grafana_cloud_access_policy_token.test" , "name" , initialToken ),
85109 resource .TestCheckResourceAttr ("grafana_cloud_access_policy_token.test" , "display_name" , "updated" ),
86110 resource .TestCheckResourceAttr ("grafana_cloud_access_policy_token.test" , "expires_at" , expiresAt ),
87111 ),
88112 },
89113 // Recreate
90114 {
91- Config : testAccCloudAccessPolicyTokenConfigBasic ("updated" , "updated" , "us" , updatedScopes , expiresAt ),
115+ Config : testAccCloudAccessPolicyTokenConfigBasic (updatedName , "updated" , "us" , updatedScopes , expiresAt ),
92116 Check : resource .ComposeTestCheckFunc (
93117 testAccCloudAccessPolicyCheckExists ("grafana_cloud_access_policy.test" , & policy ),
94118 testAccCloudAccessPolicyTokenCheckExists ("grafana_cloud_access_policy_token.test" , & policyToken ),
95119
96- resource .TestCheckResourceAttr ("grafana_cloud_access_policy.test" , "name" , "updated" ),
120+ resource .TestCheckResourceAttr ("grafana_cloud_access_policy.test" , "name" , updatedName ),
97121 resource .TestCheckResourceAttr ("grafana_cloud_access_policy.test" , "display_name" , "updated" ),
98122 resource .TestCheckResourceAttr ("grafana_cloud_access_policy.test" , "scopes.#" , "1" ),
99123 resource .TestCheckResourceAttr ("grafana_cloud_access_policy.test" , "scopes.0" , "metrics:write" ),
@@ -123,11 +147,12 @@ func TestResourceAccessPolicyToken_NoExpiration(t *testing.T) {
123147 var policy gcom.AuthAccessPolicy
124148 var policyToken gcom.AuthToken
125149
150+ randomName := fmt .Sprintf ("initial-no-expiration-%s" , acctest .RandStringFromCharSet (6 , acctest .CharSetAlpha ))
126151 resource .Test (t , resource.TestCase {
127152 ProtoV5ProviderFactories : testutils .ProtoV5ProviderFactories ,
128153 Steps : []resource.TestStep {
129154 {
130- Config : testAccCloudAccessPolicyTokenConfigBasic ("initial-no-expiration" , "" , "us" , []string {"metrics:read" }, "" ),
155+ Config : testAccCloudAccessPolicyTokenConfigBasic (randomName , "" , "us" , []string {"metrics:read" }, "" ),
131156 Check : resource .ComposeTestCheckFunc (
132157 testAccCloudAccessPolicyCheckExists ("grafana_cloud_access_policy.test" , & policy ),
133158 testAccCloudAccessPolicyTokenCheckExists ("grafana_cloud_access_policy_token.test" , & policyToken ),
0 commit comments