Skip to content

Commit eea0aee

Browse files
committed
add get group endpoint w/ tests
1 parent bf13f37 commit eea0aee

File tree

3 files changed

+66
-1
lines changed

3 files changed

+66
-1
lines changed

coderd/groups.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,23 @@ func (api *API) deleteGroup(rw http.ResponseWriter, r *http.Request) {
161161
}
162162

163163
func (api *API) group(rw http.ResponseWriter, r *http.Request) {
164+
var (
165+
ctx = r.Context()
166+
group = httpmw.GroupParam(r)
167+
)
168+
169+
if !api.Authorize(r, rbac.ActionRead, rbac.ResourceTemplate) {
170+
httpapi.ResourceNotFound(rw)
171+
return
172+
}
173+
174+
users, err := api.Database.GetGroupMembers(ctx, group.ID)
175+
if err != nil && !xerrors.Is(err, sql.ErrNoRows) {
176+
httpapi.InternalServerError(rw, err)
177+
return
178+
}
164179

180+
httpapi.Write(rw, http.StatusOK, convertGroup(group, users))
165181
}
166182

167183
func (api *API) groups(rw http.ResponseWriter, r *http.Request) {

coderd/groups_test.go

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,3 +172,52 @@ func TestPatchGroup(t *testing.T) {
172172
require.Equal(t, http.StatusBadRequest, cerr.StatusCode())
173173
})
174174
}
175+
176+
// TODO: test auth.
177+
func TestGroup(t *testing.T) {
178+
t.Parallel()
179+
180+
t.Run("OK", func(t *testing.T) {
181+
t.Parallel()
182+
183+
client := coderdtest.New(t, nil)
184+
user := coderdtest.CreateFirstUser(t, client)
185+
186+
ctx, _ := testutil.Context(t)
187+
group, err := client.CreateGroup(ctx, user.OrganizationID, codersdk.CreateGroupRequest{
188+
Name: "hi",
189+
})
190+
require.NoError(t, err)
191+
192+
ggroup, err := client.Group(ctx, group.ID)
193+
require.NoError(t, err)
194+
require.Equal(t, group, ggroup)
195+
})
196+
197+
t.Run("WithUsers", func(t *testing.T) {
198+
t.Parallel()
199+
200+
client := coderdtest.New(t, nil)
201+
user := coderdtest.CreateFirstUser(t, client)
202+
203+
_, user2 := coderdtest.CreateAnotherUserWithUser(t, client, user.OrganizationID)
204+
_, user3 := coderdtest.CreateAnotherUserWithUser(t, client, user.OrganizationID)
205+
206+
ctx, _ := testutil.Context(t)
207+
group, err := client.CreateGroup(ctx, user.OrganizationID, codersdk.CreateGroupRequest{
208+
Name: "hi",
209+
})
210+
require.NoError(t, err)
211+
212+
group, err = client.PatchGroup(ctx, group.ID, codersdk.PatchGroupRequest{
213+
AddUsers: []string{user2.ID.String(), user3.ID.String()},
214+
})
215+
require.NoError(t, err)
216+
require.Contains(t, group.Members, user2)
217+
require.Contains(t, group.Members, user3)
218+
219+
ggroup, err := client.Group(ctx, group.ID)
220+
require.NoError(t, err)
221+
require.Equal(t, group, ggroup)
222+
})
223+
}

codersdk/groups.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func (c *Client) Group(ctx context.Context, group uuid.UUID) (Group, error) {
6565
}
6666
defer res.Body.Close()
6767

68-
if res.StatusCode != http.StatusCreated {
68+
if res.StatusCode != http.StatusOK {
6969
return Group{}, readBodyAsError(res)
7070
}
7171
var resp Group

0 commit comments

Comments
 (0)