Skip to content

Commit 1bbac6a

Browse files
committed
test(dbauthz): migrate TestSystemFunctions to mocked db
- Convert many System functions to s.Mocked with gomock - Add expectations for read/update/create/delete system paths - Fix UpdateWorkspaceBuildCostByID expectation (returns error)
1 parent d5f03c2 commit 1bbac6a

File tree

1 file changed

+84
-86
lines changed

1 file changed

+84
-86
lines changed

coderd/database/dbauthz/dbauthz_test.go

Lines changed: 84 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -3778,119 +3778,117 @@ func (s *MethodTestSuite) TestCryptoKeys() {
37783778
}
37793779

37803780
func (s *MethodTestSuite) TestSystemFunctions() {
3781-
s.Run("UpdateUserLinkedID", s.Subtest(func(db database.Store, check *expects) {
3782-
u := dbgen.User(s.T(), db, database.User{})
3783-
l := dbgen.UserLink(s.T(), db, database.UserLink{UserID: u.ID})
3784-
check.Args(database.UpdateUserLinkedIDParams{
3785-
UserID: u.ID,
3786-
LinkedID: l.LinkedID,
3787-
LoginType: database.LoginTypeGithub,
3788-
}).Asserts(rbac.ResourceSystem, policy.ActionUpdate).Returns(l)
3789-
}))
3790-
s.Run("GetLatestWorkspaceAppStatusesByWorkspaceIDs", s.Subtest(func(db database.Store, check *expects) {
3791-
check.Args([]uuid.UUID{}).Asserts(rbac.ResourceSystem, policy.ActionRead)
3781+
s.Run("UpdateUserLinkedID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
3782+
u := testutil.Fake(s.T(), faker, database.User{})
3783+
l := testutil.Fake(s.T(), faker, database.UserLink{UserID: u.ID})
3784+
arg := database.UpdateUserLinkedIDParams{UserID: u.ID, LinkedID: l.LinkedID, LoginType: database.LoginTypeGithub}
3785+
dbm.EXPECT().UpdateUserLinkedID(gomock.Any(), arg).Return(l, nil).AnyTimes()
3786+
check.Args(arg).Asserts(rbac.ResourceSystem, policy.ActionUpdate).Returns(l)
3787+
}))
3788+
s.Run("GetLatestWorkspaceAppStatusesByWorkspaceIDs", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
3789+
ids := []uuid.UUID{uuid.New()}
3790+
dbm.EXPECT().GetLatestWorkspaceAppStatusesByWorkspaceIDs(gomock.Any(), ids).Return([]database.WorkspaceAppStatus{}, nil).AnyTimes()
3791+
check.Args(ids).Asserts(rbac.ResourceSystem, policy.ActionRead)
37923792
}))
3793-
s.Run("GetWorkspaceAppStatusesByAppIDs", s.Subtest(func(db database.Store, check *expects) {
3794-
check.Args([]uuid.UUID{}).Asserts(rbac.ResourceSystem, policy.ActionRead)
3793+
s.Run("GetWorkspaceAppStatusesByAppIDs", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
3794+
ids := []uuid.UUID{uuid.New()}
3795+
dbm.EXPECT().GetWorkspaceAppStatusesByAppIDs(gomock.Any(), ids).Return([]database.WorkspaceAppStatus{}, nil).AnyTimes()
3796+
check.Args(ids).Asserts(rbac.ResourceSystem, policy.ActionRead)
37953797
}))
3796-
s.Run("GetLatestWorkspaceBuildsByWorkspaceIDs", s.Subtest(func(db database.Store, check *expects) {
3797-
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
3798-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{})
3799-
b := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{WorkspaceID: ws.ID})
3800-
check.Args([]uuid.UUID{ws.ID}).Asserts(rbac.ResourceSystem, policy.ActionRead).Returns(slice.New(b))
3798+
s.Run("GetLatestWorkspaceBuildsByWorkspaceIDs", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
3799+
wsID := uuid.New()
3800+
b := testutil.Fake(s.T(), faker, database.WorkspaceBuild{})
3801+
dbm.EXPECT().GetLatestWorkspaceBuildsByWorkspaceIDs(gomock.Any(), []uuid.UUID{wsID}).Return([]database.WorkspaceBuild{b}, nil).AnyTimes()
3802+
check.Args([]uuid.UUID{wsID}).Asserts(rbac.ResourceSystem, policy.ActionRead).Returns(slice.New(b))
38013803
}))
3802-
s.Run("UpsertDefaultProxy", s.Subtest(func(db database.Store, check *expects) {
3803-
check.Args(database.UpsertDefaultProxyParams{}).Asserts(rbac.ResourceSystem, policy.ActionUpdate).Returns()
3804+
s.Run("UpsertDefaultProxy", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
3805+
arg := database.UpsertDefaultProxyParams{}
3806+
dbm.EXPECT().UpsertDefaultProxy(gomock.Any(), arg).Return(nil).AnyTimes()
3807+
check.Args(arg).Asserts(rbac.ResourceSystem, policy.ActionUpdate).Returns()
38043808
}))
3805-
s.Run("GetUserLinkByLinkedID", s.Subtest(func(db database.Store, check *expects) {
3806-
u := dbgen.User(s.T(), db, database.User{})
3807-
l := dbgen.UserLink(s.T(), db, database.UserLink{UserID: u.ID})
3809+
s.Run("GetUserLinkByLinkedID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
3810+
l := testutil.Fake(s.T(), faker, database.UserLink{})
3811+
dbm.EXPECT().GetUserLinkByLinkedID(gomock.Any(), l.LinkedID).Return(l, nil).AnyTimes()
38083812
check.Args(l.LinkedID).Asserts(rbac.ResourceSystem, policy.ActionRead).Returns(l)
38093813
}))
3810-
s.Run("GetUserLinkByUserIDLoginType", s.Subtest(func(db database.Store, check *expects) {
3811-
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
3812-
l := dbgen.UserLink(s.T(), db, database.UserLink{})
3813-
check.Args(database.GetUserLinkByUserIDLoginTypeParams{
3814-
UserID: l.UserID,
3815-
LoginType: l.LoginType,
3816-
}).Asserts(rbac.ResourceSystem, policy.ActionRead).Returns(l)
3814+
s.Run("GetUserLinkByUserIDLoginType", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
3815+
l := testutil.Fake(s.T(), faker, database.UserLink{})
3816+
arg := database.GetUserLinkByUserIDLoginTypeParams{UserID: l.UserID, LoginType: l.LoginType}
3817+
dbm.EXPECT().GetUserLinkByUserIDLoginType(gomock.Any(), arg).Return(l, nil).AnyTimes()
3818+
check.Args(arg).Asserts(rbac.ResourceSystem, policy.ActionRead).Returns(l)
38173819
}))
3818-
s.Run("GetActiveUserCount", s.Subtest(func(db database.Store, check *expects) {
3820+
s.Run("GetActiveUserCount", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
3821+
dbm.EXPECT().GetActiveUserCount(gomock.Any(), false).Return(int64(0), nil).AnyTimes()
38193822
check.Args(false).Asserts(rbac.ResourceSystem, policy.ActionRead).Returns(int64(0))
38203823
}))
3821-
s.Run("GetUnexpiredLicenses", s.Subtest(func(db database.Store, check *expects) {
3824+
s.Run("GetUnexpiredLicenses", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
3825+
dbm.EXPECT().GetUnexpiredLicenses(gomock.Any()).Return([]database.License{}, nil).AnyTimes()
38223826
check.Args().Asserts(rbac.ResourceSystem, policy.ActionRead)
38233827
}))
3824-
s.Run("GetAuthorizationUserRoles", s.Subtest(func(db database.Store, check *expects) {
3825-
u := dbgen.User(s.T(), db, database.User{})
3828+
s.Run("GetAuthorizationUserRoles", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
3829+
u := testutil.Fake(s.T(), faker, database.User{})
3830+
dbm.EXPECT().GetAuthorizationUserRoles(gomock.Any(), u.ID).Return(database.GetAuthorizationUserRolesRow{}, nil).AnyTimes()
38263831
check.Args(u.ID).Asserts(rbac.ResourceSystem, policy.ActionRead)
38273832
}))
3828-
s.Run("GetDERPMeshKey", s.Subtest(func(db database.Store, check *expects) {
3829-
db.InsertDERPMeshKey(context.Background(), "testing")
3833+
s.Run("GetDERPMeshKey", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
3834+
dbm.EXPECT().GetDERPMeshKey(gomock.Any()).Return("testing", nil).AnyTimes()
38303835
check.Args().Asserts(rbac.ResourceSystem, policy.ActionRead)
38313836
}))
3832-
s.Run("InsertDERPMeshKey", s.Subtest(func(db database.Store, check *expects) {
3837+
s.Run("InsertDERPMeshKey", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
3838+
dbm.EXPECT().InsertDERPMeshKey(gomock.Any(), "value").Return(nil).AnyTimes()
38333839
check.Args("value").Asserts(rbac.ResourceSystem, policy.ActionCreate).Returns()
38343840
}))
3835-
s.Run("InsertDeploymentID", s.Subtest(func(db database.Store, check *expects) {
3841+
s.Run("InsertDeploymentID", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
3842+
dbm.EXPECT().InsertDeploymentID(gomock.Any(), "value").Return(nil).AnyTimes()
38363843
check.Args("value").Asserts(rbac.ResourceSystem, policy.ActionCreate).Returns()
38373844
}))
3838-
s.Run("InsertReplica", s.Subtest(func(db database.Store, check *expects) {
3839-
check.Args(database.InsertReplicaParams{
3840-
ID: uuid.New(),
3841-
}).Asserts(rbac.ResourceSystem, policy.ActionCreate)
3842-
}))
3843-
s.Run("UpdateReplica", s.Subtest(func(db database.Store, check *expects) {
3844-
replica, err := db.InsertReplica(context.Background(), database.InsertReplicaParams{ID: uuid.New()})
3845-
require.NoError(s.T(), err)
3846-
check.Args(database.UpdateReplicaParams{
3847-
ID: replica.ID,
3848-
DatabaseLatency: 100,
3849-
}).Asserts(rbac.ResourceSystem, policy.ActionUpdate)
3850-
}))
3851-
s.Run("DeleteReplicasUpdatedBefore", s.Subtest(func(db database.Store, check *expects) {
3852-
_, err := db.InsertReplica(context.Background(), database.InsertReplicaParams{ID: uuid.New(), UpdatedAt: time.Now()})
3853-
require.NoError(s.T(), err)
3854-
check.Args(time.Now().Add(time.Hour)).Asserts(rbac.ResourceSystem, policy.ActionDelete)
3855-
}))
3856-
s.Run("GetReplicasUpdatedAfter", s.Subtest(func(db database.Store, check *expects) {
3857-
_, err := db.InsertReplica(context.Background(), database.InsertReplicaParams{ID: uuid.New(), UpdatedAt: time.Now()})
3858-
require.NoError(s.T(), err)
3859-
check.Args(time.Now().Add(time.Hour*-1)).Asserts(rbac.ResourceSystem, policy.ActionRead)
3860-
}))
3861-
s.Run("GetUserCount", s.Subtest(func(db database.Store, check *expects) {
3845+
s.Run("InsertReplica", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
3846+
arg := database.InsertReplicaParams{ID: uuid.New()}
3847+
dbm.EXPECT().InsertReplica(gomock.Any(), arg).Return(database.Replica{}, nil).AnyTimes()
3848+
check.Args(arg).Asserts(rbac.ResourceSystem, policy.ActionCreate)
3849+
}))
3850+
s.Run("UpdateReplica", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
3851+
rep := testutil.Fake(s.T(), faker, database.Replica{})
3852+
arg := database.UpdateReplicaParams{ID: rep.ID, DatabaseLatency: 100}
3853+
dbm.EXPECT().UpdateReplica(gomock.Any(), arg).Return(rep, nil).AnyTimes()
3854+
check.Args(arg).Asserts(rbac.ResourceSystem, policy.ActionUpdate)
3855+
}))
3856+
s.Run("DeleteReplicasUpdatedBefore", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
3857+
t := time.Now().Add(time.Hour)
3858+
dbm.EXPECT().DeleteReplicasUpdatedBefore(gomock.Any(), t).Return(nil).AnyTimes()
3859+
check.Args(t).Asserts(rbac.ResourceSystem, policy.ActionDelete)
3860+
}))
3861+
s.Run("GetReplicasUpdatedAfter", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
3862+
t := time.Now().Add(-time.Hour)
3863+
dbm.EXPECT().GetReplicasUpdatedAfter(gomock.Any(), t).Return([]database.Replica{}, nil).AnyTimes()
3864+
check.Args(t).Asserts(rbac.ResourceSystem, policy.ActionRead)
3865+
}))
3866+
s.Run("GetUserCount", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
3867+
dbm.EXPECT().GetUserCount(gomock.Any(), false).Return(int64(0), nil).AnyTimes()
38623868
check.Args(false).Asserts(rbac.ResourceSystem, policy.ActionRead).Returns(int64(0))
38633869
}))
3864-
s.Run("GetTemplates", s.Subtest(func(db database.Store, check *expects) {
3865-
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
3866-
_ = dbgen.Template(s.T(), db, database.Template{})
3870+
s.Run("GetTemplates", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
3871+
dbm.EXPECT().GetTemplates(gomock.Any()).Return([]database.Template{}, nil).AnyTimes()
38673872
check.Args().Asserts(rbac.ResourceSystem, policy.ActionRead)
38683873
}))
3869-
s.Run("UpdateWorkspaceBuildCostByID", s.Subtest(func(db database.Store, check *expects) {
3870-
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
3871-
b := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{})
3872-
o := b
3873-
o.DailyCost = 10
3874-
check.Args(database.UpdateWorkspaceBuildCostByIDParams{
3875-
ID: b.ID,
3876-
DailyCost: 10,
3877-
}).Asserts(rbac.ResourceSystem, policy.ActionUpdate)
3874+
s.Run("UpdateWorkspaceBuildCostByID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
3875+
b := testutil.Fake(s.T(), faker, database.WorkspaceBuild{})
3876+
arg := database.UpdateWorkspaceBuildCostByIDParams{ID: b.ID, DailyCost: 10}
3877+
dbm.EXPECT().UpdateWorkspaceBuildCostByID(gomock.Any(), arg).Return(nil).AnyTimes()
3878+
check.Args(arg).Asserts(rbac.ResourceSystem, policy.ActionUpdate)
38783879
}))
3879-
s.Run("UpdateWorkspaceBuildProvisionerStateByID", s.Subtest(func(db database.Store, check *expects) {
3880-
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
3881-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{})
3882-
build := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{WorkspaceID: ws.ID, JobID: uuid.New()})
3883-
check.Args(database.UpdateWorkspaceBuildProvisionerStateByIDParams{
3884-
ID: build.ID,
3885-
ProvisionerState: []byte("testing"),
3886-
}).Asserts(rbac.ResourceSystem, policy.ActionUpdate)
3880+
s.Run("UpdateWorkspaceBuildProvisionerStateByID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
3881+
b := testutil.Fake(s.T(), faker, database.WorkspaceBuild{})
3882+
arg := database.UpdateWorkspaceBuildProvisionerStateByIDParams{ID: b.ID, ProvisionerState: []byte("testing")}
3883+
dbm.EXPECT().UpdateWorkspaceBuildProvisionerStateByID(gomock.Any(), arg).Return(nil).AnyTimes()
3884+
check.Args(arg).Asserts(rbac.ResourceSystem, policy.ActionUpdate)
38873885
}))
3888-
s.Run("UpsertLastUpdateCheck", s.Subtest(func(db database.Store, check *expects) {
3886+
s.Run("UpsertLastUpdateCheck", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
3887+
dbm.EXPECT().UpsertLastUpdateCheck(gomock.Any(), "value").Return(nil).AnyTimes()
38893888
check.Args("value").Asserts(rbac.ResourceSystem, policy.ActionUpdate)
38903889
}))
3891-
s.Run("GetLastUpdateCheck", s.Subtest(func(db database.Store, check *expects) {
3892-
err := db.UpsertLastUpdateCheck(context.Background(), "value")
3893-
require.NoError(s.T(), err)
3890+
s.Run("GetLastUpdateCheck", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
3891+
dbm.EXPECT().GetLastUpdateCheck(gomock.Any()).Return("value", nil).AnyTimes()
38943892
check.Args().Asserts(rbac.ResourceSystem, policy.ActionRead)
38953893
}))
38963894
s.Run("GetWorkspaceBuildsCreatedAfter", s.Subtest(func(db database.Store, check *expects) {

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy