Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ee06ad9

Browse files
committed
dbauthz: migrate initial TestWorkspace subtests to mocked DB
1 parent 2888055 commit ee06ad9

File tree

1 file changed

+47
-108
lines changed

1 file changed

+47
-108
lines changed

coderd/database/dbauthz/dbauthz_test.go

Lines changed: 47 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -1619,139 +1619,78 @@ func (s *MethodTestSuite) TestUser() {
16191619
}
16201620

16211621
func (s *MethodTestSuite) TestWorkspace() {
1622-
s.Run("GetWorkspaceByID", s.Subtest(func(db database.Store, check *expects) {
1623-
u := dbgen.User(s.T(), db, database.User{})
1624-
o := dbgen.Organization(s.T(), db, database.Organization{})
1625-
tpl := dbgen.Template(s.T(), db, database.Template{
1626-
OrganizationID: o.ID,
1627-
CreatedBy: u.ID,
1628-
})
1629-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{
1630-
OwnerID: u.ID,
1631-
OrganizationID: o.ID,
1632-
TemplateID: tpl.ID,
1633-
})
1634-
check.Args(ws.ID).Asserts(ws, policy.ActionRead)
1622+
s.Run("GetWorkspaceByID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1623+
ws := testutil.Fake(s.T(), faker, database.Workspace{})
1624+
dbm.EXPECT().GetWorkspaceByID(gomock.Any(), ws.ID).Return(ws, nil).AnyTimes()
1625+
check.Args(ws.ID).Asserts(ws, policy.ActionRead).Returns(ws)
16351626
}))
1636-
s.Run("GetWorkspaceByResourceID", s.Subtest(func(db database.Store, check *expects) {
1637-
u := dbgen.User(s.T(), db, database.User{})
1638-
o := dbgen.Organization(s.T(), db, database.Organization{})
1639-
j := dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{Type: database.ProvisionerJobTypeWorkspaceBuild})
1640-
tpl := dbgen.Template(s.T(), db, database.Template{CreatedBy: u.ID, OrganizationID: o.ID})
1641-
tv := dbgen.TemplateVersion(s.T(), db, database.TemplateVersion{
1642-
TemplateID: uuid.NullUUID{UUID: tpl.ID, Valid: true},
1643-
JobID: j.ID,
1644-
OrganizationID: o.ID,
1645-
CreatedBy: u.ID,
1646-
})
1647-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{OwnerID: u.ID, TemplateID: tpl.ID, OrganizationID: o.ID})
1648-
_ = dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{WorkspaceID: ws.ID, JobID: j.ID, TemplateVersionID: tv.ID})
1649-
res := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: j.ID})
1650-
check.Args(res.ID).Asserts(ws, policy.ActionRead)
1627+
s.Run("GetWorkspaceByResourceID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1628+
ws := testutil.Fake(s.T(), faker, database.Workspace{})
1629+
res := testutil.Fake(s.T(), faker, database.WorkspaceResource{})
1630+
dbm.EXPECT().GetWorkspaceByResourceID(gomock.Any(), res.ID).Return(ws, nil).AnyTimes()
1631+
check.Args(res.ID).Asserts(ws, policy.ActionRead).Returns(ws)
16511632
}))
1652-
s.Run("GetWorkspaces", s.Subtest(func(_ database.Store, check *expects) {
1633+
s.Run("GetWorkspaces", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
1634+
arg := database.GetWorkspacesParams{}
1635+
dbm.EXPECT().GetAuthorizedWorkspaces(gomock.Any(), arg, gomock.Any()).Return([]database.GetWorkspacesRow{}, nil).AnyTimes()
16531636
// No asserts here because SQLFilter.
1654-
check.Args(database.GetWorkspacesParams{}).Asserts()
1637+
check.Args(arg).Asserts()
16551638
}))
1656-
s.Run("GetAuthorizedWorkspaces", s.Subtest(func(_ database.Store, check *expects) {
1639+
s.Run("GetAuthorizedWorkspaces", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
1640+
arg := database.GetWorkspacesParams{}
1641+
dbm.EXPECT().GetAuthorizedWorkspaces(gomock.Any(), arg, gomock.Any()).Return([]database.GetWorkspacesRow{}, nil).AnyTimes()
16571642
// No asserts here because SQLFilter.
1658-
check.Args(database.GetWorkspacesParams{}, emptyPreparedAuthorized{}).Asserts()
1643+
check.Args(arg, emptyPreparedAuthorized{}).Asserts()
16591644
}))
1660-
s.Run("GetWorkspacesAndAgentsByOwnerID", s.Subtest(func(db database.Store, check *expects) {
1661-
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
1662-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{})
1663-
build := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{WorkspaceID: ws.ID, JobID: uuid.New()})
1664-
_ = dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{ID: build.JobID, Type: database.ProvisionerJobTypeWorkspaceBuild})
1665-
res := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: build.JobID})
1666-
_ = dbgen.WorkspaceAgent(s.T(), db, database.WorkspaceAgent{ResourceID: res.ID})
1645+
s.Run("GetWorkspacesAndAgentsByOwnerID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1646+
ws := testutil.Fake(s.T(), faker, database.Workspace{})
1647+
dbm.EXPECT().GetAuthorizedWorkspacesAndAgentsByOwnerID(gomock.Any(), ws.OwnerID, gomock.Any()).Return([]database.GetWorkspacesAndAgentsByOwnerIDRow{}, nil).AnyTimes()
16671648
// No asserts here because SQLFilter.
16681649
check.Args(ws.OwnerID).Asserts()
16691650
}))
1670-
s.Run("GetAuthorizedWorkspacesAndAgentsByOwnerID", s.Subtest(func(db database.Store, check *expects) {
1671-
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
1672-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{})
1673-
build := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{WorkspaceID: ws.ID, JobID: uuid.New()})
1674-
_ = dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{ID: build.JobID, Type: database.ProvisionerJobTypeWorkspaceBuild})
1675-
res := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: build.JobID})
1676-
_ = dbgen.WorkspaceAgent(s.T(), db, database.WorkspaceAgent{ResourceID: res.ID})
1651+
s.Run("GetAuthorizedWorkspacesAndAgentsByOwnerID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1652+
ws := testutil.Fake(s.T(), faker, database.Workspace{})
1653+
dbm.EXPECT().GetAuthorizedWorkspacesAndAgentsByOwnerID(gomock.Any(), ws.OwnerID, gomock.Any()).Return([]database.GetWorkspacesAndAgentsByOwnerIDRow{}, nil).AnyTimes()
16771654
// No asserts here because SQLFilter.
16781655
check.Args(ws.OwnerID, emptyPreparedAuthorized{}).Asserts()
16791656
}))
1680-
s.Run("GetWorkspaceBuildParametersByBuildIDs", s.Subtest(func(db database.Store, check *expects) {
1657+
s.Run("GetWorkspaceBuildParametersByBuildIDs", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
1658+
ids := []uuid.UUID{}
1659+
dbm.EXPECT().GetAuthorizedWorkspaceBuildParametersByBuildIDs(gomock.Any(), ids, gomock.Any()).Return([]database.WorkspaceBuildParameter{}, nil).AnyTimes()
16811660
// no asserts here because SQLFilter
1682-
check.Args([]uuid.UUID{}).Asserts()
1661+
check.Args(ids).Asserts()
16831662
}))
1684-
s.Run("GetAuthorizedWorkspaceBuildParametersByBuildIDs", s.Subtest(func(db database.Store, check *expects) {
1663+
s.Run("GetAuthorizedWorkspaceBuildParametersByBuildIDs", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
1664+
ids := []uuid.UUID{}
1665+
dbm.EXPECT().GetAuthorizedWorkspaceBuildParametersByBuildIDs(gomock.Any(), ids, gomock.Any()).Return([]database.WorkspaceBuildParameter{}, nil).AnyTimes()
16851666
// no asserts here because SQLFilter
1686-
check.Args([]uuid.UUID{}, emptyPreparedAuthorized{}).Asserts()
1667+
check.Args(ids, emptyPreparedAuthorized{}).Asserts()
16871668
}))
16881669
s.Run("GetWorkspaceACLByID", s.Mocked(func(dbM *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
16891670
ws := testutil.Fake(s.T(), faker, database.Workspace{})
16901671
dbM.EXPECT().GetWorkspaceByID(gomock.Any(), ws.ID).Return(ws, nil).AnyTimes()
16911672
dbM.EXPECT().GetWorkspaceACLByID(gomock.Any(), ws.ID).Return(database.GetWorkspaceACLByIDRow{}, nil).AnyTimes()
16921673
check.Args(ws.ID).Asserts(ws, policy.ActionCreate)
16931674
}))
1694-
s.Run("UpdateWorkspaceACLByID", s.Mocked(func(dbM *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1695-
ws := testutil.Fake(s.T(), faker, database.Workspace{})
1696-
params := database.UpdateWorkspaceACLByIDParams{ID: ws.ID}
1697-
dbM.EXPECT().GetWorkspaceByID(gomock.Any(), ws.ID).Return(ws, nil).AnyTimes()
1698-
dbM.EXPECT().UpdateWorkspaceACLByID(gomock.Any(), params).Return(nil).AnyTimes()
1699-
check.Args(params).Asserts(ws, policy.ActionCreate)
1675+
s.Run("UpdateWorkspaceACLByID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1676+
w := testutil.Fake(s.T(), faker, database.Workspace{})
1677+
arg := database.UpdateWorkspaceACLByIDParams{ID: w.ID}
1678+
dbm.EXPECT().GetWorkspaceByID(gomock.Any(), w.ID).Return(w, nil).AnyTimes()
1679+
dbm.EXPECT().UpdateWorkspaceACLByID(gomock.Any(), arg).Return(nil).AnyTimes()
1680+
check.Args(arg).Asserts(w, policy.ActionCreate)
17001681
}))
1701-
s.Run("GetLatestWorkspaceBuildByWorkspaceID", s.Subtest(func(db database.Store, check *expects) {
1702-
u := dbgen.User(s.T(), db, database.User{})
1703-
o := dbgen.Organization(s.T(), db, database.Organization{})
1704-
tpl := dbgen.Template(s.T(), db, database.Template{
1705-
OrganizationID: o.ID,
1706-
CreatedBy: u.ID,
1707-
})
1708-
tv := dbgen.TemplateVersion(s.T(), db, database.TemplateVersion{
1709-
TemplateID: uuid.NullUUID{UUID: tpl.ID, Valid: true},
1710-
OrganizationID: o.ID,
1711-
CreatedBy: u.ID,
1712-
})
1713-
w := dbgen.Workspace(s.T(), db, database.WorkspaceTable{
1714-
TemplateID: tpl.ID,
1715-
OrganizationID: o.ID,
1716-
OwnerID: u.ID,
1717-
})
1718-
j := dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{
1719-
Type: database.ProvisionerJobTypeWorkspaceBuild,
1720-
})
1721-
b := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{
1722-
JobID: j.ID,
1723-
WorkspaceID: w.ID,
1724-
TemplateVersionID: tv.ID,
1725-
})
1682+
s.Run("GetLatestWorkspaceBuildByWorkspaceID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1683+
w := testutil.Fake(s.T(), faker, database.Workspace{})
1684+
b := testutil.Fake(s.T(), faker, database.WorkspaceBuild{WorkspaceID: w.ID})
1685+
dbm.EXPECT().GetWorkspaceByID(gomock.Any(), w.ID).Return(w, nil).AnyTimes()
1686+
dbm.EXPECT().GetLatestWorkspaceBuildByWorkspaceID(gomock.Any(), w.ID).Return(b, nil).AnyTimes()
17261687
check.Args(w.ID).Asserts(w, policy.ActionRead).Returns(b)
17271688
}))
1728-
s.Run("GetWorkspaceAgentByID", s.Subtest(func(db database.Store, check *expects) {
1729-
u := dbgen.User(s.T(), db, database.User{})
1730-
o := dbgen.Organization(s.T(), db, database.Organization{})
1731-
tpl := dbgen.Template(s.T(), db, database.Template{
1732-
OrganizationID: o.ID,
1733-
CreatedBy: u.ID,
1734-
})
1735-
tv := dbgen.TemplateVersion(s.T(), db, database.TemplateVersion{
1736-
TemplateID: uuid.NullUUID{UUID: tpl.ID, Valid: true},
1737-
OrganizationID: o.ID,
1738-
CreatedBy: u.ID,
1739-
})
1740-
w := dbgen.Workspace(s.T(), db, database.WorkspaceTable{
1741-
TemplateID: tpl.ID,
1742-
OrganizationID: o.ID,
1743-
OwnerID: u.ID,
1744-
})
1745-
j := dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{
1746-
Type: database.ProvisionerJobTypeWorkspaceBuild,
1747-
})
1748-
b := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{
1749-
JobID: j.ID,
1750-
WorkspaceID: w.ID,
1751-
TemplateVersionID: tv.ID,
1752-
})
1753-
res := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: b.JobID})
1754-
agt := dbgen.WorkspaceAgent(s.T(), db, database.WorkspaceAgent{ResourceID: res.ID})
1689+
s.Run("GetWorkspaceAgentByID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1690+
w := testutil.Fake(s.T(), faker, database.Workspace{})
1691+
agt := testutil.Fake(s.T(), faker, database.WorkspaceAgent{})
1692+
dbm.EXPECT().GetWorkspaceByAgentID(gomock.Any(), agt.ID).Return(w, nil).AnyTimes()
1693+
dbm.EXPECT().GetWorkspaceAgentByID(gomock.Any(), agt.ID).Return(agt, nil).AnyTimes()
17551694
check.Args(agt.ID).Asserts(w, policy.ActionRead).Returns(agt)
17561695
}))
17571696
s.Run("GetWorkspaceAgentsByWorkspaceAndBuildNumber", s.Subtest(func(db database.Store, check *expects) {

0 commit comments

Comments
 (0)