Skip to content

Commit 77faf3f

Browse files
Role tests: Use OpenAPI client (#1139)
Gets rid of the manually written checkers in favor of the new ones that use the OpenAPI client
1 parent 392523e commit 77faf3f

File tree

3 files changed

+24
-62
lines changed

3 files changed

+24
-62
lines changed

internal/resources/grafana/common_check_exists_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66

77
gapi "github.com/grafana/grafana-api-golang-client"
88
goapi "github.com/grafana/grafana-openapi-client-go/client"
9+
"github.com/grafana/grafana-openapi-client-go/client/access_control"
910
"github.com/grafana/grafana-openapi-client-go/client/annotations"
1011
"github.com/grafana/grafana-openapi-client-go/client/datasources"
1112
"github.com/grafana/grafana-openapi-client-go/client/folders"
@@ -56,6 +57,14 @@ var (
5657
return payloadOrError(resp, err)
5758
},
5859
)
60+
roleCheckExists = newCheckExistsHelper(
61+
func(r *models.RoleDTO) string { return r.UID },
62+
func(client *goapi.GrafanaHTTPAPI, id string) (*models.RoleDTO, error) {
63+
params := access_control.NewGetRoleParams().WithRoleUID(id)
64+
resp, err := client.AccessControl.GetRole(params, nil)
65+
return payloadOrError(resp, err)
66+
},
67+
)
5968
serviceAccountCheckExists = newCheckExistsHelper(
6069
func(t *models.ServiceAccountDTO) string { return strconv.FormatInt(t.ID, 10) },
6170
func(client *goapi.GrafanaHTTPAPI, id string) (*models.ServiceAccountDTO, error) {

internal/resources/grafana/data_source_role_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@ package grafana_test
33
import (
44
"testing"
55

6-
gapi "github.com/grafana/grafana-api-golang-client"
6+
"github.com/grafana/grafana-openapi-client-go/models"
77
"github.com/grafana/terraform-provider-grafana/internal/testutils"
88
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
99
)
1010

1111
func TestAccDatasourceRole_basic(t *testing.T) {
1212
testutils.CheckEnterpriseTestsEnabled(t)
1313

14-
var role gapi.Role
14+
var role models.RoleDTO
1515
checks := []resource.TestCheckFunc{
16-
testAccRoleCheckExists("grafana_role.test", &role),
16+
roleCheckExists.exists("grafana_role.test", &role),
1717
resource.TestCheckResourceAttr("data.grafana_role.from_name", "name", "test-role"),
1818
resource.TestCheckResourceAttr("data.grafana_role.from_name", "description", "test-role description"),
1919
resource.TestCheckResourceAttr("data.grafana_role.from_name", "uid", "test-ds-role-uid"),
@@ -30,7 +30,7 @@ func TestAccDatasourceRole_basic(t *testing.T) {
3030

3131
resource.ParallelTest(t, resource.TestCase{
3232
ProviderFactories: testutils.ProviderFactories,
33-
CheckDestroy: testAccRoleCheckDestroy(&role),
33+
CheckDestroy: roleCheckExists.destroyed(&role, nil),
3434
Steps: []resource.TestStep{
3535
{
3636
Config: testutils.TestAccExample(t, "data-sources/grafana_role/data-source.tf"),

internal/resources/grafana/resource_role_test.go

Lines changed: 11 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,24 @@ import (
66

77
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
88
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
9-
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
109

11-
gapi "github.com/grafana/grafana-api-golang-client"
12-
"github.com/grafana/terraform-provider-grafana/internal/common"
13-
"github.com/grafana/terraform-provider-grafana/internal/resources/grafana"
10+
"github.com/grafana/grafana-openapi-client-go/models"
1411
"github.com/grafana/terraform-provider-grafana/internal/testutils"
1512
)
1613

1714
func TestAccRole_basic(t *testing.T) {
1815
testutils.CheckEnterpriseTestsEnabled(t)
1916

20-
var role gapi.Role
17+
var role models.RoleDTO
2118

2219
resource.ParallelTest(t, resource.TestCase{
2320
ProviderFactories: testutils.ProviderFactories,
24-
CheckDestroy: testAccRoleCheckDestroy(&role),
21+
CheckDestroy: roleCheckExists.destroyed(&role, nil),
2522
Steps: []resource.TestStep{
2623
{
2724
Config: roleConfigBasic,
2825
Check: resource.ComposeTestCheckFunc(
29-
testAccRoleCheckExists("grafana_role.test", &role),
26+
roleCheckExists.exists("grafana_role.test", &role),
3027
resource.TestCheckResourceAttr("grafana_role.test", "name", "terraform-acc-test"),
3128
resource.TestCheckResourceAttr("grafana_role.test", "description", "test desc"),
3229
resource.TestCheckResourceAttr("grafana_role.test", "display_name", "testdisplay"),
@@ -40,7 +37,7 @@ func TestAccRole_basic(t *testing.T) {
4037
{
4138
Config: roleConfigWithPermissions,
4239
Check: resource.ComposeTestCheckFunc(
43-
testAccRoleCheckExists("grafana_role.test", &role),
40+
roleCheckExists.exists("grafana_role.test", &role),
4441
resource.TestCheckResourceAttr("grafana_role.test", "name", "terraform-acc-test"),
4542
resource.TestCheckResourceAttr("grafana_role.test", "description", "test desc"),
4643
resource.TestCheckResourceAttr("grafana_role.test", "display_name", "testdisplay"),
@@ -62,12 +59,12 @@ func TestAccRole_basic(t *testing.T) {
6259
func TestAccRoleVersioning(t *testing.T) {
6360
testutils.CheckEnterpriseTestsEnabled(t)
6461

65-
var role gapi.Role
62+
var role models.RoleDTO
6663
name := acctest.RandomWithPrefix("versioning-")
6764

6865
resource.ParallelTest(t, resource.TestCase{
6966
ProviderFactories: testutils.ProviderFactories,
70-
CheckDestroy: testAccRoleCheckDestroy(&role),
67+
CheckDestroy: roleCheckExists.destroyed(&role, nil),
7168
Steps: []resource.TestStep{
7269
{
7370
Config: fmt.Sprintf(`
@@ -77,7 +74,7 @@ func TestAccRoleVersioning(t *testing.T) {
7774
auto_increment_version = true
7875
}`, name),
7976
Check: resource.ComposeTestCheckFunc(
80-
testAccRoleCheckExists("grafana_role.test", &role),
77+
roleCheckExists.exists("grafana_role.test", &role),
8178
resource.TestCheckResourceAttr("grafana_role.test", "name", name),
8279
resource.TestCheckResourceAttr("grafana_role.test", "version", "1"),
8380
),
@@ -90,7 +87,7 @@ func TestAccRoleVersioning(t *testing.T) {
9087
version = 5
9188
}`, name),
9289
Check: resource.ComposeTestCheckFunc(
93-
testAccRoleCheckExists("grafana_role.test", &role),
90+
roleCheckExists.exists("grafana_role.test", &role),
9491
resource.TestCheckResourceAttr("grafana_role.test", "name", name),
9592
resource.TestCheckResourceAttr("grafana_role.test", "version", "5"),
9693
),
@@ -103,7 +100,7 @@ func TestAccRoleVersioning(t *testing.T) {
103100
auto_increment_version = true
104101
}`, name),
105102
Check: resource.ComposeTestCheckFunc(
106-
testAccRoleCheckExists("grafana_role.test", &role),
103+
roleCheckExists.exists("grafana_role.test", &role),
107104
resource.TestCheckResourceAttr("grafana_role.test", "name", name),
108105
resource.TestCheckResourceAttr("grafana_role.test", "version", "6"),
109106
),
@@ -116,7 +113,7 @@ func TestAccRoleVersioning(t *testing.T) {
116113
auto_increment_version = true
117114
}`, name),
118115
Check: resource.ComposeTestCheckFunc(
119-
testAccRoleCheckExists("grafana_role.test", &role),
116+
roleCheckExists.exists("grafana_role.test", &role),
120117
resource.TestCheckResourceAttr("grafana_role.test", "name", name),
121118
resource.TestCheckResourceAttr("grafana_role.test", "version", "7"),
122119
),
@@ -125,50 +122,6 @@ func TestAccRoleVersioning(t *testing.T) {
125122
})
126123
}
127124

128-
func testAccRoleCheckExists(rn string, r *gapi.Role) resource.TestCheckFunc {
129-
return func(s *terraform.State) error {
130-
rs, ok := s.RootModule().Resources[rn]
131-
if !ok {
132-
return fmt.Errorf("resource not found: %s", rn)
133-
}
134-
135-
if rs.Primary.ID == "" {
136-
return fmt.Errorf("resource id not set")
137-
}
138-
orgID, roleUID := grafana.SplitOrgResourceID(rs.Primary.ID)
139-
client := testutils.Provider.Meta().(*common.Client).GrafanaAPI
140-
141-
// If the org ID is set, check that the report doesn't exist in the default org
142-
if orgID > 1 {
143-
role, err := client.GetRole(roleUID)
144-
if err == nil || role != nil {
145-
return fmt.Errorf("expected no role with ID %s in default org but found one", roleUID)
146-
}
147-
client = client.WithOrgID(orgID)
148-
}
149-
150-
role, err := client.GetRole(roleUID)
151-
if err != nil {
152-
return fmt.Errorf("error getting role: %s", err)
153-
}
154-
155-
*r = *role
156-
157-
return nil
158-
}
159-
}
160-
161-
func testAccRoleCheckDestroy(r *gapi.Role) resource.TestCheckFunc {
162-
return func(s *terraform.State) error {
163-
client := testutils.Provider.Meta().(*common.Client).GrafanaAPI
164-
role, err := client.GetRole(r.UID)
165-
if err == nil && role.Name != "" {
166-
return fmt.Errorf("role still exists")
167-
}
168-
return nil
169-
}
170-
}
171-
172125
const roleConfigBasic = `
173126
resource "grafana_role" "test" {
174127
name = "terraform-acc-test"

0 commit comments

Comments
 (0)