Skip to content

Commit 105d72f

Browse files
committed
dbauthz: migrate initial TestWorkspace subtests to mocked DB
1 parent bab26e8 commit 105d72f

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
@@ -1664,144 +1664,74 @@ func (s *MethodTestSuite) TestUser() {
16641664
}
16651665

16661666
func (s *MethodTestSuite) TestWorkspace() {
1667-
s.Run("GetWorkspaceByID", s.Subtest(func(db database.Store, check *expects) {
1668-
u := dbgen.User(s.T(), db, database.User{})
1669-
o := dbgen.Organization(s.T(), db, database.Organization{})
1670-
tpl := dbgen.Template(s.T(), db, database.Template{
1671-
OrganizationID: o.ID,
1672-
CreatedBy: u.ID,
1673-
})
1674-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{
1675-
OwnerID: u.ID,
1676-
OrganizationID: o.ID,
1677-
TemplateID: tpl.ID,
1678-
})
1679-
check.Args(ws.ID).Asserts(ws, policy.ActionRead)
1680-
}))
1681-
s.Run("GetWorkspaceByResourceID", s.Subtest(func(db database.Store, check *expects) {
1682-
u := dbgen.User(s.T(), db, database.User{})
1683-
o := dbgen.Organization(s.T(), db, database.Organization{})
1684-
j := dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{Type: database.ProvisionerJobTypeWorkspaceBuild})
1685-
tpl := dbgen.Template(s.T(), db, database.Template{CreatedBy: u.ID, OrganizationID: o.ID})
1686-
tv := dbgen.TemplateVersion(s.T(), db, database.TemplateVersion{
1687-
TemplateID: uuid.NullUUID{UUID: tpl.ID, Valid: true},
1688-
JobID: j.ID,
1689-
OrganizationID: o.ID,
1690-
CreatedBy: u.ID,
1691-
})
1692-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{OwnerID: u.ID, TemplateID: tpl.ID, OrganizationID: o.ID})
1693-
_ = dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{WorkspaceID: ws.ID, JobID: j.ID, TemplateVersionID: tv.ID})
1694-
res := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: j.ID})
1695-
check.Args(res.ID).Asserts(ws, policy.ActionRead)
1696-
}))
1697-
s.Run("GetWorkspaces", s.Subtest(func(_ database.Store, check *expects) {
1698-
// No asserts here because SQLFilter.
1699-
check.Args(database.GetWorkspacesParams{}).Asserts()
1700-
}))
1701-
s.Run("GetAuthorizedWorkspaces", s.Subtest(func(_ database.Store, check *expects) {
1702-
// No asserts here because SQLFilter.
1703-
check.Args(database.GetWorkspacesParams{}, emptyPreparedAuthorized{}).Asserts()
1704-
}))
1705-
s.Run("GetWorkspacesAndAgentsByOwnerID", s.Subtest(func(db database.Store, check *expects) {
1706-
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
1707-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{})
1708-
build := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{WorkspaceID: ws.ID, JobID: uuid.New()})
1709-
_ = dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{ID: build.JobID, Type: database.ProvisionerJobTypeWorkspaceBuild})
1710-
res := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: build.JobID})
1711-
_ = dbgen.WorkspaceAgent(s.T(), db, database.WorkspaceAgent{ResourceID: res.ID})
1712-
// No asserts here because SQLFilter.
1713-
check.Args(ws.OwnerID).Asserts()
1714-
}))
1715-
s.Run("GetAuthorizedWorkspacesAndAgentsByOwnerID", s.Subtest(func(db database.Store, check *expects) {
1716-
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
1717-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{})
1718-
build := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{WorkspaceID: ws.ID, JobID: uuid.New()})
1719-
_ = dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{ID: build.JobID, Type: database.ProvisionerJobTypeWorkspaceBuild})
1720-
res := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: build.JobID})
1721-
_ = dbgen.WorkspaceAgent(s.T(), db, database.WorkspaceAgent{ResourceID: res.ID})
1722-
// No asserts here because SQLFilter.
1723-
check.Args(ws.OwnerID, emptyPreparedAuthorized{}).Asserts()
1724-
}))
1725-
s.Run("GetWorkspaceBuildParametersByBuildIDs", s.Subtest(func(db database.Store, check *expects) {
1726-
// no asserts here because SQLFilter
1727-
check.Args([]uuid.UUID{}).Asserts()
1728-
}))
1729-
s.Run("GetAuthorizedWorkspaceBuildParametersByBuildIDs", s.Subtest(func(db database.Store, check *expects) {
1730-
// no asserts here because SQLFilter
1731-
check.Args([]uuid.UUID{}, emptyPreparedAuthorized{}).Asserts()
1732-
}))
1733-
s.Run("UpdateWorkspaceACLByID", s.Subtest(func(db database.Store, check *expects) {
1734-
u := dbgen.User(s.T(), db, database.User{})
1735-
o := dbgen.Organization(s.T(), db, database.Organization{})
1736-
tpl := dbgen.Template(s.T(), db, database.Template{
1737-
OrganizationID: o.ID,
1738-
CreatedBy: u.ID,
1739-
})
1740-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{
1741-
OwnerID: u.ID,
1742-
OrganizationID: o.ID,
1743-
TemplateID: tpl.ID,
1744-
})
1745-
check.Args(database.UpdateWorkspaceACLByIDParams{
1746-
ID: ws.ID,
1747-
}).Asserts(ws, policy.ActionCreate)
1748-
}))
1749-
s.Run("GetLatestWorkspaceBuildByWorkspaceID", s.Subtest(func(db database.Store, check *expects) {
1750-
u := dbgen.User(s.T(), db, database.User{})
1751-
o := dbgen.Organization(s.T(), db, database.Organization{})
1752-
tpl := dbgen.Template(s.T(), db, database.Template{
1753-
OrganizationID: o.ID,
1754-
CreatedBy: u.ID,
1755-
})
1756-
tv := dbgen.TemplateVersion(s.T(), db, database.TemplateVersion{
1757-
TemplateID: uuid.NullUUID{UUID: tpl.ID, Valid: true},
1758-
OrganizationID: o.ID,
1759-
CreatedBy: u.ID,
1760-
})
1761-
w := dbgen.Workspace(s.T(), db, database.WorkspaceTable{
1762-
TemplateID: tpl.ID,
1763-
OrganizationID: o.ID,
1764-
OwnerID: u.ID,
1765-
})
1766-
j := dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{
1767-
Type: database.ProvisionerJobTypeWorkspaceBuild,
1768-
})
1769-
b := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{
1770-
JobID: j.ID,
1771-
WorkspaceID: w.ID,
1772-
TemplateVersionID: tv.ID,
1773-
})
1774-
check.Args(w.ID).Asserts(w, policy.ActionRead).Returns(b)
1775-
}))
1776-
s.Run("GetWorkspaceAgentByID", s.Subtest(func(db database.Store, check *expects) {
1777-
u := dbgen.User(s.T(), db, database.User{})
1778-
o := dbgen.Organization(s.T(), db, database.Organization{})
1779-
tpl := dbgen.Template(s.T(), db, database.Template{
1780-
OrganizationID: o.ID,
1781-
CreatedBy: u.ID,
1782-
})
1783-
tv := dbgen.TemplateVersion(s.T(), db, database.TemplateVersion{
1784-
TemplateID: uuid.NullUUID{UUID: tpl.ID, Valid: true},
1785-
OrganizationID: o.ID,
1786-
CreatedBy: u.ID,
1787-
})
1788-
w := dbgen.Workspace(s.T(), db, database.WorkspaceTable{
1789-
TemplateID: tpl.ID,
1790-
OrganizationID: o.ID,
1791-
OwnerID: u.ID,
1792-
})
1793-
j := dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{
1794-
Type: database.ProvisionerJobTypeWorkspaceBuild,
1795-
})
1796-
b := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{
1797-
JobID: j.ID,
1798-
WorkspaceID: w.ID,
1799-
TemplateVersionID: tv.ID,
1800-
})
1801-
res := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: b.JobID})
1802-
agt := dbgen.WorkspaceAgent(s.T(), db, database.WorkspaceAgent{ResourceID: res.ID})
1803-
check.Args(agt.ID).Asserts(w, policy.ActionRead).Returns(agt)
1804-
}))
1667+
s.Run("GetWorkspaceByID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1668+
ws := testutil.Fake(s.T(), faker, database.Workspace{})
1669+
dbm.EXPECT().GetWorkspaceByID(gomock.Any(), ws.ID).Return(ws, nil).AnyTimes()
1670+
check.Args(ws.ID).Asserts(ws, policy.ActionRead).Returns(ws)
1671+
}))
1672+
s.Run("GetWorkspaceByResourceID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1673+
ws := testutil.Fake(s.T(), faker, database.Workspace{})
1674+
res := testutil.Fake(s.T(), faker, database.WorkspaceResource{})
1675+
dbm.EXPECT().GetWorkspaceByResourceID(gomock.Any(), res.ID).Return(ws, nil).AnyTimes()
1676+
check.Args(res.ID).Asserts(ws, policy.ActionRead).Returns(ws)
1677+
}))
1678+
s.Run("GetWorkspaces", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
1679+
arg := database.GetWorkspacesParams{}
1680+
dbm.EXPECT().GetAuthorizedWorkspaces(gomock.Any(), arg, gomock.Any()).Return([]database.GetWorkspacesRow{}, nil).AnyTimes()
1681+
// No asserts here because SQLFilter.
1682+
check.Args(arg).Asserts()
1683+
}))
1684+
s.Run("GetAuthorizedWorkspaces", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
1685+
arg := database.GetWorkspacesParams{}
1686+
dbm.EXPECT().GetAuthorizedWorkspaces(gomock.Any(), arg, gomock.Any()).Return([]database.GetWorkspacesRow{}, nil).AnyTimes()
1687+
// No asserts here because SQLFilter.
1688+
check.Args(arg, emptyPreparedAuthorized{}).Asserts()
1689+
}))
1690+
s.Run("GetWorkspacesAndAgentsByOwnerID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1691+
ws := testutil.Fake(s.T(), faker, database.Workspace{})
1692+
dbm.EXPECT().GetAuthorizedWorkspacesAndAgentsByOwnerID(gomock.Any(), ws.OwnerID, gomock.Any()).Return([]database.GetWorkspacesAndAgentsByOwnerIDRow{}, nil).AnyTimes()
1693+
// No asserts here because SQLFilter.
1694+
check.Args(ws.OwnerID).Asserts()
1695+
}))
1696+
s.Run("GetAuthorizedWorkspacesAndAgentsByOwnerID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1697+
ws := testutil.Fake(s.T(), faker, database.Workspace{})
1698+
dbm.EXPECT().GetAuthorizedWorkspacesAndAgentsByOwnerID(gomock.Any(), ws.OwnerID, gomock.Any()).Return([]database.GetWorkspacesAndAgentsByOwnerIDRow{}, nil).AnyTimes()
1699+
// No asserts here because SQLFilter.
1700+
check.Args(ws.OwnerID, emptyPreparedAuthorized{}).Asserts()
1701+
}))
1702+
s.Run("GetWorkspaceBuildParametersByBuildIDs", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
1703+
ids := []uuid.UUID{}
1704+
dbm.EXPECT().GetAuthorizedWorkspaceBuildParametersByBuildIDs(gomock.Any(), ids, gomock.Any()).Return([]database.WorkspaceBuildParameter{}, nil).AnyTimes()
1705+
// no asserts here because SQLFilter
1706+
check.Args(ids).Asserts()
1707+
}))
1708+
s.Run("GetAuthorizedWorkspaceBuildParametersByBuildIDs", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
1709+
ids := []uuid.UUID{}
1710+
dbm.EXPECT().GetAuthorizedWorkspaceBuildParametersByBuildIDs(gomock.Any(), ids, gomock.Any()).Return([]database.WorkspaceBuildParameter{}, nil).AnyTimes()
1711+
// no asserts here because SQLFilter
1712+
check.Args(ids, emptyPreparedAuthorized{}).Asserts()
1713+
}))
1714+
s.Run("UpdateWorkspaceACLByID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1715+
w := testutil.Fake(s.T(), faker, database.Workspace{})
1716+
arg := database.UpdateWorkspaceACLByIDParams{ID: w.ID}
1717+
dbm.EXPECT().GetWorkspaceByID(gomock.Any(), w.ID).Return(w, nil).AnyTimes()
1718+
dbm.EXPECT().UpdateWorkspaceACLByID(gomock.Any(), arg).Return(nil).AnyTimes()
1719+
check.Args(arg).Asserts(w, policy.ActionCreate)
1720+
}))
1721+
s.Run("GetLatestWorkspaceBuildByWorkspaceID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1722+
w := testutil.Fake(s.T(), faker, database.Workspace{})
1723+
b := testutil.Fake(s.T(), faker, database.WorkspaceBuild{WorkspaceID: w.ID})
1724+
dbm.EXPECT().GetWorkspaceByID(gomock.Any(), w.ID).Return(w, nil).AnyTimes()
1725+
dbm.EXPECT().GetLatestWorkspaceBuildByWorkspaceID(gomock.Any(), w.ID).Return(b, nil).AnyTimes()
1726+
check.Args(w.ID).Asserts(w, policy.ActionRead).Returns(b)
1727+
}))
1728+
s.Run("GetWorkspaceAgentByID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1729+
w := testutil.Fake(s.T(), faker, database.Workspace{})
1730+
agt := testutil.Fake(s.T(), faker, database.WorkspaceAgent{})
1731+
dbm.EXPECT().GetWorkspaceByAgentID(gomock.Any(), agt.ID).Return(w, nil).AnyTimes()
1732+
dbm.EXPECT().GetWorkspaceAgentByID(gomock.Any(), agt.ID).Return(agt, nil).AnyTimes()
1733+
check.Args(agt.ID).Asserts(w, policy.ActionRead).Returns(agt)
1734+
}))
18051735
s.Run("GetWorkspaceAgentsByWorkspaceAndBuildNumber", s.Subtest(func(db database.Store, check *expects) {
18061736
u := dbgen.User(s.T(), db, database.User{})
18071737
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