Skip to content

Commit 74acb39

Browse files
committed
dbauthz: migrate initial TestWorkspace subtests to mocked DB
1 parent 80abe44 commit 74acb39

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
@@ -1610,144 +1610,74 @@ func (s *MethodTestSuite) TestUser() {
16101610
}
16111611

16121612
func (s *MethodTestSuite) TestWorkspace() {
1613-
s.Run("GetWorkspaceByID", s.Subtest(func(db database.Store, check *expects) {
1614-
u := dbgen.User(s.T(), db, database.User{})
1615-
o := dbgen.Organization(s.T(), db, database.Organization{})
1616-
tpl := dbgen.Template(s.T(), db, database.Template{
1617-
OrganizationID: o.ID,
1618-
CreatedBy: u.ID,
1619-
})
1620-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{
1621-
OwnerID: u.ID,
1622-
OrganizationID: o.ID,
1623-
TemplateID: tpl.ID,
1624-
})
1625-
check.Args(ws.ID).Asserts(ws, policy.ActionRead)
1626-
}))
1627-
s.Run("GetWorkspaceByResourceID", s.Subtest(func(db database.Store, check *expects) {
1628-
u := dbgen.User(s.T(), db, database.User{})
1629-
o := dbgen.Organization(s.T(), db, database.Organization{})
1630-
j := dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{Type: database.ProvisionerJobTypeWorkspaceBuild})
1631-
tpl := dbgen.Template(s.T(), db, database.Template{CreatedBy: u.ID, OrganizationID: o.ID})
1632-
tv := dbgen.TemplateVersion(s.T(), db, database.TemplateVersion{
1633-
TemplateID: uuid.NullUUID{UUID: tpl.ID, Valid: true},
1634-
JobID: j.ID,
1635-
OrganizationID: o.ID,
1636-
CreatedBy: u.ID,
1637-
})
1638-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{OwnerID: u.ID, TemplateID: tpl.ID, OrganizationID: o.ID})
1639-
_ = dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{WorkspaceID: ws.ID, JobID: j.ID, TemplateVersionID: tv.ID})
1640-
res := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: j.ID})
1641-
check.Args(res.ID).Asserts(ws, policy.ActionRead)
1642-
}))
1643-
s.Run("GetWorkspaces", s.Subtest(func(_ database.Store, check *expects) {
1644-
// No asserts here because SQLFilter.
1645-
check.Args(database.GetWorkspacesParams{}).Asserts()
1646-
}))
1647-
s.Run("GetAuthorizedWorkspaces", s.Subtest(func(_ database.Store, check *expects) {
1648-
// No asserts here because SQLFilter.
1649-
check.Args(database.GetWorkspacesParams{}, emptyPreparedAuthorized{}).Asserts()
1650-
}))
1651-
s.Run("GetWorkspacesAndAgentsByOwnerID", s.Subtest(func(db database.Store, check *expects) {
1652-
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
1653-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{})
1654-
build := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{WorkspaceID: ws.ID, JobID: uuid.New()})
1655-
_ = dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{ID: build.JobID, Type: database.ProvisionerJobTypeWorkspaceBuild})
1656-
res := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: build.JobID})
1657-
_ = dbgen.WorkspaceAgent(s.T(), db, database.WorkspaceAgent{ResourceID: res.ID})
1658-
// No asserts here because SQLFilter.
1659-
check.Args(ws.OwnerID).Asserts()
1660-
}))
1661-
s.Run("GetAuthorizedWorkspacesAndAgentsByOwnerID", s.Subtest(func(db database.Store, check *expects) {
1662-
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
1663-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{})
1664-
build := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{WorkspaceID: ws.ID, JobID: uuid.New()})
1665-
_ = dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{ID: build.JobID, Type: database.ProvisionerJobTypeWorkspaceBuild})
1666-
res := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: build.JobID})
1667-
_ = dbgen.WorkspaceAgent(s.T(), db, database.WorkspaceAgent{ResourceID: res.ID})
1668-
// No asserts here because SQLFilter.
1669-
check.Args(ws.OwnerID, emptyPreparedAuthorized{}).Asserts()
1670-
}))
1671-
s.Run("GetWorkspaceBuildParametersByBuildIDs", s.Subtest(func(db database.Store, check *expects) {
1672-
// no asserts here because SQLFilter
1673-
check.Args([]uuid.UUID{}).Asserts()
1674-
}))
1675-
s.Run("GetAuthorizedWorkspaceBuildParametersByBuildIDs", s.Subtest(func(db database.Store, check *expects) {
1676-
// no asserts here because SQLFilter
1677-
check.Args([]uuid.UUID{}, emptyPreparedAuthorized{}).Asserts()
1678-
}))
1679-
s.Run("UpdateWorkspaceACLByID", s.Subtest(func(db database.Store, check *expects) {
1680-
u := dbgen.User(s.T(), db, database.User{})
1681-
o := dbgen.Organization(s.T(), db, database.Organization{})
1682-
tpl := dbgen.Template(s.T(), db, database.Template{
1683-
OrganizationID: o.ID,
1684-
CreatedBy: u.ID,
1685-
})
1686-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{
1687-
OwnerID: u.ID,
1688-
OrganizationID: o.ID,
1689-
TemplateID: tpl.ID,
1690-
})
1691-
check.Args(database.UpdateWorkspaceACLByIDParams{
1692-
ID: ws.ID,
1693-
}).Asserts(ws, policy.ActionCreate)
1694-
}))
1695-
s.Run("GetLatestWorkspaceBuildByWorkspaceID", s.Subtest(func(db database.Store, check *expects) {
1696-
u := dbgen.User(s.T(), db, database.User{})
1697-
o := dbgen.Organization(s.T(), db, database.Organization{})
1698-
tpl := dbgen.Template(s.T(), db, database.Template{
1699-
OrganizationID: o.ID,
1700-
CreatedBy: u.ID,
1701-
})
1702-
tv := dbgen.TemplateVersion(s.T(), db, database.TemplateVersion{
1703-
TemplateID: uuid.NullUUID{UUID: tpl.ID, Valid: true},
1704-
OrganizationID: o.ID,
1705-
CreatedBy: u.ID,
1706-
})
1707-
w := dbgen.Workspace(s.T(), db, database.WorkspaceTable{
1708-
TemplateID: tpl.ID,
1709-
OrganizationID: o.ID,
1710-
OwnerID: u.ID,
1711-
})
1712-
j := dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{
1713-
Type: database.ProvisionerJobTypeWorkspaceBuild,
1714-
})
1715-
b := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{
1716-
JobID: j.ID,
1717-
WorkspaceID: w.ID,
1718-
TemplateVersionID: tv.ID,
1719-
})
1720-
check.Args(w.ID).Asserts(w, policy.ActionRead).Returns(b)
1721-
}))
1722-
s.Run("GetWorkspaceAgentByID", s.Subtest(func(db database.Store, check *expects) {
1723-
u := dbgen.User(s.T(), db, database.User{})
1724-
o := dbgen.Organization(s.T(), db, database.Organization{})
1725-
tpl := dbgen.Template(s.T(), db, database.Template{
1726-
OrganizationID: o.ID,
1727-
CreatedBy: u.ID,
1728-
})
1729-
tv := dbgen.TemplateVersion(s.T(), db, database.TemplateVersion{
1730-
TemplateID: uuid.NullUUID{UUID: tpl.ID, Valid: true},
1731-
OrganizationID: o.ID,
1732-
CreatedBy: u.ID,
1733-
})
1734-
w := dbgen.Workspace(s.T(), db, database.WorkspaceTable{
1735-
TemplateID: tpl.ID,
1736-
OrganizationID: o.ID,
1737-
OwnerID: u.ID,
1738-
})
1739-
j := dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{
1740-
Type: database.ProvisionerJobTypeWorkspaceBuild,
1741-
})
1742-
b := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{
1743-
JobID: j.ID,
1744-
WorkspaceID: w.ID,
1745-
TemplateVersionID: tv.ID,
1746-
})
1747-
res := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: b.JobID})
1748-
agt := dbgen.WorkspaceAgent(s.T(), db, database.WorkspaceAgent{ResourceID: res.ID})
1749-
check.Args(agt.ID).Asserts(w, policy.ActionRead).Returns(agt)
1750-
}))
1613+
s.Run("GetWorkspaceByID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1614+
ws := testutil.Fake(s.T(), faker, database.Workspace{})
1615+
dbm.EXPECT().GetWorkspaceByID(gomock.Any(), ws.ID).Return(ws, nil).AnyTimes()
1616+
check.Args(ws.ID).Asserts(ws, policy.ActionRead).Returns(ws)
1617+
}))
1618+
s.Run("GetWorkspaceByResourceID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1619+
ws := testutil.Fake(s.T(), faker, database.Workspace{})
1620+
res := testutil.Fake(s.T(), faker, database.WorkspaceResource{})
1621+
dbm.EXPECT().GetWorkspaceByResourceID(gomock.Any(), res.ID).Return(ws, nil).AnyTimes()
1622+
check.Args(res.ID).Asserts(ws, policy.ActionRead).Returns(ws)
1623+
}))
1624+
s.Run("GetWorkspaces", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
1625+
arg := database.GetWorkspacesParams{}
1626+
dbm.EXPECT().GetAuthorizedWorkspaces(gomock.Any(), arg, gomock.Any()).Return([]database.GetWorkspacesRow{}, nil).AnyTimes()
1627+
// No asserts here because SQLFilter.
1628+
check.Args(arg).Asserts()
1629+
}))
1630+
s.Run("GetAuthorizedWorkspaces", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
1631+
arg := database.GetWorkspacesParams{}
1632+
dbm.EXPECT().GetAuthorizedWorkspaces(gomock.Any(), arg, gomock.Any()).Return([]database.GetWorkspacesRow{}, nil).AnyTimes()
1633+
// No asserts here because SQLFilter.
1634+
check.Args(arg, emptyPreparedAuthorized{}).Asserts()
1635+
}))
1636+
s.Run("GetWorkspacesAndAgentsByOwnerID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1637+
ws := testutil.Fake(s.T(), faker, database.Workspace{})
1638+
dbm.EXPECT().GetAuthorizedWorkspacesAndAgentsByOwnerID(gomock.Any(), ws.OwnerID, gomock.Any()).Return([]database.GetWorkspacesAndAgentsByOwnerIDRow{}, nil).AnyTimes()
1639+
// No asserts here because SQLFilter.
1640+
check.Args(ws.OwnerID).Asserts()
1641+
}))
1642+
s.Run("GetAuthorizedWorkspacesAndAgentsByOwnerID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1643+
ws := testutil.Fake(s.T(), faker, database.Workspace{})
1644+
dbm.EXPECT().GetAuthorizedWorkspacesAndAgentsByOwnerID(gomock.Any(), ws.OwnerID, gomock.Any()).Return([]database.GetWorkspacesAndAgentsByOwnerIDRow{}, nil).AnyTimes()
1645+
// No asserts here because SQLFilter.
1646+
check.Args(ws.OwnerID, emptyPreparedAuthorized{}).Asserts()
1647+
}))
1648+
s.Run("GetWorkspaceBuildParametersByBuildIDs", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
1649+
ids := []uuid.UUID{}
1650+
dbm.EXPECT().GetAuthorizedWorkspaceBuildParametersByBuildIDs(gomock.Any(), ids, gomock.Any()).Return([]database.WorkspaceBuildParameter{}, nil).AnyTimes()
1651+
// no asserts here because SQLFilter
1652+
check.Args(ids).Asserts()
1653+
}))
1654+
s.Run("GetAuthorizedWorkspaceBuildParametersByBuildIDs", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
1655+
ids := []uuid.UUID{}
1656+
dbm.EXPECT().GetAuthorizedWorkspaceBuildParametersByBuildIDs(gomock.Any(), ids, gomock.Any()).Return([]database.WorkspaceBuildParameter{}, nil).AnyTimes()
1657+
// no asserts here because SQLFilter
1658+
check.Args(ids, emptyPreparedAuthorized{}).Asserts()
1659+
}))
1660+
s.Run("UpdateWorkspaceACLByID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1661+
w := testutil.Fake(s.T(), faker, database.Workspace{})
1662+
arg := database.UpdateWorkspaceACLByIDParams{ID: w.ID}
1663+
dbm.EXPECT().GetWorkspaceByID(gomock.Any(), w.ID).Return(w, nil).AnyTimes()
1664+
dbm.EXPECT().UpdateWorkspaceACLByID(gomock.Any(), arg).Return(nil).AnyTimes()
1665+
check.Args(arg).Asserts(w, policy.ActionCreate)
1666+
}))
1667+
s.Run("GetLatestWorkspaceBuildByWorkspaceID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1668+
w := testutil.Fake(s.T(), faker, database.Workspace{})
1669+
b := testutil.Fake(s.T(), faker, database.WorkspaceBuild{WorkspaceID: w.ID})
1670+
dbm.EXPECT().GetWorkspaceByID(gomock.Any(), w.ID).Return(w, nil).AnyTimes()
1671+
dbm.EXPECT().GetLatestWorkspaceBuildByWorkspaceID(gomock.Any(), w.ID).Return(b, nil).AnyTimes()
1672+
check.Args(w.ID).Asserts(w, policy.ActionRead).Returns(b)
1673+
}))
1674+
s.Run("GetWorkspaceAgentByID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1675+
w := testutil.Fake(s.T(), faker, database.Workspace{})
1676+
agt := testutil.Fake(s.T(), faker, database.WorkspaceAgent{})
1677+
dbm.EXPECT().GetWorkspaceByAgentID(gomock.Any(), agt.ID).Return(w, nil).AnyTimes()
1678+
dbm.EXPECT().GetWorkspaceAgentByID(gomock.Any(), agt.ID).Return(agt, nil).AnyTimes()
1679+
check.Args(agt.ID).Asserts(w, policy.ActionRead).Returns(agt)
1680+
}))
17511681
s.Run("GetWorkspaceAgentsByWorkspaceAndBuildNumber", s.Subtest(func(db database.Store, check *expects) {
17521682
u := dbgen.User(s.T(), db, database.User{})
17531683
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