Skip to content

Commit e58025c

Browse files
authored
Onboard Secrets Manager user: addressed acceptance comments (#130)
* Addressed acceptance comments * fix declaration in wrong place
1 parent 9f098bf commit e58025c

File tree

4 files changed

+61
-27
lines changed

4 files changed

+61
-27
lines changed

internal/cmd/secrets-manager/user/delete/delete.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,13 @@ func NewCmd() *cobra.Command {
6363
instanceLabel = model.InstanceId
6464
}
6565

66-
userLabel, userDescription, err := secretsManagerUtils.GetUserDetails(ctx, apiClient, model.ProjectId, model.InstanceId, model.UserId)
66+
userLabel, err := secretsManagerUtils.GetUserLabel(ctx, apiClient, model.ProjectId, model.InstanceId, model.UserId)
6767
if err != nil {
68-
userLabel = model.UserId
68+
userLabel = fmt.Sprintf("%q", model.UserId)
6969
}
7070

7171
if !model.AssumeYes {
72-
prompt := fmt.Sprintf("Are you sure you want to delete user %q (%q) of instance %q? (This cannot be undone)", userLabel, userDescription, instanceLabel)
72+
prompt := fmt.Sprintf("Are you sure you want to delete user %s of instance %q? (This cannot be undone)", userLabel, instanceLabel)
7373
err = confirm.PromptForConfirmation(cmd, prompt)
7474
if err != nil {
7575
return err
@@ -83,7 +83,7 @@ func NewCmd() *cobra.Command {
8383
return fmt.Errorf("delete Secrets Manager user: %w", err)
8484
}
8585

86-
cmd.Printf("Deleted user %q of instance %q\n", userLabel, instanceLabel)
86+
cmd.Printf("Deleted user %s of instance %q\n", userLabel, instanceLabel)
8787
return nil
8888
},
8989
}

internal/cmd/secrets-manager/user/update/update.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,9 @@ func NewCmd() *cobra.Command {
6767
instanceLabel = model.InstanceId
6868
}
6969

70-
var userLabel string
71-
72-
userName, userDescription, err := secretsManagerUtils.GetUserDetails(ctx, apiClient, model.ProjectId, model.InstanceId, model.UserId)
70+
userLabel, err := secretsManagerUtils.GetUserLabel(ctx, apiClient, model.ProjectId, model.InstanceId, model.UserId)
7371
if err != nil {
7472
userLabel = fmt.Sprintf("%q", model.UserId)
75-
} else {
76-
userLabel = fmt.Sprintf("%q (%s)", userName, userDescription)
7773
}
7874

7975
if !model.AssumeYes {

internal/pkg/services/secrets-manager/utils/utils.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,22 @@ func GetInstanceName(ctx context.Context, apiClient SecretsManagerClient, projec
2020
return *resp.Name, nil
2121
}
2222

23-
func GetUserDetails(ctx context.Context, apiClient SecretsManagerClient, projectId, instanceId, userId string) (username, description string, err error) {
23+
func GetUserLabel(ctx context.Context, apiClient SecretsManagerClient, projectId, instanceId, userId string) (string, error) {
2424
resp, err := apiClient.GetUserExecute(ctx, projectId, instanceId, userId)
2525
if err != nil {
26-
return "", "", fmt.Errorf("get Secrets Manager user: %w", err)
26+
return "", fmt.Errorf("get Secrets Manager user: %w", err)
2727
}
28-
return *resp.Username, *resp.Description, nil
28+
29+
if resp.Username == nil || *resp.Username == "" {
30+
// Should never happen, username is auto-generated
31+
return "", fmt.Errorf("username is empty")
32+
}
33+
34+
var userLabel string
35+
if resp.Description == nil || *resp.Description == "" {
36+
userLabel = fmt.Sprintf("%q", *resp.Username)
37+
} else {
38+
userLabel = fmt.Sprintf("%q (%s)", *resp.Username, *resp.Description)
39+
}
40+
return userLabel, nil
2941
}

internal/pkg/services/secrets-manager/utils/utils_test.go

Lines changed: 41 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -93,22 +93,51 @@ func TestGetInstanceName(t *testing.T) {
9393

9494
func TestGetUserDetails(t *testing.T) {
9595
tests := []struct {
96-
description string
97-
getUserFails bool
98-
GetUserResp *secretsmanager.User
99-
isValid bool
100-
expectedUserName string
101-
expectedDescription string
96+
description string
97+
getUserFails bool
98+
GetUserResp *secretsmanager.User
99+
isValid bool
100+
expectedOutput string
102101
}{
103102
{
104103
description: "base",
105104
GetUserResp: &secretsmanager.User{
106105
Username: utils.Ptr(testUserName),
107106
Description: utils.Ptr(testDescription),
108107
},
109-
isValid: true,
110-
expectedUserName: testUserName,
111-
expectedDescription: testDescription,
108+
isValid: true,
109+
expectedOutput: fmt.Sprintf("%q (%s)", testUserName, testDescription),
110+
},
111+
{
112+
description: "user has no description",
113+
GetUserResp: &secretsmanager.User{
114+
Username: utils.Ptr(testUserName),
115+
},
116+
isValid: true,
117+
expectedOutput: fmt.Sprintf("%q", testUserName),
118+
},
119+
{
120+
description: "user has empty description",
121+
GetUserResp: &secretsmanager.User{
122+
Username: utils.Ptr(testUserName),
123+
Description: utils.Ptr(""),
124+
},
125+
isValid: true,
126+
expectedOutput: fmt.Sprintf("%q", testUserName),
127+
},
128+
{
129+
description: "user has empty username",
130+
GetUserResp: &secretsmanager.User{
131+
Username: utils.Ptr(""),
132+
},
133+
isValid: false,
134+
},
135+
{
136+
description: "user has no username",
137+
GetUserResp: &secretsmanager.User{
138+
Username: nil,
139+
},
140+
isValid: false,
112141
},
113142
{
114143
description: "get user fails",
@@ -124,7 +153,7 @@ func TestGetUserDetails(t *testing.T) {
124153
getUserResp: tt.GetUserResp,
125154
}
126155

127-
username, description, err := GetUserDetails(context.Background(), client, testProjectId, testInstanceId, testUserId)
156+
userLabel, err := GetUserLabel(context.Background(), client, testProjectId, testInstanceId, testUserId)
128157

129158
if tt.isValid && err != nil {
130159
t.Errorf("failed on valid input")
@@ -135,11 +164,8 @@ func TestGetUserDetails(t *testing.T) {
135164
if !tt.isValid {
136165
return
137166
}
138-
if username != tt.expectedUserName {
139-
t.Errorf("expected username to be %s, got %s", tt.expectedUserName, username)
140-
}
141-
if description != tt.expectedDescription {
142-
t.Errorf("expected description to be %s, got %s", tt.expectedDescription, description)
167+
if userLabel != tt.expectedOutput {
168+
t.Errorf("expected user label to be %s, got %s", tt.expectedOutput, userLabel)
143169
}
144170
})
145171
}

0 commit comments

Comments
 (0)