chore(projectmanager): remove members attribute (#737)

relates to STACKITTPR-165
This commit is contained in:
Ruben Hönle 2025-04-01 09:33:31 +02:00 committed by GitHub
parent a8809a4979
commit 297a8a6f88
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 145 additions and 713 deletions

View file

@ -3,7 +3,6 @@ package resourcemanager_test
import (
"context"
"fmt"
"strings"
"testing"
"github.com/hashicorp/terraform-plugin-testing/helper/acctest"
@ -11,7 +10,6 @@ import (
"github.com/hashicorp/terraform-plugin-testing/terraform"
"github.com/stackitcloud/stackit-sdk-go/core/config"
"github.com/stackitcloud/stackit-sdk-go/core/utils"
"github.com/stackitcloud/stackit-sdk-go/services/authorization"
"github.com/stackitcloud/stackit-sdk-go/services/resourcemanager"
"github.com/stackitcloud/stackit-sdk-go/services/resourcemanager/wait"
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/testutil"
@ -26,19 +24,7 @@ var projectResource = map[string]string{
"new_label": "a-label",
}
func membersConfig(members []authorization.Member) string {
membersConfig := make([]string, 0, len(members))
for _, m := range members {
memberConfig := fmt.Sprintf(`{
subject = "%s"
role = "%s"
}`, *m.Subject, *m.Role)
membersConfig = append(membersConfig, memberConfig)
}
return strings.Join(membersConfig, ",\n")
}
func resourceConfig(name string, label *string, members string) string {
func resourceConfig(name string, label *string) string {
labelConfig := ""
if label != nil {
labelConfig = fmt.Sprintf("new_label = %q", *label)
@ -53,19 +39,13 @@ func resourceConfig(name string, label *string, members string) string {
"billing_reference" = "%[4]s"
%[5]s
}
members = [
%[7]s
]
owner_email = "%[8]s"
owner_email = "%[7]s"
}
resource "stackit_resourcemanager_project" "parent_by_uuid" {
parent_container_id = "%[6]s"
name = "%[3]s-uuid"
members = [
%[7]s
]
owner_email = "%[8]s"
owner_email = "%[7]s"
}
`,
testutil.ResourceManagerProviderConfig(),
@ -74,26 +54,18 @@ func resourceConfig(name string, label *string, members string) string {
projectResource["billing_reference"],
labelConfig,
projectResource["parent_uuid"],
members,
testutil.TestProjectServiceAccountEmail,
)
}
func TestAccResourceManagerResource(t *testing.T) {
initialMembersConfig := membersConfig([]authorization.Member{
{
Subject: &testutil.TestProjectUserEmail,
Role: utils.Ptr("owner"),
},
})
resource.Test(t, resource.TestCase{
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
CheckDestroy: testAccCheckResourceManagerDestroy,
Steps: []resource.TestStep{
// Creation
{
Config: resourceConfig(projectResource["name"], nil, initialMembersConfig),
Config: resourceConfig(projectResource["name"], nil),
Check: resource.ComposeAggregateTestCheckFunc(
// Parent container id project data
resource.TestCheckResourceAttrSet("stackit_resourcemanager_project.parent_by_container", "container_id"),
@ -128,7 +100,7 @@ func TestAccResourceManagerResource(t *testing.T) {
project_id = stackit_resourcemanager_project.parent_by_container.project_id
}
`,
resourceConfig(projectResource["name"], nil, initialMembersConfig),
resourceConfig(projectResource["name"], nil),
),
Check: resource.ComposeAggregateTestCheckFunc(
// Container project data
@ -178,11 +150,11 @@ func TestAccResourceManagerResource(t *testing.T) {
ImportStateVerify: true,
// The owner_email attributes don't exist in the
// API, therefore there is no value for it during import.
ImportStateVerifyIgnore: []string{"owner_email", "members"},
ImportStateVerifyIgnore: []string{"owner_email"},
},
// Update
{
Config: resourceConfig(fmt.Sprintf("%s-new", projectResource["name"]), utils.Ptr("a-label"), initialMembersConfig),
Config: resourceConfig(fmt.Sprintf("%s-new", projectResource["name"]), utils.Ptr("a-label")),
Check: resource.ComposeAggregateTestCheckFunc(
// Project data
resource.TestCheckResourceAttrSet("stackit_resourcemanager_project.parent_by_container", "container_id"),
@ -191,6 +163,7 @@ func TestAccResourceManagerResource(t *testing.T) {
resource.TestCheckResourceAttr("stackit_resourcemanager_project.parent_by_container", "labels.%", "2"),
resource.TestCheckResourceAttr("stackit_resourcemanager_project.parent_by_container", "labels.billing_reference", projectResource["billing_reference"]),
resource.TestCheckResourceAttr("stackit_resourcemanager_project.parent_by_container", "labels.new_label", projectResource["new_label"]),
resource.TestCheckResourceAttr("stackit_resourcemanager_project.parent_by_container", "owner_email", testutil.TestProjectServiceAccountEmail),
),
},
// Deletion is done by the framework implicitly