Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit8fd6f90

Browse files
committed
more tests and rbac fix
1 parentf617f94 commit8fd6f90

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-
iferr:=q.authorizeContext(ctx,policy.ActionDelete,rbac.ResourceProvisionerKeys);err!=nil {
1079-
returnerr
1080-
}
1081-
returnq.db.DeleteProvisionerKey(ctx,id)
1078+
returndeleteQ(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 {
@@ -1673,11 +1670,12 @@ func (q *querier) GetProvisionerJobsCreatedAfter(ctx context.Context, createdAt
16731670
returnq.db.GetProvisionerJobsCreatedAfter(ctx,createdAt)
16741671
}
16751672

1673+
func (q*querier)GetProvisionerKeyByID(ctx context.Context,id uuid.UUID) (database.ProvisionerKey,error) {
1674+
returnfetch(q.log,q.auth,q.db.GetProvisionerKeyByID)(ctx,id)
1675+
}
1676+
16761677
func (q*querier)GetProvisionerKeyByName(ctx context.Context,name database.GetProvisionerKeyByNameParams) (database.ProvisionerKey,error) {
1677-
iferr:=q.authorizeContext(ctx,policy.ActionRead,rbac.ResourceProvisionerKeys);err!=nil {
1678-
return database.ProvisionerKey{},err
1679-
}
1680-
returnq.db.GetProvisionerKeyByName(ctx,name)
1678+
returnfetch(q.log,q.auth,q.db.GetProvisionerKeyByName)(ctx,name)
16811679
}
16821680

16831681
func (q*querier)GetProvisionerLogsAfterID(ctx context.Context,arg database.GetProvisionerLogsAfterIDParams) ([]database.ProvisionerJobLog,error) {
@@ -2625,10 +2623,7 @@ func (q *querier) InsertProvisionerJobLogs(ctx context.Context, arg database.Ins
26252623
}
26262624

26272625
func (q*querier)InsertProvisionerKey(ctx context.Context,arg database.InsertProvisionerKeyParams) (database.ProvisionerKey,error) {
2628-
iferr:=q.authorizeContext(ctx,policy.ActionCreate,rbac.ResourceProvisionerKeys);err!=nil {
2629-
return database.ProvisionerKey{},err
2630-
}
2631-
returnq.db.InsertProvisionerKey(ctx,arg)
2626+
returninsert(q.log,q.auth,rbac.ResourceProvisionerKeys.InOrg(arg.OrganizationID),q.db.InsertProvisionerKey)(ctx,arg)
26322627
}
26332628

26342629
func (q*querier)InsertReplica(ctx context.Context,arg database.InsertReplicaParams) (database.Replica,error) {
@@ -2860,10 +2855,7 @@ func (q *querier) InsertWorkspaceResourceMetadata(ctx context.Context, arg datab
28602855
}
28612856

28622857
func (q*querier)ListProvisionerKeysByOrganization(ctx context.Context,organizationID uuid.UUID) ([]database.ListProvisionerKeysByOrganizationRow,error) {
2863-
iferr:=q.authorizeContext(ctx,policy.ActionRead,rbac.ResourceProvisionerKeys);err!=nil {
2864-
returnnil,err
2865-
}
2866-
returnq.db.ListProvisionerKeysByOrganization(ctx,organizationID)
2858+
returnfetchWithPostFilter(q.auth,policy.ActionRead,q.db.ListProvisionerKeysByOrganization)(ctx,organizationID)
28672859
}
28682860

28692861
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
@@ -3180,6 +3180,19 @@ func (q *FakeQuerier) GetProvisionerJobsCreatedAfter(_ context.Context, after ti
31803180
returnjobs,nil
31813181
}
31823182

3183+
func (q*FakeQuerier)GetProvisionerKeyByID(ctx context.Context,id uuid.UUID) (database.ProvisionerKey,error) {
3184+
q.mutex.RLock()
3185+
deferq.mutex.RUnlock()
3186+
3187+
for_,key:=rangeq.provisionerKeys {
3188+
ifkey.ID==id {
3189+
returnkey,nil
3190+
}
3191+
}
3192+
3193+
return database.ProvisionerKey{},sql.ErrNoRows
3194+
}
3195+
31833196
func (q*FakeQuerier)GetProvisionerKeyByName(ctx context.Context,arg database.GetProvisionerKeyByNameParams) (database.ProvisionerKey,error) {
31843197
q.mutex.RLock()
31853198
deferq.mutex.RUnlock()

‎coderd/database/dbmetrics/dbmetrics.go

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing 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 aboutcustomizing 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 (pListProvisionerKeysByOrganizationRow)RBACObject() rbac.Object {
222+
returnrbac.ResourceProvisionerKeys.
223+
WithID(p.ID).
224+
InOrg(p.OrganizationID)
225+
}
226+
221227
func (wWorkspaceProxy)RBACObject() rbac.Object {
222228
returnrbac.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 aboutcustomizing 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 aboutcustomizing 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
funcProvisionerKeyParam(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
ifprovisionerKeyQuery=="" {
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
}

‎coderd/provisionerkeys_test.go

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import (
1515
funcTestProvisionerKeys(t*testing.T) {
1616
t.Parallel()
1717

18-
ctx,cancel:=context.WithTimeout(context.Background(),testutil.WaitLong)
18+
ctx,cancel:=context.WithTimeout(context.Background(),testutil.WaitLong*10)
1919
t.Cleanup(cancel)
2020
client:=coderdtest.New(t,nil)
2121
owner:=coderdtest.CreateFirstUser(t,client)
@@ -70,7 +70,25 @@ func TestProvisionerKeys(t *testing.T) {
7070
_,err=orgAdmin.CreateProvisionerKey(ctx,owner.OrganizationID, codersdk.CreateProvisionerKeyRequest{
7171
Name:"key",
7272
})
73-
require.Error(t,err,"org admin create provisioner key")
73+
require.ErrorContains(t,err,"already exists")
74+
75+
// key name cannot have special characters
76+
_,err=orgAdmin.CreateProvisionerKey(ctx,owner.OrganizationID, codersdk.CreateProvisionerKeyRequest{
77+
Name:"key with spaces",
78+
})
79+
require.ErrorContains(t,err,"org admin create provisioner key")
80+
81+
// key name cannot be too long
82+
_,err=orgAdmin.CreateProvisionerKey(ctx,owner.OrganizationID, codersdk.CreateProvisionerKeyRequest{
83+
Name:"key with spaces",
84+
})
85+
require.ErrorContains(t,err,"less than 64 characters")
86+
87+
// key name cannot be empty
88+
_,err=orgAdmin.CreateProvisionerKey(ctx,owner.OrganizationID, codersdk.CreateProvisionerKeyRequest{
89+
Name:"",
90+
})
91+
require.ErrorContains(t,err,"cannot be empty")
7492

7593
// org admin can list provisioner keys
7694
keys,err=orgAdmin.ListProvisionerKeys(ctx,owner.OrganizationID)
@@ -83,5 +101,5 @@ func TestProvisionerKeys(t *testing.T) {
83101

84102
// org admin cannot delete a provisioner key that doesn't exist
85103
err=orgAdmin.DeleteProvisionerKey(ctx,owner.OrganizationID,"key")
86-
require.Error(t,err,"org admin delete provisioner key")
104+
require.ErrorContains(t,err,"Resource not found")
87105
}

‎codersdk/provisionerdaemons.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ func (c *Client) ListProvisionerKeys(ctx context.Context, organizationID uuid.UU
309309
}
310310
deferres.Body.Close()
311311

312-
ifres.StatusCode!=http.StatusCreated {
312+
ifres.StatusCode!=http.StatusOK {
313313
returnnil,ReadBodyAsError(res)
314314
}
315315
varresp []ProvisionerKey

‎site/src/api/typesGenerated.ts

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

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp