Skip to content

Commit

Permalink
fix: linting
Browse files Browse the repository at this point in the history
Signed-off-by: Benjamin Ritter <[email protected]>
  • Loading branch information
Benjamin Ritter committed Feb 10, 2025
1 parent b35a03d commit 3d0d825
Show file tree
Hide file tree
Showing 8 changed files with 37 additions and 37 deletions.
4 changes: 2 additions & 2 deletions docs/resources/authorization_project_role_assignment.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ Role Assignment resource schema.
```terraform
resource "stackit_authorization_project_role_assignment" "example" {
resource_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
role = "owner"
subject = "[email protected]"
role = "owner"
subject = "[email protected]"
}
```

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
resource "stackit_authorization_project_role_assignment" "example" {
resource_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
role = "owner"
subject = "[email protected]"
role = "owner"
subject = "[email protected]"
}
35 changes: 18 additions & 17 deletions stackit/internal/services/authorization/authorization_acc_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,34 +31,35 @@ var project_owner string
var invalid_role string

var testConfigVars = config.Variables{
"project_id": config.StringVariable(testutil.ProjectId),
"project_id": config.StringVariable(testutil.ProjectId),
"test_service_account": config.StringVariable(testutil.TestProjectServiceAccountEmail),
}


func TestAccProjectRoleAssignmentResource(t *testing.T) {
func TestAccProjectRoleAssignmentResource(t *testing.T) {
t.Log(testutil.AuthorizationProviderConfig())
resource.Test(t, resource.TestCase{
ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories,
Steps: []resource.TestStep{
{
ConfigVariables: testConfigVars ,
Config: testutil.AuthorizationProviderConfig() + prerequisites,
Check: func(s *terraform.State) error {
ConfigVariables: testConfigVars,
Config: testutil.AuthorizationProviderConfig() + prerequisites,
Check: func(_ *terraform.State) error {
client, err := authApiClient()
if err != nil {
if err != nil {
return err
}

members, err := client.ListMembers(context.TODO(), "project", testutil.ProjectId).Execute()

if err != nil {
if err != nil {
return err
}

if !slices.ContainsFunc(*members.Members, func(m authorization.Member) bool { return *m.Role == "reader" && *m.Subject == testutil.TestProjectServiceAccountEmail }) {

if !slices.ContainsFunc(*members.Members, func(m authorization.Member) bool {
return *m.Role == "reader" && *m.Subject == testutil.TestProjectServiceAccountEmail
}) {
t.Log(members.Members)
return errors.New("Membership not found")
return errors.New("Membership not found")
}
return nil
},
Expand All @@ -67,19 +68,19 @@ func TestAccProjectRoleAssignmentResource(t *testing.T) {
// Expect failure on creating an already existing role_assignment
// Would be bad, since two resources could be created and deletion of one would lead to state drift for the second TF resource
ConfigVariables: testConfigVars,
Config: testutil.AuthorizationProviderConfig() + prerequisites + double_definition,
ExpectError: regexp.MustCompile(".+"),
Config: testutil.AuthorizationProviderConfig() + prerequisites + double_definition,
ExpectError: regexp.MustCompile(".+"),
},
{
// The Service Account inherits owner permissions for the project from the organization. Check if you can still assign owner permissions on the project explicitly
ConfigVariables: testConfigVars,
Config: testutil.AuthorizationProviderConfig() + prerequisites + project_owner,
Config: testutil.AuthorizationProviderConfig() + prerequisites + project_owner,
},
{
// Assign a non-existent role. Expect failure
ConfigVariables: testConfigVars,
Config: testutil.AuthorizationProviderConfig() + prerequisites + invalid_role,
ExpectError: regexp.MustCompile(".+"),
Config: testutil.AuthorizationProviderConfig() + prerequisites + invalid_role,
ExpectError: regexp.MustCompile(".+"),
},
},
})
Expand All @@ -101,4 +102,4 @@ func authApiClient() (*authorization.APIClient, error) {
return nil, fmt.Errorf("creating client: %w", err)
}
return client, nil
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ var (
_ resource.ResourceWithConfigure = &projectRoleAssignmentResource{}
_ resource.ResourceWithImportState = &projectRoleAssignmentResource{}

resource_type = "project"
errRoleAssignmentNotFound = errors.New("Response members did not contain expected role assignment")
resource_type = "project"
errRoleAssignmentNotFound = errors.New("Response members did not contain expected role assignment")
errRoleAssignmentDuplicateFound = errors.New("Found a duplicate role assignment.")
)

Expand Down Expand Up @@ -152,8 +152,7 @@ func (r *projectRoleAssignmentResource) Create(ctx context.Context, req resource

ctx = annotateLogger(ctx, &model)


if err := r.checkDuplicate(ctx, model); err != nil {
if err := r.checkDuplicate(ctx, model); err != nil {
core.LogAndAddError(ctx, &resp.Diagnostics, "Error while checking for duplicate role assignments", err.Error())
return
}
Expand Down Expand Up @@ -345,20 +344,20 @@ func annotateLogger(ctx context.Context, model *Model) context.Context {
}

// returns an error if duplicate role assignment exists
func (r *projectRoleAssignmentResource)checkDuplicate(ctx context.Context, model Model) error {
func (r *projectRoleAssignmentResource) checkDuplicate(ctx context.Context, model Model) error { //nolint:gocritic // A read only copy is required since an api response is parsed into the model and this check should not affect the model parameter
listResp, err := r.authorizationClient.ListMembers(ctx, resource_type, model.ResourceId.ValueString()).Subject(model.Subject.ValueString()).Execute()
if err != nil {
if err != nil {
return err
}

// Map response body to schema
err = mapListMembersResponse(listResp, &model)

if err != nil {
if err == errRoleAssignmentNotFound {
if errors.Is(err, errRoleAssignmentNotFound) {
return nil
}
return err
}
return errRoleAssignmentDuplicateFound
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

resource "stackit_authorization_project_role_assignment" "serviceaccount_duplicate" {
resource_id = var.project_id
role = "reader"
subject = var.test_service_account
role = "reader"
subject = var.test_service_account
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

resource "stackit_authorization_project_role_assignment" "invalid_role" {
resource_id = var.project_id
role = "thisrolesdoesnotexist"
subject = var.test_service_account
role = "thisrolesdoesnotexist"
subject = var.test_service_account
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ variable "test_service_account" {}

resource "stackit_authorization_project_role_assignment" "serviceaccount" {
resource_id = var.project_id
role = "reader"
subject = var.test_service_account
role = "reader"
subject = var.test_service_account
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

resource "stackit_authorization_project_role_assignment" "serviceaccount_project_owner" {
resource_id = var.project_id
role = "owner"
subject = var.test_service_account
role = "owner"
subject = var.test_service_account
}

0 comments on commit 3d0d825

Please sign in to comment.