Skip to content

Commit b642e2c

Browse files
committed
more tests and rbac fix
1 parent 305a5e9 commit b642e2c

File tree

13 files changed

+124
-24
lines changed

13 files changed

+124
-24
lines changed

coderd/coderd.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -918,7 +918,7 @@ func New(options *Options) *API {
918918
r.Route("/provisionerkeys", func(r chi.Router) {
919919
r.Get("/", api.provisionerKeys)
920920
r.Post("/", api.postProvisionerKey)
921-
r.Route("/{provisionerKey}", func(r chi.Router) {
921+
r.Route("/{provisionerkey}", func(r chi.Router) {
922922
r.Use(
923923
httpmw.ExtractProvisionerKeyParam(options.Database),
924924
)

coderd/database/dbauthz/dbauthz.go

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1075,10 +1075,7 @@ func (q *querier) DeleteOrganizationMember(ctx context.Context, arg database.Del
10751075
}
10761076

10771077
func (q *querier) DeleteProvisionerKey(ctx context.Context, id uuid.UUID) error {
1078-
if err := q.authorizeContext(ctx, policy.ActionDelete, rbac.ResourceProvisionerKeys); err != nil {
1079-
return err
1080-
}
1081-
return q.db.DeleteProvisionerKey(ctx, id)
1078+
return deleteQ(q.log, q.auth, q.db.GetProvisionerKeyByID, q.db.DeleteProvisionerKey)(ctx, id)
10821079
}
10831080

10841081
func (q *querier) DeleteReplicasUpdatedBefore(ctx context.Context, updatedAt time.Time) error {
@@ -1678,11 +1675,12 @@ func (q *querier) GetProvisionerJobsCreatedAfter(ctx context.Context, createdAt
16781675
return q.db.GetProvisionerJobsCreatedAfter(ctx, createdAt)
16791676
}
16801677

1678+
func (q *querier) GetProvisionerKeyByID(ctx context.Context, id uuid.UUID) (database.ProvisionerKey, error) {
1679+
return fetch(q.log, q.auth, q.db.GetProvisionerKeyByID)(ctx, id)
1680+
}
1681+
16811682
func (q *querier) GetProvisionerKeyByName(ctx context.Context, name database.GetProvisionerKeyByNameParams) (database.ProvisionerKey, error) {
1682-
if err := q.authorizeContext(ctx, policy.ActionRead, rbac.ResourceProvisionerKeys); err != nil {
1683-
return database.ProvisionerKey{}, err
1684-
}
1685-
return q.db.GetProvisionerKeyByName(ctx, name)
1683+
return fetch(q.log, q.auth, q.db.GetProvisionerKeyByName)(ctx, name)
16861684
}
16871685

16881686
func (q *querier) GetProvisionerLogsAfterID(ctx context.Context, arg database.GetProvisionerLogsAfterIDParams) ([]database.ProvisionerJobLog, error) {
@@ -2630,10 +2628,7 @@ func (q *querier) InsertProvisionerJobLogs(ctx context.Context, arg database.Ins
26302628
}
26312629

26322630
func (q *querier) InsertProvisionerKey(ctx context.Context, arg database.InsertProvisionerKeyParams) (database.ProvisionerKey, error) {
2633-
if err := q.authorizeContext(ctx, policy.ActionCreate, rbac.ResourceProvisionerKeys); err != nil {
2634-
return database.ProvisionerKey{}, err
2635-
}
2636-
return q.db.InsertProvisionerKey(ctx, arg)
2631+
return insert(q.log, q.auth, rbac.ResourceProvisionerKeys.InOrg(arg.OrganizationID), q.db.InsertProvisionerKey)(ctx, arg)
26372632
}
26382633

26392634
func (q *querier) InsertReplica(ctx context.Context, arg database.InsertReplicaParams) (database.Replica, error) {
@@ -2865,10 +2860,7 @@ func (q *querier) InsertWorkspaceResourceMetadata(ctx context.Context, arg datab
28652860
}
28662861

28672862
func (q *querier) ListProvisionerKeysByOrganization(ctx context.Context, organizationID uuid.UUID) ([]database.ListProvisionerKeysByOrganizationRow, error) {
2868-
if err := q.authorizeContext(ctx, policy.ActionRead, rbac.ResourceProvisionerKeys); err != nil {
2869-
return nil, err
2870-
}
2871-
return q.db.ListProvisionerKeysByOrganization(ctx, organizationID)
2863+
return fetchWithPostFilter(q.auth, policy.ActionRead, q.db.ListProvisionerKeysByOrganization)(ctx, organizationID)
28722864
}
28732865

28742866
func (q *querier) ListWorkspaceAgentPortShares(ctx context.Context, workspaceID uuid.UUID) ([]database.WorkspaceAgentPortShare, error) {

coderd/database/dbmem/dbmem.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3210,6 +3210,19 @@ func (q *FakeQuerier) GetProvisionerJobsCreatedAfter(_ context.Context, after ti
32103210
return jobs, nil
32113211
}
32123212

3213+
func (q *FakeQuerier) GetProvisionerKeyByID(ctx context.Context, id uuid.UUID) (database.ProvisionerKey, error) {
3214+
q.mutex.RLock()
3215+
defer q.mutex.RUnlock()
3216+
3217+
for _, key := range q.provisionerKeys {
3218+
if key.ID == id {
3219+
return key, nil
3220+
}
3221+
}
3222+
3223+
return database.ProvisionerKey{}, sql.ErrNoRows
3224+
}
3225+
32133226
func (q *FakeQuerier) GetProvisionerKeyByName(ctx context.Context, arg database.GetProvisionerKeyByNameParams) (database.ProvisionerKey, error) {
32143227
q.mutex.RLock()
32153228
defer q.mutex.RUnlock()

coderd/database/dbmetrics/dbmetrics.go

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/dbmock/dbmock.go

Lines changed: 15 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/modelmethods.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,12 @@ func (p ProvisionerKey) RBACObject() rbac.Object {
218218
InOrg(p.OrganizationID)
219219
}
220220

221+
func (p ListProvisionerKeysByOrganizationRow) RBACObject() rbac.Object {
222+
return rbac.ResourceProvisionerKeys.
223+
WithID(p.ID).
224+
InOrg(p.OrganizationID)
225+
}
226+
221227
func (w WorkspaceProxy) RBACObject() rbac.Object {
222228
return rbac.ResourceWorkspaceProxy.
223229
WithID(w.ID)

coderd/database/querier.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries.sql.go

Lines changed: 22 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/provisionerkeys.sql

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,14 @@ INSERT INTO
1010
VALUES
1111
($1, $2, $3, $4, $5) RETURNING *;
1212

13+
-- name: GetProvisionerKeyByID :one
14+
SELECT
15+
*
16+
FROM
17+
provisioner_keys
18+
WHERE
19+
id = $1;
20+
1321
-- name: GetProvisionerKeyByName :one
1422
SELECT
1523
*

coderd/httpmw/provisionerkey.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ type provisionerKeyParamContextKey struct{}
1515

1616
// ProvisionerKeyParam returns the user from the ExtractProvisionerKeyParam handler.
1717
func ProvisionerKeyParam(r *http.Request) database.ProvisionerKey {
18-
user, ok := r.Context().Value(userParamContextKey{}).(database.ProvisionerKey)
18+
user, ok := r.Context().Value(provisionerKeyParamContextKey{}).(database.ProvisionerKey)
1919
if !ok {
2020
panic("developer error: provisioner key parameter middleware not provided")
2121
}
@@ -30,10 +30,10 @@ func ExtractProvisionerKeyParam(db database.Store) func(http.Handler) http.Handl
3030
ctx := r.Context()
3131
organization := OrganizationParam(r)
3232

33-
provisionerKeyQuery := chi.URLParam(r, "provisionerKey")
33+
provisionerKeyQuery := chi.URLParam(r, "provisionerkey")
3434
if provisionerKeyQuery == "" {
3535
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
36-
Message: "\"provisionerKey\" must be provided.",
36+
Message: "\"provisionerkey\" must be provided.",
3737
})
3838
return
3939
}

0 commit comments

Comments
 (0)