Skip to content

Commit b668a21

Browse files
committed
fix dbauthz
1 parent c211af4 commit b668a21

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed

coderd/database/dbauthz/dbauthz.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3399,7 +3399,9 @@ func (q *querier) InsertWorkspaceAgent(ctx context.Context, arg database.InsertW
33993399
}
34003400

34013401
func (q *querier) InsertWorkspaceAgentDevcontainers(ctx context.Context, arg database.InsertWorkspaceAgentDevcontainersParams) ([]database.WorkspaceAgentDevcontainer, error) {
3402-
// TODO: This is used by the agent, should we have an rbac check here?
3402+
if err := q.authorizeContext(ctx, policy.ActionCreate, rbac.ResourceSystem); err != nil {
3403+
return nil, err
3404+
}
34033405
return q.db.InsertWorkspaceAgentDevcontainers(ctx, arg)
34043406
}
34053407

coderd/database/dbauthz/dbauthz_test.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3074,6 +3074,36 @@ func (s *MethodTestSuite) TestWorkspace() {
30743074
})
30753075
check.Args(w.ID).Asserts(w, policy.ActionUpdate).Returns()
30763076
}))
3077+
s.Run("GetWorkspaceAgentDevcontainersByAgentID", s.Subtest(func(db database.Store, check *expects) {
3078+
u := dbgen.User(s.T(), db, database.User{})
3079+
o := dbgen.Organization(s.T(), db, database.Organization{})
3080+
tpl := dbgen.Template(s.T(), db, database.Template{
3081+
OrganizationID: o.ID,
3082+
CreatedBy: u.ID,
3083+
})
3084+
tv := dbgen.TemplateVersion(s.T(), db, database.TemplateVersion{
3085+
TemplateID: uuid.NullUUID{UUID: tpl.ID, Valid: true},
3086+
OrganizationID: o.ID,
3087+
CreatedBy: u.ID,
3088+
})
3089+
w := dbgen.Workspace(s.T(), db, database.WorkspaceTable{
3090+
TemplateID: tpl.ID,
3091+
OrganizationID: o.ID,
3092+
OwnerID: u.ID,
3093+
})
3094+
j := dbgen.ProvisionerJob(s.T(), db, nil, database.ProvisionerJob{
3095+
Type: database.ProvisionerJobTypeWorkspaceBuild,
3096+
})
3097+
b := dbgen.WorkspaceBuild(s.T(), db, database.WorkspaceBuild{
3098+
JobID: j.ID,
3099+
WorkspaceID: w.ID,
3100+
TemplateVersionID: tv.ID,
3101+
})
3102+
res := dbgen.WorkspaceResource(s.T(), db, database.WorkspaceResource{JobID: b.JobID})
3103+
agt := dbgen.WorkspaceAgent(s.T(), db, database.WorkspaceAgent{ResourceID: res.ID})
3104+
d := dbgen.WorkspaceAgentDevcontainer(s.T(), db, database.WorkspaceAgentDevcontainer{WorkspaceAgentID: agt.ID})
3105+
check.Args(agt.ID).Asserts(w, policy.ActionRead).Returns([]database.WorkspaceAgentDevcontainer{d})
3106+
}))
30773107
}
30783108

30793109
func (s *MethodTestSuite) TestWorkspacePortSharing() {
@@ -3958,6 +3988,12 @@ func (s *MethodTestSuite) TestSystemFunctions() {
39583988
WorkspaceResourceID: uuid.New(),
39593989
}).Asserts(rbac.ResourceSystem, policy.ActionCreate)
39603990
}))
3991+
s.Run("InsertWorkspaceAgentDevcontainers", s.Subtest(func(db database.Store, check *expects) {
3992+
a := dbgen.WorkspaceAgent(s.T(), db, database.WorkspaceAgent{})
3993+
check.Args(database.InsertWorkspaceAgentDevcontainersParams{
3994+
WorkspaceAgentID: a.ID,
3995+
}).Asserts(rbac.ResourceSystem, policy.ActionCreate)
3996+
}))
39613997
s.Run("UpdateWorkspaceAgentConnectionByID", s.Subtest(func(db database.Store, check *expects) {
39623998
dbtestutil.DisableForeignKeysAndTriggers(s.T(), db)
39633999
ws := dbgen.Workspace(s.T(), db, database.WorkspaceTable{})

0 commit comments

Comments
 (0)