Skip to content

Commit 8d1393c

Browse files
committed
add some tests
1 parent e682e13 commit 8d1393c

File tree

3 files changed

+70
-5
lines changed

3 files changed

+70
-5
lines changed

coderd/database/databasefake/databasefake.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2701,6 +2701,7 @@ func (q *fakeQuerier) UpdateGroupByID(_ context.Context, arg database.UpdateGrou
27012701
for i, group := range q.groups {
27022702
if group.ID == arg.ID {
27032703
group.Name = arg.Name
2704+
group.AvatarURL = arg.AvatarURL
27042705
q.groups[i] = group
27052706
return group, nil
27062707
}
@@ -3037,6 +3038,7 @@ func (q *fakeQuerier) InsertGroup(_ context.Context, arg database.InsertGroupPar
30373038
ID: arg.ID,
30383039
Name: arg.Name,
30393040
OrganizationID: arg.OrganizationID,
3041+
AvatarURL: arg.AvatarURL,
30403042
}
30413043

30423044
q.groups = append(q.groups, group)

enterprise/coderd/groups.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,8 @@ func (api *API) patchGroup(rw http.ResponseWriter, r *http.Request) {
130130
}
131131

132132
err := api.Database.InTx(func(tx database.Store) error {
133-
group, err := tx.GetGroupByID(ctx, group.ID)
133+
var err error
134+
group, err = tx.GetGroupByID(ctx, group.ID)
134135
if err != nil {
135136
return xerrors.Errorf("get group by ID: %w", err)
136137
}

enterprise/coderd/groups_test.go

Lines changed: 66 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66

77
"github.com/google/uuid"
88
"github.com/stretchr/testify/require"
9+
"k8s.io/utils/pointer"
910

1011
"github.com/coder/coder/coderd/coderdtest"
1112
"github.com/coder/coder/coderd/database"
@@ -28,10 +29,12 @@ func TestCreateGroup(t *testing.T) {
2829
})
2930
ctx, _ := testutil.Context(t)
3031
group, err := client.CreateGroup(ctx, user.OrganizationID, codersdk.CreateGroupRequest{
31-
Name: "hi",
32+
Name: "hi",
33+
AvatarURL: "https://example.com",
3234
})
3335
require.NoError(t, err)
3436
require.Equal(t, "hi", group.Name)
37+
require.Equal(t, "https://example.com", group.AvatarURL)
3538
require.Empty(t, group.Members)
3639
require.NotEqual(t, uuid.Nil.String(), group.ID.String())
3740
})
@@ -83,7 +86,7 @@ func TestCreateGroup(t *testing.T) {
8386
func TestPatchGroup(t *testing.T) {
8487
t.Parallel()
8588

86-
t.Run("Name", func(t *testing.T) {
89+
t.Run("OK", func(t *testing.T) {
8790
t.Parallel()
8891

8992
client := coderdenttest.New(t, nil)
@@ -94,15 +97,43 @@ func TestPatchGroup(t *testing.T) {
9497
})
9598
ctx, _ := testutil.Context(t)
9699
group, err := client.CreateGroup(ctx, user.OrganizationID, codersdk.CreateGroupRequest{
97-
Name: "hi",
100+
Name: "hi",
101+
AvatarURL: "https://example.com",
98102
})
99103
require.NoError(t, err)
100104

101105
group, err = client.PatchGroup(ctx, group.ID, codersdk.PatchGroupRequest{
102-
Name: "bye",
106+
Name: "bye",
107+
AvatarURL: pointer.String("https://google.com"),
103108
})
104109
require.NoError(t, err)
105110
require.Equal(t, "bye", group.Name)
111+
require.Equal(t, "https://google.com", group.AvatarURL)
112+
})
113+
114+
// The FE sends a request from the edit page where the old name == new name.
115+
// This should pass since it's not really an error to update a group name
116+
// to itself.
117+
t.Run("SameNameOK", func(t *testing.T) {
118+
t.Parallel()
119+
120+
client := coderdenttest.New(t, nil)
121+
user := coderdtest.CreateFirstUser(t, client)
122+
123+
_ = coderdenttest.AddLicense(t, client, coderdenttest.LicenseOptions{
124+
TemplateRBACEnabled: true,
125+
})
126+
ctx, _ := testutil.Context(t)
127+
group, err := client.CreateGroup(ctx, user.OrganizationID, codersdk.CreateGroupRequest{
128+
Name: "hi",
129+
})
130+
require.NoError(t, err)
131+
132+
group, err = client.PatchGroup(ctx, group.ID, codersdk.PatchGroupRequest{
133+
Name: "hi",
134+
})
135+
require.NoError(t, err)
136+
require.Equal(t, "hi", group.Name)
106137
})
107138

108139
t.Run("AddUsers", func(t *testing.T) {
@@ -166,6 +197,37 @@ func TestPatchGroup(t *testing.T) {
166197
require.Contains(t, group.Members, user4)
167198
})
168199

200+
t.Run("NameConflict", func(t *testing.T) {
201+
t.Parallel()
202+
203+
client := coderdenttest.New(t, nil)
204+
user := coderdtest.CreateFirstUser(t, client)
205+
206+
_ = coderdenttest.AddLicense(t, client, coderdenttest.LicenseOptions{
207+
TemplateRBACEnabled: true,
208+
})
209+
ctx, _ := testutil.Context(t)
210+
group1, err := client.CreateGroup(ctx, user.OrganizationID, codersdk.CreateGroupRequest{
211+
Name: "hi",
212+
AvatarURL: "https://example.com",
213+
})
214+
require.NoError(t, err)
215+
216+
group2, err := client.CreateGroup(ctx, user.OrganizationID, codersdk.CreateGroupRequest{
217+
Name: "bye",
218+
})
219+
require.NoError(t, err)
220+
221+
group1, err = client.PatchGroup(ctx, group1.ID, codersdk.PatchGroupRequest{
222+
Name: group2.Name,
223+
AvatarURL: pointer.String("https://google.com"),
224+
})
225+
require.Error(t, err)
226+
cerr, ok := codersdk.AsError(err)
227+
require.True(t, ok)
228+
require.Equal(t, http.StatusConflict, cerr.StatusCode())
229+
})
230+
169231
t.Run("UserNotExist", func(t *testing.T) {
170232
t.Parallel()
171233

0 commit comments

Comments
 (0)