Skip to content

Commit 860aa4a

Browse files
committed
dbauthz: migrate initial TestWorkspace subtests to mocked DB
1 parent 8b3a781 commit 860aa4a

File tree

1 file changed

+68
-138
lines changed

1 file changed

+68
-138
lines changed

coderd/database/dbauthz/dbauthz_test.go

Lines changed: 68 additions & 138 deletions
Original file line numberDiff line numberDiff line change
@@ -1580,144 +1580,74 @@ func (s *MethodTestSuite) TestUser() {
15801580
}
15811581

15821582
func (s *MethodTestSuite) TestWorkspace() {
1583-
s.Run("GetWorkspaceByID", s.Subtest(func(db database.Store, check *expects) {
1584-
u := dbgen.User(s.T(), db, database.User{})
1585-
o := dbgen.Organization(s.T(), db, database.Organization{})
1586-
tpl := dbgen.Template(s.T(), db, database.Template{
1587-
OrganizationID: o.ID,
1588-
CreatedBy: u.ID,
1589-
})
1590-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{
1591-
OwnerID: u.ID,
1592-
OrganizationID: o.ID,
1593-
TemplateID: tpl.ID,
1594-
})
1595-
check.Args(ws.ID).Asserts(ws, policy.ActionRead)
1596-
}))
1597-
s.Run("GetWorkspaceByResourceID", s.Subtest(func(db database.Store, check *expects) {
1598-
u := dbgen.User(s.T(), db, database.User{})
1599-
o := dbgen.Organization(s.T(), db, database.Organization{})
1600-
j := dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{Type: database.ProvisionerJobTypeWorkspaceBuild})
1601-
tpl := dbgen.Template(s.T(), db, database.Template{CreatedBy: u.ID, OrganizationID: o.ID})
1602-
tv := dbgen.TemplateVersion(s.T(), db, database.TemplateVersion{
1603-
TemplateID: uuid.NullUUID{UUID: tpl.ID, Valid: true},
1604-
JobID: j.ID,
1605-
OrganizationID: o.ID,
1606-
CreatedBy: u.ID,
1607-
})
1608-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{OwnerID: u.ID, TemplateID: tpl.ID, OrganizationID: o.ID})
1609-
_ = dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{WorkspaceID: ws.ID, JobID: j.ID, TemplateVersionID: tv.ID})
1610-
res := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: j.ID})
1611-
check.Args(res.ID).Asserts(ws, policy.ActionRead)
1612-
}))
1613-
s.Run("GetWorkspaces", s.Subtest(func(_ database.Store, check *expects) {
1614-
// No asserts here because SQLFilter.
1615-
check.Args(database.GetWorkspacesParams{}).Asserts()
1616-
}))
1617-
s.Run("GetAuthorizedWorkspaces", s.Subtest(func(_ database.Store, check *expects) {
1618-
// No asserts here because SQLFilter.
1619-
check.Args(database.GetWorkspacesParams{}, emptyPreparedAuthorized{}).Asserts()
1620-
}))
1621-
s.Run("GetWorkspacesAndAgentsByOwnerID", s.Subtest(func(db database.Store, check *expects) {
1622-
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
1623-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{})
1624-
build := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{WorkspaceID: ws.ID, JobID: uuid.New()})
1625-
_ = dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{ID: build.JobID, Type: database.ProvisionerJobTypeWorkspaceBuild})
1626-
res := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: build.JobID})
1627-
_ = dbgen.WorkspaceAgent(s.T(), db, database.WorkspaceAgent{ResourceID: res.ID})
1628-
// No asserts here because SQLFilter.
1629-
check.Args(ws.OwnerID).Asserts()
1630-
}))
1631-
s.Run("GetAuthorizedWorkspacesAndAgentsByOwnerID", s.Subtest(func(db database.Store, check *expects) {
1632-
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
1633-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{})
1634-
build := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{WorkspaceID: ws.ID, JobID: uuid.New()})
1635-
_ = dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{ID: build.JobID, Type: database.ProvisionerJobTypeWorkspaceBuild})
1636-
res := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: build.JobID})
1637-
_ = dbgen.WorkspaceAgent(s.T(), db, database.WorkspaceAgent{ResourceID: res.ID})
1638-
// No asserts here because SQLFilter.
1639-
check.Args(ws.OwnerID, emptyPreparedAuthorized{}).Asserts()
1640-
}))
1641-
s.Run("GetWorkspaceBuildParametersByBuildIDs", s.Subtest(func(db database.Store, check *expects) {
1642-
// no asserts here because SQLFilter
1643-
check.Args([]uuid.UUID{}).Asserts()
1644-
}))
1645-
s.Run("GetAuthorizedWorkspaceBuildParametersByBuildIDs", s.Subtest(func(db database.Store, check *expects) {
1646-
// no asserts here because SQLFilter
1647-
check.Args([]uuid.UUID{}, emptyPreparedAuthorized{}).Asserts()
1648-
}))
1649-
s.Run("UpdateWorkspaceACLByID", s.Subtest(func(db database.Store, check *expects) {
1650-
u := dbgen.User(s.T(), db, database.User{})
1651-
o := dbgen.Organization(s.T(), db, database.Organization{})
1652-
tpl := dbgen.Template(s.T(), db, database.Template{
1653-
OrganizationID: o.ID,
1654-
CreatedBy: u.ID,
1655-
})
1656-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{
1657-
OwnerID: u.ID,
1658-
OrganizationID: o.ID,
1659-
TemplateID: tpl.ID,
1660-
})
1661-
check.Args(database.UpdateWorkspaceACLByIDParams{
1662-
ID: ws.ID,
1663-
}).Asserts(ws, policy.ActionCreate)
1664-
}))
1665-
s.Run("GetLatestWorkspaceBuildByWorkspaceID", s.Subtest(func(db database.Store, check *expects) {
1666-
u := dbgen.User(s.T(), db, database.User{})
1667-
o := dbgen.Organization(s.T(), db, database.Organization{})
1668-
tpl := dbgen.Template(s.T(), db, database.Template{
1669-
OrganizationID: o.ID,
1670-
CreatedBy: u.ID,
1671-
})
1672-
tv := dbgen.TemplateVersion(s.T(), db, database.TemplateVersion{
1673-
TemplateID: uuid.NullUUID{UUID: tpl.ID, Valid: true},
1674-
OrganizationID: o.ID,
1675-
CreatedBy: u.ID,
1676-
})
1677-
w := dbgen.Workspace(s.T(), db, database.WorkspaceTable{
1678-
TemplateID: tpl.ID,
1679-
OrganizationID: o.ID,
1680-
OwnerID: u.ID,
1681-
})
1682-
j := dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{
1683-
Type: database.ProvisionerJobTypeWorkspaceBuild,
1684-
})
1685-
b := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{
1686-
JobID: j.ID,
1687-
WorkspaceID: w.ID,
1688-
TemplateVersionID: tv.ID,
1689-
})
1690-
check.Args(w.ID).Asserts(w, policy.ActionRead).Returns(b)
1691-
}))
1692-
s.Run("GetWorkspaceAgentByID", s.Subtest(func(db database.Store, check *expects) {
1693-
u := dbgen.User(s.T(), db, database.User{})
1694-
o := dbgen.Organization(s.T(), db, database.Organization{})
1695-
tpl := dbgen.Template(s.T(), db, database.Template{
1696-
OrganizationID: o.ID,
1697-
CreatedBy: u.ID,
1698-
})
1699-
tv := dbgen.TemplateVersion(s.T(), db, database.TemplateVersion{
1700-
TemplateID: uuid.NullUUID{UUID: tpl.ID, Valid: true},
1701-
OrganizationID: o.ID,
1702-
CreatedBy: u.ID,
1703-
})
1704-
w := dbgen.Workspace(s.T(), db, database.WorkspaceTable{
1705-
TemplateID: tpl.ID,
1706-
OrganizationID: o.ID,
1707-
OwnerID: u.ID,
1708-
})
1709-
j := dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{
1710-
Type: database.ProvisionerJobTypeWorkspaceBuild,
1711-
})
1712-
b := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{
1713-
JobID: j.ID,
1714-
WorkspaceID: w.ID,
1715-
TemplateVersionID: tv.ID,
1716-
})
1717-
res := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: b.JobID})
1718-
agt := dbgen.WorkspaceAgent(s.T(), db, database.WorkspaceAgent{ResourceID: res.ID})
1719-
check.Args(agt.ID).Asserts(w, policy.ActionRead).Returns(agt)
1720-
}))
1583+
s.Run("GetWorkspaceByID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1584+
ws := testutil.Fake(s.T(), faker, database.Workspace{})
1585+
dbm.EXPECT().GetWorkspaceByID(gomock.Any(), ws.ID).Return(ws, nil).AnyTimes()
1586+
check.Args(ws.ID).Asserts(ws, policy.ActionRead).Returns(ws)
1587+
}))
1588+
s.Run("GetWorkspaceByResourceID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1589+
ws := testutil.Fake(s.T(), faker, database.Workspace{})
1590+
res := testutil.Fake(s.T(), faker, database.WorkspaceResource{})
1591+
dbm.EXPECT().GetWorkspaceByResourceID(gomock.Any(), res.ID).Return(ws, nil).AnyTimes()
1592+
check.Args(res.ID).Asserts(ws, policy.ActionRead).Returns(ws)
1593+
}))
1594+
s.Run("GetWorkspaces", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
1595+
arg := database.GetWorkspacesParams{}
1596+
dbm.EXPECT().GetAuthorizedWorkspaces(gomock.Any(), arg, gomock.Any()).Return([]database.GetWorkspacesRow{}, nil).AnyTimes()
1597+
// No asserts here because SQLFilter.
1598+
check.Args(arg).Asserts()
1599+
}))
1600+
s.Run("GetAuthorizedWorkspaces", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
1601+
arg := database.GetWorkspacesParams{}
1602+
dbm.EXPECT().GetAuthorizedWorkspaces(gomock.Any(), arg, gomock.Any()).Return([]database.GetWorkspacesRow{}, nil).AnyTimes()
1603+
// No asserts here because SQLFilter.
1604+
check.Args(arg, emptyPreparedAuthorized{}).Asserts()
1605+
}))
1606+
s.Run("GetWorkspacesAndAgentsByOwnerID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1607+
ws := testutil.Fake(s.T(), faker, database.Workspace{})
1608+
dbm.EXPECT().GetAuthorizedWorkspacesAndAgentsByOwnerID(gomock.Any(), ws.OwnerID, gomock.Any()).Return([]database.GetWorkspacesAndAgentsByOwnerIDRow{}, nil).AnyTimes()
1609+
// No asserts here because SQLFilter.
1610+
check.Args(ws.OwnerID).Asserts()
1611+
}))
1612+
s.Run("GetAuthorizedWorkspacesAndAgentsByOwnerID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1613+
ws := testutil.Fake(s.T(), faker, database.Workspace{})
1614+
dbm.EXPECT().GetAuthorizedWorkspacesAndAgentsByOwnerID(gomock.Any(), ws.OwnerID, gomock.Any()).Return([]database.GetWorkspacesAndAgentsByOwnerIDRow{}, nil).AnyTimes()
1615+
// No asserts here because SQLFilter.
1616+
check.Args(ws.OwnerID, emptyPreparedAuthorized{}).Asserts()
1617+
}))
1618+
s.Run("GetWorkspaceBuildParametersByBuildIDs", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
1619+
ids := []uuid.UUID{}
1620+
dbm.EXPECT().GetAuthorizedWorkspaceBuildParametersByBuildIDs(gomock.Any(), ids, gomock.Any()).Return([]database.WorkspaceBuildParameter{}, nil).AnyTimes()
1621+
// no asserts here because SQLFilter
1622+
check.Args(ids).Asserts()
1623+
}))
1624+
s.Run("GetAuthorizedWorkspaceBuildParametersByBuildIDs", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
1625+
ids := []uuid.UUID{}
1626+
dbm.EXPECT().GetAuthorizedWorkspaceBuildParametersByBuildIDs(gomock.Any(), ids, gomock.Any()).Return([]database.WorkspaceBuildParameter{}, nil).AnyTimes()
1627+
// no asserts here because SQLFilter
1628+
check.Args(ids, emptyPreparedAuthorized{}).Asserts()
1629+
}))
1630+
s.Run("UpdateWorkspaceACLByID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1631+
w := testutil.Fake(s.T(), faker, database.Workspace{})
1632+
arg := database.UpdateWorkspaceACLByIDParams{ID: w.ID}
1633+
dbm.EXPECT().GetWorkspaceByID(gomock.Any(), w.ID).Return(w, nil).AnyTimes()
1634+
dbm.EXPECT().UpdateWorkspaceACLByID(gomock.Any(), arg).Return(nil).AnyTimes()
1635+
check.Args(arg).Asserts(w, policy.ActionCreate)
1636+
}))
1637+
s.Run("GetLatestWorkspaceBuildByWorkspaceID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1638+
w := testutil.Fake(s.T(), faker, database.Workspace{})
1639+
b := testutil.Fake(s.T(), faker, database.WorkspaceBuild{WorkspaceID: w.ID})
1640+
dbm.EXPECT().GetWorkspaceByID(gomock.Any(), w.ID).Return(w, nil).AnyTimes()
1641+
dbm.EXPECT().GetLatestWorkspaceBuildByWorkspaceID(gomock.Any(), w.ID).Return(b, nil).AnyTimes()
1642+
check.Args(w.ID).Asserts(w, policy.ActionRead).Returns(b)
1643+
}))
1644+
s.Run("GetWorkspaceAgentByID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1645+
w := testutil.Fake(s.T(), faker, database.Workspace{})
1646+
agt := testutil.Fake(s.T(), faker, database.WorkspaceAgent{})
1647+
dbm.EXPECT().GetWorkspaceByAgentID(gomock.Any(), agt.ID).Return(w, nil).AnyTimes()
1648+
dbm.EXPECT().GetWorkspaceAgentByID(gomock.Any(), agt.ID).Return(agt, nil).AnyTimes()
1649+
check.Args(agt.ID).Asserts(w, policy.ActionRead).Returns(agt)
1650+
}))
17211651
s.Run("GetWorkspaceAgentsByWorkspaceAndBuildNumber", s.Subtest(func(db database.Store, check *expects) {
17221652
u := dbgen.User(s.T(), db, database.User{})
17231653
o := dbgen.Organization(s.T(), db, database.Organization{})

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