Skip to content

Commit 5f34572

Browse files
committed
dbauthz: migrate initial TestWorkspace subtests to mocked DB
1 parent 1715fe2 commit 5f34572

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
@@ -1766,144 +1766,74 @@ func (s *MethodTestSuite) TestUser() {
17661766
}
17671767

17681768
func (s *MethodTestSuite) TestWorkspace() {
1769-
s.Run("GetWorkspaceByID", s.Subtest(func(db database.Store, check *expects) {
1770-
u := dbgen.User(s.T(), db, database.User{})
1771-
o := dbgen.Organization(s.T(), db, database.Organization{})
1772-
tpl := dbgen.Template(s.T(), db, database.Template{
1773-
OrganizationID: o.ID,
1774-
CreatedBy: u.ID,
1775-
})
1776-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{
1777-
OwnerID: u.ID,
1778-
OrganizationID: o.ID,
1779-
TemplateID: tpl.ID,
1780-
})
1781-
check.Args(ws.ID).Asserts(ws, policy.ActionRead)
1782-
}))
1783-
s.Run("GetWorkspaceByResourceID", s.Subtest(func(db database.Store, check *expects) {
1784-
u := dbgen.User(s.T(), db, database.User{})
1785-
o := dbgen.Organization(s.T(), db, database.Organization{})
1786-
j := dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{Type: database.ProvisionerJobTypeWorkspaceBuild})
1787-
tpl := dbgen.Template(s.T(), db, database.Template{CreatedBy: u.ID, OrganizationID: o.ID})
1788-
tv := dbgen.TemplateVersion(s.T(), db, database.TemplateVersion{
1789-
TemplateID: uuid.NullUUID{UUID: tpl.ID, Valid: true},
1790-
JobID: j.ID,
1791-
OrganizationID: o.ID,
1792-
CreatedBy: u.ID,
1793-
})
1794-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{OwnerID: u.ID, TemplateID: tpl.ID, OrganizationID: o.ID})
1795-
_ = dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{WorkspaceID: ws.ID, JobID: j.ID, TemplateVersionID: tv.ID})
1796-
res := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: j.ID})
1797-
check.Args(res.ID).Asserts(ws, policy.ActionRead)
1798-
}))
1799-
s.Run("GetWorkspaces", s.Subtest(func(_ database.Store, check *expects) {
1800-
// No asserts here because SQLFilter.
1801-
check.Args(database.GetWorkspacesParams{}).Asserts()
1802-
}))
1803-
s.Run("GetAuthorizedWorkspaces", s.Subtest(func(_ database.Store, check *expects) {
1804-
// No asserts here because SQLFilter.
1805-
check.Args(database.GetWorkspacesParams{}, emptyPreparedAuthorized{}).Asserts()
1806-
}))
1807-
s.Run("GetWorkspacesAndAgentsByOwnerID", s.Subtest(func(db database.Store, check *expects) {
1808-
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
1809-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{})
1810-
build := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{WorkspaceID: ws.ID, JobID: uuid.New()})
1811-
_ = dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{ID: build.JobID, Type: database.ProvisionerJobTypeWorkspaceBuild})
1812-
res := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: build.JobID})
1813-
_ = dbgen.WorkspaceAgent(s.T(), db, database.WorkspaceAgent{ResourceID: res.ID})
1814-
// No asserts here because SQLFilter.
1815-
check.Args(ws.OwnerID).Asserts()
1816-
}))
1817-
s.Run("GetAuthorizedWorkspacesAndAgentsByOwnerID", s.Subtest(func(db database.Store, check *expects) {
1818-
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
1819-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{})
1820-
build := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{WorkspaceID: ws.ID, JobID: uuid.New()})
1821-
_ = dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{ID: build.JobID, Type: database.ProvisionerJobTypeWorkspaceBuild})
1822-
res := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: build.JobID})
1823-
_ = dbgen.WorkspaceAgent(s.T(), db, database.WorkspaceAgent{ResourceID: res.ID})
1824-
// No asserts here because SQLFilter.
1825-
check.Args(ws.OwnerID, emptyPreparedAuthorized{}).Asserts()
1826-
}))
1827-
s.Run("GetWorkspaceBuildParametersByBuildIDs", s.Subtest(func(db database.Store, check *expects) {
1828-
// no asserts here because SQLFilter
1829-
check.Args([]uuid.UUID{}).Asserts()
1830-
}))
1831-
s.Run("GetAuthorizedWorkspaceBuildParametersByBuildIDs", s.Subtest(func(db database.Store, check *expects) {
1832-
// no asserts here because SQLFilter
1833-
check.Args([]uuid.UUID{}, emptyPreparedAuthorized{}).Asserts()
1834-
}))
1835-
s.Run("UpdateWorkspaceACLByID", s.Subtest(func(db database.Store, check *expects) {
1836-
u := dbgen.User(s.T(), db, database.User{})
1837-
o := dbgen.Organization(s.T(), db, database.Organization{})
1838-
tpl := dbgen.Template(s.T(), db, database.Template{
1839-
OrganizationID: o.ID,
1840-
CreatedBy: u.ID,
1841-
})
1842-
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{
1843-
OwnerID: u.ID,
1844-
OrganizationID: o.ID,
1845-
TemplateID: tpl.ID,
1846-
})
1847-
check.Args(database.UpdateWorkspaceACLByIDParams{
1848-
ID: ws.ID,
1849-
}).Asserts(ws, policy.ActionCreate)
1850-
}))
1851-
s.Run("GetLatestWorkspaceBuildByWorkspaceID", s.Subtest(func(db database.Store, check *expects) {
1852-
u := dbgen.User(s.T(), db, database.User{})
1853-
o := dbgen.Organization(s.T(), db, database.Organization{})
1854-
tpl := dbgen.Template(s.T(), db, database.Template{
1855-
OrganizationID: o.ID,
1856-
CreatedBy: u.ID,
1857-
})
1858-
tv := dbgen.TemplateVersion(s.T(), db, database.TemplateVersion{
1859-
TemplateID: uuid.NullUUID{UUID: tpl.ID, Valid: true},
1860-
OrganizationID: o.ID,
1861-
CreatedBy: u.ID,
1862-
})
1863-
w := dbgen.Workspace(s.T(), db, database.WorkspaceTable{
1864-
TemplateID: tpl.ID,
1865-
OrganizationID: o.ID,
1866-
OwnerID: u.ID,
1867-
})
1868-
j := dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{
1869-
Type: database.ProvisionerJobTypeWorkspaceBuild,
1870-
})
1871-
b := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{
1872-
JobID: j.ID,
1873-
WorkspaceID: w.ID,
1874-
TemplateVersionID: tv.ID,
1875-
})
1876-
check.Args(w.ID).Asserts(w, policy.ActionRead).Returns(b)
1877-
}))
1878-
s.Run("GetWorkspaceAgentByID", s.Subtest(func(db database.Store, check *expects) {
1879-
u := dbgen.User(s.T(), db, database.User{})
1880-
o := dbgen.Organization(s.T(), db, database.Organization{})
1881-
tpl := dbgen.Template(s.T(), db, database.Template{
1882-
OrganizationID: o.ID,
1883-
CreatedBy: u.ID,
1884-
})
1885-
tv := dbgen.TemplateVersion(s.T(), db, database.TemplateVersion{
1886-
TemplateID: uuid.NullUUID{UUID: tpl.ID, Valid: true},
1887-
OrganizationID: o.ID,
1888-
CreatedBy: u.ID,
1889-
})
1890-
w := dbgen.Workspace(s.T(), db, database.WorkspaceTable{
1891-
TemplateID: tpl.ID,
1892-
OrganizationID: o.ID,
1893-
OwnerID: u.ID,
1894-
})
1895-
j := dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{
1896-
Type: database.ProvisionerJobTypeWorkspaceBuild,
1897-
})
1898-
b := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{
1899-
JobID: j.ID,
1900-
WorkspaceID: w.ID,
1901-
TemplateVersionID: tv.ID,
1902-
})
1903-
res := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: b.JobID})
1904-
agt := dbgen.WorkspaceAgent(s.T(), db, database.WorkspaceAgent{ResourceID: res.ID})
1905-
check.Args(agt.ID).Asserts(w, policy.ActionRead).Returns(agt)
1906-
}))
1769+
s.Run("GetWorkspaceByID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1770+
ws := testutil.Fake(s.T(), faker, database.Workspace{})
1771+
dbm.EXPECT().GetWorkspaceByID(gomock.Any(), ws.ID).Return(ws, nil).AnyTimes()
1772+
check.Args(ws.ID).Asserts(ws, policy.ActionRead).Returns(ws)
1773+
}))
1774+
s.Run("GetWorkspaceByResourceID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1775+
ws := testutil.Fake(s.T(), faker, database.Workspace{})
1776+
res := testutil.Fake(s.T(), faker, database.WorkspaceResource{})
1777+
dbm.EXPECT().GetWorkspaceByResourceID(gomock.Any(), res.ID).Return(ws, nil).AnyTimes()
1778+
check.Args(res.ID).Asserts(ws, policy.ActionRead).Returns(ws)
1779+
}))
1780+
s.Run("GetWorkspaces", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
1781+
arg := database.GetWorkspacesParams{}
1782+
dbm.EXPECT().GetAuthorizedWorkspaces(gomock.Any(), arg, gomock.Any()).Return([]database.GetWorkspacesRow{}, nil).AnyTimes()
1783+
// No asserts here because SQLFilter.
1784+
check.Args(arg).Asserts()
1785+
}))
1786+
s.Run("GetAuthorizedWorkspaces", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
1787+
arg := database.GetWorkspacesParams{}
1788+
dbm.EXPECT().GetAuthorizedWorkspaces(gomock.Any(), arg, gomock.Any()).Return([]database.GetWorkspacesRow{}, nil).AnyTimes()
1789+
// No asserts here because SQLFilter.
1790+
check.Args(arg, emptyPreparedAuthorized{}).Asserts()
1791+
}))
1792+
s.Run("GetWorkspacesAndAgentsByOwnerID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1793+
ws := testutil.Fake(s.T(), faker, database.Workspace{})
1794+
dbm.EXPECT().GetAuthorizedWorkspacesAndAgentsByOwnerID(gomock.Any(), ws.OwnerID, gomock.Any()).Return([]database.GetWorkspacesAndAgentsByOwnerIDRow{}, nil).AnyTimes()
1795+
// No asserts here because SQLFilter.
1796+
check.Args(ws.OwnerID).Asserts()
1797+
}))
1798+
s.Run("GetAuthorizedWorkspacesAndAgentsByOwnerID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1799+
ws := testutil.Fake(s.T(), faker, database.Workspace{})
1800+
dbm.EXPECT().GetAuthorizedWorkspacesAndAgentsByOwnerID(gomock.Any(), ws.OwnerID, gomock.Any()).Return([]database.GetWorkspacesAndAgentsByOwnerIDRow{}, nil).AnyTimes()
1801+
// No asserts here because SQLFilter.
1802+
check.Args(ws.OwnerID, emptyPreparedAuthorized{}).Asserts()
1803+
}))
1804+
s.Run("GetWorkspaceBuildParametersByBuildIDs", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
1805+
ids := []uuid.UUID{}
1806+
dbm.EXPECT().GetAuthorizedWorkspaceBuildParametersByBuildIDs(gomock.Any(), ids, gomock.Any()).Return([]database.WorkspaceBuildParameter{}, nil).AnyTimes()
1807+
// no asserts here because SQLFilter
1808+
check.Args(ids).Asserts()
1809+
}))
1810+
s.Run("GetAuthorizedWorkspaceBuildParametersByBuildIDs", s.Mocked(func(dbm *dbmock.MockStore, _ *gofakeit.Faker, check *expects) {
1811+
ids := []uuid.UUID{}
1812+
dbm.EXPECT().GetAuthorizedWorkspaceBuildParametersByBuildIDs(gomock.Any(), ids, gomock.Any()).Return([]database.WorkspaceBuildParameter{}, nil).AnyTimes()
1813+
// no asserts here because SQLFilter
1814+
check.Args(ids, emptyPreparedAuthorized{}).Asserts()
1815+
}))
1816+
s.Run("UpdateWorkspaceACLByID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1817+
w := testutil.Fake(s.T(), faker, database.Workspace{})
1818+
arg := database.UpdateWorkspaceACLByIDParams{ID: w.ID}
1819+
dbm.EXPECT().GetWorkspaceByID(gomock.Any(), w.ID).Return(w, nil).AnyTimes()
1820+
dbm.EXPECT().UpdateWorkspaceACLByID(gomock.Any(), arg).Return(nil).AnyTimes()
1821+
check.Args(arg).Asserts(w, policy.ActionCreate)
1822+
}))
1823+
s.Run("GetLatestWorkspaceBuildByWorkspaceID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1824+
w := testutil.Fake(s.T(), faker, database.Workspace{})
1825+
b := testutil.Fake(s.T(), faker, database.WorkspaceBuild{WorkspaceID: w.ID})
1826+
dbm.EXPECT().GetWorkspaceByID(gomock.Any(), w.ID).Return(w, nil).AnyTimes()
1827+
dbm.EXPECT().GetLatestWorkspaceBuildByWorkspaceID(gomock.Any(), w.ID).Return(b, nil).AnyTimes()
1828+
check.Args(w.ID).Asserts(w, policy.ActionRead).Returns(b)
1829+
}))
1830+
s.Run("GetWorkspaceAgentByID", s.Mocked(func(dbm *dbmock.MockStore, faker *gofakeit.Faker, check *expects) {
1831+
w := testutil.Fake(s.T(), faker, database.Workspace{})
1832+
agt := testutil.Fake(s.T(), faker, database.WorkspaceAgent{})
1833+
dbm.EXPECT().GetWorkspaceByAgentID(gomock.Any(), agt.ID).Return(w, nil).AnyTimes()
1834+
dbm.EXPECT().GetWorkspaceAgentByID(gomock.Any(), agt.ID).Return(agt, nil).AnyTimes()
1835+
check.Args(agt.ID).Asserts(w, policy.ActionRead).Returns(agt)
1836+
}))
19071837
s.Run("GetWorkspaceAgentsByWorkspaceAndBuildNumber", s.Subtest(func(db database.Store, check *expects) {
19081838
u := dbgen.User(s.T(), db, database.User{})
19091839
o := dbgen.Organization(s.T(), db, database.Organization{})

0 commit comments

Comments
 (0)