Skip to content

Commit 11c13cd

Browse files
committed
test(dbauthz): migrate TestFile tests to mocked db\n\n- Use s.Mocked with dbmock and gofakeit\n- Add expectations for GetFileByHashAndCreator, GetFileByID, GetFileIDByTemplateVersionID, InsertFile\n- Seed data with testutil.Fake\n\nRefs: coder/internal#869\nCo-authored-by: hugodutka <28019628+hugodutka@users.noreply.github.com>
1 parent 4f1db8b commit 11c13cd

File tree

1 file changed

+18
-14
lines changed

1 file changed

+18
-14
lines changed

coderd/database/dbauthz/dbauthz_test.go

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -448,28 +448,32 @@ func (s *MethodTestSuite) TestConnectionLogs() {
448448
}
449449

450450
func (s *MethodTestSuite) TestFile() {
451-
s.Run("GetFileByHashAndCreator", s.Subtest(func(db database.Store, check *expects) {
452-
f := dbgen.File(s.T(), db, database.File{})
451+
s.Run("GetFileByHashAndCreator", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
452+
f := testutil.Fake(s.T(), faker, database.File{})
453+
dbm.EXPECT().GetFileByHashAndCreator(gomock.Any(), gomock.Any()).Return(f, nil).AnyTimes()
454+
// dbauthz may attempt to check template access on NotAuthorized; ensure mock handles it.
455+
dbm.EXPECT().GetFileTemplates(gomock.Any(), f.ID).Return([]database.GetFileTemplatesRow{}, nil).AnyTimes()
453456
check.Args(database.GetFileByHashAndCreatorParams{
454457
Hash: f.Hash,
455458
CreatedBy: f.CreatedBy,
456459
}).Asserts(f, policy.ActionRead).Returns(f)
457460
}))
458-
s.Run("GetFileByID", s.Subtest(func(db database.Store, check *expects) {
459-
f := dbgen.File(s.T(), db, database.File{})
461+
s.Run("GetFileByID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
462+
f := testutil.Fake(s.T(), faker, database.File{})
463+
dbm.EXPECT().GetFileByID(gomock.Any(), f.ID).Return(f, nil).AnyTimes()
464+
dbm.EXPECT().GetFileTemplates(gomock.Any(), f.ID).Return([]database.GetFileTemplatesRow{}, nil).AnyTimes()
460465
check.Args(f.ID).Asserts(f, policy.ActionRead).Returns(f)
461466
}))
462-
s.Run("GetFileIDByTemplateVersionID", s.Subtest(func(db database.Store, check *expects) {
463-
o := dbgen.Organization(s.T(), db, database.Organization{})
464-
u := dbgen.User(s.T(), db, database.User{})
465-
_ = dbgen.OrganizationMember(s.T(), db, database.OrganizationMember{OrganizationID: o.ID, UserID: u.ID})
466-
f := dbgen.File(s.T(), db, database.File{CreatedBy: u.ID})
467-
j := dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{StorageMethod: database.ProvisionerStorageMethodFile, FileID: f.ID})
468-
tv := dbgen.TemplateVersion(s.T(), db, database.TemplateVersion{OrganizationID: o.ID, JobID: j.ID, CreatedBy: u.ID})
469-
check.Args(tv.ID).Asserts(rbac.ResourceFile.WithID(f.ID), policy.ActionRead).Returns(f.ID)
467+
s.Run("GetFileIDByTemplateVersionID", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
468+
tvID := uuid.New()
469+
fileID := uuid.New()
470+
dbm.EXPECT().GetFileIDByTemplateVersionID(gomock.Any(), tvID).Return(fileID, nil).AnyTimes()
471+
check.Args(tvID).Asserts(rbac.ResourceFile.WithID(fileID), policy.ActionRead).Returns(fileID)
470472
}))
471-
s.Run("InsertFile", s.Subtest(func(db database.Store, check *expects) {
472-
u := dbgen.User(s.T(), db, database.User{})
473+
s.Run("InsertFile", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
474+
u := testutil.Fake(s.T(), faker, database.User{})
475+
ret := testutil.Fake(s.T(), faker, database.File{CreatedBy: u.ID})
476+
dbm.EXPECT().InsertFile(gomock.Any(), gomock.Any()).Return(ret, nil).AnyTimes()
473477
check.Args(database.InsertFileParams{
474478
CreatedBy: u.ID,
475479
}).Asserts(rbac.ResourceFile.WithOwner(u.ID.String()), policy.ActionCreate)

0 commit comments

Comments
 (0)