Skip to content

Commit 4ec6adb

Browse files
committed
dbgen.GroupMember now fails when a supplied user or group doesn't exist
1 parent 08646da commit 4ec6adb

File tree

2 files changed

+26
-14
lines changed

2 files changed

+26
-14
lines changed

coderd/database/dbauthz/dbauthz_test.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -305,8 +305,10 @@ func (s *MethodTestSuite) TestGroup() {
305305
}))
306306
s.Run("DeleteGroupMemberFromGroup", s.Subtest(func(db database.Store, check *expects) {
307307
g := dbgen.Group(s.T(), db, database.Group{})
308+
u := dbgen.User(s.T(), db, database.User{})
308309
m := dbgen.GroupMember(s.T(), db, database.GroupMemberTable{
309310
GroupID: g.ID,
311+
UserID: u.ID,
310312
})
311313
check.Args(database.DeleteGroupMemberFromGroupParams{
312314
UserID: m.UserID,
@@ -326,15 +328,18 @@ func (s *MethodTestSuite) TestGroup() {
326328
}))
327329
s.Run("GetGroupMembersByGroupID", s.Subtest(func(db database.Store, check *expects) {
328330
g := dbgen.Group(s.T(), db, database.Group{})
329-
gm := dbgen.GroupMember(s.T(), db, database.GroupMemberTable{GroupID: g.ID})
331+
u := dbgen.User(s.T(), db, database.User{})
332+
gm := dbgen.GroupMember(s.T(), db, database.GroupMemberTable{GroupID: g.ID, UserID: u.ID})
330333
check.Args(g.ID).Asserts(gm, policy.ActionRead)
331334
}))
332335
s.Run("GetGroupMembersCountByGroupID", s.Subtest(func(db database.Store, check *expects) {
333336
g := dbgen.Group(s.T(), db, database.Group{})
334337
check.Args(g.ID).Asserts(g, policy.ActionRead)
335338
}))
336339
s.Run("GetGroupMembers", s.Subtest(func(db database.Store, check *expects) {
337-
dbgen.GroupMember(s.T(), db, database.GroupMemberTable{})
340+
g := dbgen.Group(s.T(), db, database.Group{})
341+
u := dbgen.User(s.T(), db, database.User{})
342+
dbgen.GroupMember(s.T(), db, database.GroupMemberTable{GroupID: g.ID, UserID: u.ID})
338343
check.Asserts(rbac.ResourceSystem, policy.ActionRead)
339344
}))
340345
s.Run("GetGroups", s.Subtest(func(db database.Store, check *expects) {
@@ -343,7 +348,8 @@ func (s *MethodTestSuite) TestGroup() {
343348
}))
344349
s.Run("GetGroupsByOrganizationAndUserID", s.Subtest(func(db database.Store, check *expects) {
345350
g := dbgen.Group(s.T(), db, database.Group{})
346-
gm := dbgen.GroupMember(s.T(), db, database.GroupMemberTable{GroupID: g.ID})
351+
u := dbgen.User(s.T(), db, database.User{})
352+
gm := dbgen.GroupMember(s.T(), db, database.GroupMemberTable{GroupID: g.ID, UserID: u.ID})
347353
check.Args(database.GetGroupsByOrganizationAndUserIDParams{
348354
OrganizationID: g.OrganizationID,
349355
UserID: gm.UserID,

coderd/database/dbgen/dbgen.go

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -375,11 +375,19 @@ func Group(t testing.TB, db database.Store, orig database.Group) database.Group
375375
return group
376376
}
377377

378-
func GroupMember(t testing.TB, db database.Store, orig database.GroupMemberTable) database.GroupMember {
379-
member := database.GroupMemberTable{
380-
UserID: takeFirst(orig.UserID, uuid.New()),
381-
GroupID: takeFirst(orig.GroupID, uuid.New()),
382-
}
378+
// GroupMember requires a user + group to already exist.
379+
// Example for creating a group member for a random group + user.
380+
//
381+
// GroupMember(t, db, database.GroupMemberTable{
382+
// UserID: User(t, db, database.User{}).ID,
383+
// GroupID: Group(t, db, database.Group{
384+
// OrganizationID: must(db.GetDefaultOrganization(genCtx)).ID,
385+
// }).ID,
386+
// })
387+
func GroupMember(t testing.TB, db database.Store, member database.GroupMemberTable) database.GroupMember {
388+
require.NotEqual(t, member.UserID, uuid.Nil, "A user id is required to use 'dbgen.GroupMember', use 'dbgen.User'.")
389+
require.NotEqual(t, member.GroupID, uuid.Nil, "A group id is required to use 'dbgen.GroupMember', use 'dbgen.Group'.")
390+
383391
//nolint:gosimple
384392
err := db.InsertGroupMember(genCtx, database.InsertGroupMemberParams{
385393
UserID: member.UserID,
@@ -389,17 +397,15 @@ func GroupMember(t testing.TB, db database.Store, orig database.GroupMemberTable
389397

390398
user, err := db.GetUserByID(genCtx, member.UserID)
391399
if errors.Is(err, sql.ErrNoRows) {
392-
user = User(t, db, database.User{ID: member.UserID})
393-
} else {
394-
require.NoError(t, err, "get user by id")
400+
require.NoErrorf(t, err, "'dbgen.GroupMember' failed as the user with id %s does not exist. A user is required to use this function, use 'dbgen.User'.", member.UserID)
395401
}
402+
require.NoError(t, err, "get user by id")
396403

397404
group, err := db.GetGroupByID(genCtx, member.GroupID)
398405
if errors.Is(err, sql.ErrNoRows) {
399-
group = Group(t, db, database.Group{ID: member.GroupID})
400-
} else {
401-
require.NoError(t, err, "get group by id")
406+
require.NoErrorf(t, err, "'dbgen.GroupMember' failed as the group with id %s does not exist. A group is required to use this function, use 'dbgen.Group'.", member.GroupID)
402407
}
408+
require.NoError(t, err, "get group by id")
403409

404410
groupMember := database.GroupMember{
405411
UserID: user.ID,

0 commit comments

Comments
 (0)