Skip to content

Commit

Permalink
feat(domain): add validators for role and workspace assignments
Browse files Browse the repository at this point in the history
  • Loading branch information
DariuszPorowski committed Mar 7, 2025
1 parent 27a87e8 commit b4f05d5
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 9 deletions.
4 changes: 4 additions & 0 deletions internal/services/domain/resource_domain_role_assignments.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (

"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
"github.com/hashicorp/terraform-plugin-framework-timeouts/resource/timeouts"
"github.com/hashicorp/terraform-plugin-framework-validators/objectvalidator"
"github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator"
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/resource"
Expand Down Expand Up @@ -108,6 +109,9 @@ func (r *resourceDomainRoleAssignments) Schema(ctx context.Context, _ resource.S
},
},
},
Validators: []validator.Object{
objectvalidator.IsRequired(),
},
},
},
"timeouts": timeouts.AttributesAll(ctx),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,13 @@ import (
"slices"

"github.com/hashicorp/terraform-plugin-framework-timeouts/resource/timeouts"
"github.com/hashicorp/terraform-plugin-framework-validators/setvalidator"
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/resource"
"github.com/hashicorp/terraform-plugin-framework/resource/schema"
"github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier"
"github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier"
"github.com/hashicorp/terraform-plugin-framework/schema/validator"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-log/tflog"
fabadmin "github.com/microsoft/fabric-sdk-go/fabric/admin"
Expand Down Expand Up @@ -78,6 +80,9 @@ func (r *resourceDomainWorkspaceAssignments) Schema(ctx context.Context, _ resou
MarkdownDescription: "The set of Workspace IDs.",
Required: true,
ElementType: customtypes.UUIDType{},
Validators: []validator.Set{
setvalidator.SizeAtLeast(1),
},
},
"timeouts": timeouts.AttributesAll(ctx),
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,53 +76,100 @@ func TestUnit_DomainWorkspaceAssignmentsResource_Attributes(t *testing.T) {

func TestAcc_DomainWorkspaceAssignmentsResource_CRUD(t *testing.T) {
domainResourceHCL := at.CompileConfig(
at.ResourceHeader(testhelp.TypeName("fabric", itemTFName), "test"),
at.ResourceHeader(testhelp.TypeName("fabric", "domain"), "test"),
map[string]any{
"display_name": testhelp.RandomName(),
},
)
domainResourceFQN := testhelp.ResourceFQN("fabric", "domain", "test")

domainResourceFQN := testhelp.ResourceFQN("fabric", itemTFName, "test")
workspace1ResourceHCL := at.CompileConfig(
at.ResourceHeader(testhelp.TypeName("fabric", "workspace"), "test1"),
map[string]any{
"display_name": testhelp.RandomName(),
},
)
workspace1ResourceFQN := testhelp.ResourceFQN("fabric", "workspace", "test1")

workspace2ResourceHCL := at.CompileConfig(
at.ResourceHeader(testhelp.TypeName("fabric", "workspace"), "test2"),
map[string]any{
"display_name": testhelp.RandomName(),
},
)
workspace2ResourceFQN := testhelp.ResourceFQN("fabric", "workspace", "test2")

// entity1 := testhelp.WellKnown()["WorkspaceRS"].(map[string]any)
// entity1ID := entity1["id"].(string)

entity := testhelp.WellKnown()["WorkspaceRS"].(map[string]any)
entityID := entity["id"].(string)
// entity2 := testhelp.WellKnown()["WorkspaceDS"].(map[string]any)
// entity2ID := entity2["id"].(string)

resource.Test(t, testhelp.NewTestAccCase(t, nil, nil, []resource.TestStep{
// Create and Read
{
ResourceName: testResourceDomainWorkspaceAssignments,
Config: at.JoinConfigs(
domainResourceHCL,
workspace1ResourceHCL,
workspace2ResourceHCL,
at.CompileConfig(
testResourceDomainWorkspaceAssignmentsHeader,
map[string]any{
"domain_id": testhelp.RefByFQN(domainResourceFQN, "id"),
"workspace_ids": []string{
entityID,
testhelp.RefByFQN(workspace1ResourceFQN, "id"),
},
},
),
),
Check: resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttr(testResourceDomainWorkspaceAssignments, "workspace_ids.#", "1"),
resource.TestCheckResourceAttr(testResourceDomainWorkspaceAssignments, "workspace_ids.0", entityID),
// resource.TestCheckResourceAttr(testResourceDomainWorkspaceAssignments, "workspace_ids.0", entity1ID),
),
},
// Update and Read
{
ResourceName: testResourceDomainWorkspaceAssignments,
Config: at.JoinConfigs(
domainResourceHCL,
workspace1ResourceHCL,
workspace2ResourceHCL,
at.CompileConfig(
testResourceDomainWorkspaceAssignmentsHeader,
map[string]any{
"domain_id": testhelp.RefByFQN(domainResourceFQN, "id"),
"workspace_ids": []string{},
"domain_id": testhelp.RefByFQN(domainResourceFQN, "id"),
"workspace_ids": []string{
testhelp.RefByFQN(workspace1ResourceFQN, "id"),
testhelp.RefByFQN(workspace2ResourceFQN, "id"),
},
},
),
),
Check: resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttr(testResourceDomainWorkspaceAssignments, "workspace_ids.#", "0"),
resource.TestCheckResourceAttr(testResourceDomainWorkspaceAssignments, "workspace_ids.#", "2"),
),
},
// Update and Read
{
ResourceName: testResourceDomainWorkspaceAssignments,
Config: at.JoinConfigs(
domainResourceHCL,
workspace1ResourceHCL,
workspace2ResourceHCL,
at.CompileConfig(
testResourceDomainWorkspaceAssignmentsHeader,
map[string]any{
"domain_id": testhelp.RefByFQN(domainResourceFQN, "id"),
"workspace_ids": []string{
testhelp.RefByFQN(workspace2ResourceFQN, "id"),
},
},
),
),
Check: resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttr(testResourceDomainWorkspaceAssignments, "workspace_ids.#", "1"),
// resource.TestCheckResourceAttr(testResourceDomainWorkspaceAssignments, "workspace_ids.0", entity2ID),
),
},
}))
Expand Down

0 comments on commit b4f05d5

Please sign in to comment.