Skip to content

Commit 185f5fc

Browse files
authored
Action Permissions - Fix fields to required (#111)
1 parent d52d5a5 commit 185f5fc

File tree

3 files changed

+58
-11
lines changed

3 files changed

+58
-11
lines changed

port/action-permissions/resource.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -96,19 +96,13 @@ func (r *ActionPermissionsResource) Update(ctx context.Context, req resource.Upd
9696
return
9797
}
9898

99-
a, err := r.portClient.UpdateActionPermissions(ctx, blueprintIdentifier, actionIdentifier, permissions)
99+
_, err = r.portClient.UpdateActionPermissions(ctx, blueprintIdentifier, actionIdentifier, permissions)
100100

101101
if err != nil {
102102
resp.Diagnostics.AddError("failed to update action permissions", err.Error())
103103
return
104104
}
105105

106-
err = refreshActionPermissionsState(ctx, state, a, blueprintIdentifier, actionIdentifier)
107-
if err != nil {
108-
resp.Diagnostics.AddError("failed to refresh action permissions state", err.Error())
109-
return
110-
}
111-
112106
state.ID = types.StringValue(fmt.Sprintf("%s:%s", blueprintIdentifier, actionIdentifier))
113107
state.ActionIdentifier = types.StringValue(actionIdentifier)
114108
state.BlueprintIdentifier = types.StringValue(blueprintIdentifier)

port/action-permissions/resource_test.go

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,6 @@ func TestAccPortActionPermissionsImportState(t *testing.T) {
465465
value: "true",
466466
operator: "=",
467467
property: "$owned_by_team"
468-
469468
}
470469
],
471470
combinator: "and"
@@ -505,3 +504,40 @@ func TestAccPortActionPermissionsImportState(t *testing.T) {
505504
},
506505
})
507506
}
507+
508+
func TestAccPortActionWithEmptyFieldsExpectDefaultsToApply(t *testing.T) {
509+
blueprintIdentifier := utils.GenID()
510+
actionIdentifier := utils.GenID()
511+
var testAccActionPermissionsConfigCreate = testAccCreateBlueprintAndActionConfig(blueprintIdentifier, actionIdentifier) + `
512+
resource "port_action_permissions" "create_microservice_permissions" {
513+
action_identifier = port_action.create_microservice.identifier
514+
blueprint_identifier = port_blueprint.microservice.identifier
515+
permissions = {
516+
"execute": {}
517+
"approve": {}
518+
}
519+
}
520+
`
521+
resource.Test(t, resource.TestCase{
522+
PreCheck: func() { acctest.TestAccPreCheck(t) },
523+
ProtoV6ProviderFactories: acctest.TestAccProtoV6ProviderFactories,
524+
Steps: []resource.TestStep{
525+
{
526+
Config: testAccActionPermissionsConfigCreate,
527+
Check: resource.ComposeTestCheckFunc(
528+
resource.TestCheckResourceAttr("port_action_permissions.create_microservice_permissions", "action_identifier", actionIdentifier),
529+
resource.TestCheckResourceAttr("port_action_permissions.create_microservice_permissions", "blueprint_identifier", blueprintIdentifier),
530+
resource.TestCheckResourceAttr("port_action_permissions.create_microservice_permissions", "permissions.execute.roles.#", "0"),
531+
resource.TestCheckResourceAttr("port_action_permissions.create_microservice_permissions", "permissions.execute.users.#", "0"),
532+
resource.TestCheckResourceAttr("port_action_permissions.create_microservice_permissions", "permissions.execute.teams.#", "0"),
533+
resource.TestCheckResourceAttr("port_action_permissions.create_microservice_permissions", "permissions.execute.owned_by_team", "true"),
534+
resource.TestCheckNoResourceAttr("port_action_permissions.create_microservice_permissions", "permissions.approve.policy"),
535+
resource.TestCheckResourceAttr("port_action_permissions.create_microservice_permissions", "permissions.approve.roles.#", "0"),
536+
resource.TestCheckResourceAttr("port_action_permissions.create_microservice_permissions", "permissions.approve.users.#", "0"),
537+
resource.TestCheckResourceAttr("port_action_permissions.create_microservice_permissions", "permissions.approve.teams.#", "0"),
538+
resource.TestCheckNoResourceAttr("port_action_permissions.create_microservice_permissions", "permissions.approve.policy"),
539+
),
540+
},
541+
},
542+
})
543+
}

port/action-permissions/schema.go

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@ package action_permissions
22

33
import (
44
"context"
5+
"github.com/hashicorp/terraform-plugin-framework/attr"
56
"github.com/hashicorp/terraform-plugin-framework/resource"
67
"github.com/hashicorp/terraform-plugin-framework/resource/schema"
8+
"github.com/hashicorp/terraform-plugin-framework/resource/schema/booldefault"
9+
"github.com/hashicorp/terraform-plugin-framework/resource/schema/listdefault"
710
"github.com/hashicorp/terraform-plugin-framework/types"
811
)
912

@@ -22,30 +25,38 @@ func ActionPermissionsSchema() map[string]schema.Attribute {
2225
},
2326
"permissions": schema.SingleNestedAttribute{
2427
MarkdownDescription: "The permissions for the action",
25-
Optional: true,
28+
Required: true,
2629
Attributes: map[string]schema.Attribute{
2730
"execute": schema.SingleNestedAttribute{
2831
MarkdownDescription: "The permission to execute the action",
29-
Optional: true,
32+
Required: true,
3033
Attributes: map[string]schema.Attribute{
3134
"users": schema.ListAttribute{
3235
MarkdownDescription: "The users with execution permission",
3336
Optional: true,
37+
Computed: true,
38+
Default: listdefault.StaticValue(types.ListValueMust(types.StringType, []attr.Value{})),
3439
ElementType: types.StringType,
3540
},
3641
"roles": schema.ListAttribute{
3742
MarkdownDescription: "The roles with execution permission",
3843
Optional: true,
44+
Computed: true,
45+
Default: listdefault.StaticValue(types.ListValueMust(types.StringType, []attr.Value{})),
3946
ElementType: types.StringType,
4047
},
4148
"teams": schema.ListAttribute{
4249
MarkdownDescription: "The teams with execution permission",
4350
Optional: true,
51+
Computed: true,
52+
Default: listdefault.StaticValue(types.ListValueMust(types.StringType, []attr.Value{})),
4453
ElementType: types.StringType,
4554
},
4655
"owned_by_team": schema.BoolAttribute{
4756
MarkdownDescription: "Give execution permission to the teams who own the entity",
4857
Optional: true,
58+
Computed: true,
59+
Default: booldefault.StaticBool(true),
4960
},
5061
"policy": schema.StringAttribute{
5162
MarkdownDescription: "The policy to use for execution",
@@ -55,21 +66,27 @@ func ActionPermissionsSchema() map[string]schema.Attribute {
5566
},
5667
"approve": schema.SingleNestedAttribute{
5768
MarkdownDescription: "The permission to approve the action's runs",
58-
Optional: true,
69+
Required: true,
5970
Attributes: map[string]schema.Attribute{
6071
"users": schema.ListAttribute{
6172
MarkdownDescription: "The users with approval permission",
6273
Optional: true,
74+
Computed: true,
75+
Default: listdefault.StaticValue(types.ListValueMust(types.StringType, []attr.Value{})),
6376
ElementType: types.StringType,
6477
},
6578
"roles": schema.ListAttribute{
6679
MarkdownDescription: "The roles with approval permission",
6780
Optional: true,
81+
Computed: true,
82+
Default: listdefault.StaticValue(types.ListValueMust(types.StringType, []attr.Value{})),
6883
ElementType: types.StringType,
6984
},
7085
"teams": schema.ListAttribute{
7186
MarkdownDescription: "The teams with approval permission",
7287
Optional: true,
88+
Computed: true,
89+
Default: listdefault.StaticValue(types.ListValueMust(types.StringType, []attr.Value{})),
7390
ElementType: types.StringType,
7491
},
7592
"policy": schema.StringAttribute{

0 commit comments

Comments
 (0)