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

Commitdd49c08

Browse files
committed
fix tests
1 parent765c93a commitdd49c08

File tree

3 files changed

+31
-29
lines changed

3 files changed

+31
-29
lines changed

‎coderd/provisionerjobs.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import (
2020
"github.com/coder/coder/v2/coderd/database/pubsub"
2121
"github.com/coder/coder/v2/coderd/httpapi"
2222
"github.com/coder/coder/v2/coderd/httpmw"
23+
"github.com/coder/coder/v2/coderd/rbac"
24+
"github.com/coder/coder/v2/coderd/rbac/policy"
2325
"github.com/coder/coder/v2/coderd/util/slice"
2426
"github.com/coder/coder/v2/codersdk"
2527
"github.com/coder/coder/v2/codersdk/wsjson"
@@ -41,6 +43,12 @@ func (api *API) provisionerJobs(rw http.ResponseWriter, r *http.Request) {
4143
ctx:=r.Context()
4244
org:=httpmw.OrganizationParam(r)
4345

46+
// For now, only owners and template admins can access provisioner jobs.
47+
if!api.Authorize(r,policy.ActionRead,rbac.ResourceProvisionerJobs.InOrg(org.ID)) {
48+
httpapi.ResourceNotFound(rw)
49+
return
50+
}
51+
4452
qp:=r.URL.Query()
4553
p:=httpapi.NewQueryParamParser()
4654
limit:=p.PositiveInt32(qp,0,"limit")

‎coderd/provisionerjobs_test.go

Lines changed: 20 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package coderd_test
22

33
import (
44
"context"
5+
"database/sql"
56
"encoding/json"
67
"testing"
78
"time"
@@ -13,6 +14,8 @@ import (
1314
"github.com/coder/coder/v2/coderd/database"
1415
"github.com/coder/coder/v2/coderd/database/dbgen"
1516
"github.com/coder/coder/v2/coderd/database/dbtestutil"
17+
"github.com/coder/coder/v2/coderd/database/dbtime"
18+
"github.com/coder/coder/v2/coderd/rbac"
1619
"github.com/coder/coder/v2/codersdk"
1720
"github.com/coder/coder/v2/provisioner/echo"
1821
"github.com/coder/coder/v2/provisionersdk/proto"
@@ -22,37 +25,16 @@ import (
2225
funcTestProvisionerJobs(t*testing.T) {
2326
t.Parallel()
2427

25-
// encode := func(v interface{}) []byte {
26-
// b, err := json.Marshal(v)
27-
// require.NoError(t, err)
28-
// return b
29-
// }
30-
31-
// db, ps := dbtestutil.NewDB(t,
32-
// dbtestutil.WithDumpOnFailure(),
33-
// //nolint:gocritic // Use UTC for consistent timestamp length in golden files.
34-
// dbtestutil.WithTimezone("UTC"),
35-
// )
36-
// client, _, coderdAPI := coderdtest.NewWithAPI(t, &coderdtest.Options{
37-
// IncludeProvisionerDaemon: true,
38-
// Database: db,
39-
// Pubsub: ps,
40-
// })
41-
// owner := coderdtest.CreateFirstUser(t, client)
42-
// _, memberUser := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID)
43-
4428
db,ps:=dbtestutil.NewDB(t,dbtestutil.WithDumpOnFailure())
4529
client:=coderdtest.New(t,&coderdtest.Options{
4630
IncludeProvisionerDaemon:true,
4731
Database:db,
4832
Pubsub:ps,
4933
})
5034
owner:=coderdtest.CreateFirstUser(t,client)
35+
templateAdminClient,_:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID,rbac.ScopedRoleOrgTemplateAdmin(owner.OrganizationID))
5136
memberClient,member:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID)
5237

53-
// client, db := coderdtest.NewWithDatabase(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
54-
// user := coderdtest.CreateFirstUser(t, client)
55-
5638
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,nil)
5739
coderdtest.AwaitTemplateVersionJobCompleted(t,client,version.ID)
5840
template:=coderdtest.CreateTemplate(t,client,owner.OrganizationID,version.ID)
@@ -70,6 +52,7 @@ func TestProvisionerJobs(t *testing.T) {
7052
wbID:=uuid.New()
7153
job:=dbgen.ProvisionerJob(t,db,nil, database.ProvisionerJob{
7254
OrganizationID:w.OrganizationID,
55+
StartedAt: sql.NullTime{Time:dbtime.Now(),Valid:true},
7356
Type:database.ProvisionerJobTypeWorkspaceBuild,
7457
Input:json.RawMessage(`{"workspace_build_id":"`+wbID.String()+`"}`),
7558
})
@@ -83,33 +66,41 @@ func TestProvisionerJobs(t *testing.T) {
8366
t.Run("All",func(t*testing.T) {
8467
t.Parallel()
8568
ctx:=testutil.Context(t,testutil.WaitMedium)
86-
jobs,err:=memberClient.OrganizationProvisionerJobs(ctx,owner.OrganizationID,nil)
69+
jobs,err:=templateAdminClient.OrganizationProvisionerJobs(ctx,owner.OrganizationID,nil)
8770
require.NoError(t,err)
8871
require.Len(t,jobs,3)
8972
})
9073

9174
t.Run("Pending",func(t*testing.T) {
9275
t.Parallel()
9376
ctx:=testutil.Context(t,testutil.WaitMedium)
94-
jobs,err:=memberClient.OrganizationProvisionerJobs(ctx,owner.OrganizationID,&codersdk.OrganizationProvisionerJobsOptions{
95-
Status: []codersdk.ProvisionerJobStatus{codersdk.ProvisionerJobPending},
77+
jobs,err:=templateAdminClient.OrganizationProvisionerJobs(ctx,owner.OrganizationID,&codersdk.OrganizationProvisionerJobsOptions{
78+
Status: []codersdk.ProvisionerJobStatus{codersdk.ProvisionerJobRunning},
9679
})
97-
for_,job:=rangejobs {
98-
t.Logf("job: %#v",job)
99-
}
10080
require.NoError(t,err)
10181
require.Len(t,jobs,1)
10282
})
10383

10484
t.Run("Limit",func(t*testing.T) {
10585
t.Parallel()
10686
ctx:=testutil.Context(t,testutil.WaitMedium)
107-
jobs,err:=memberClient.OrganizationProvisionerJobs(ctx,owner.OrganizationID,&codersdk.OrganizationProvisionerJobsOptions{
87+
jobs,err:=templateAdminClient.OrganizationProvisionerJobs(ctx,owner.OrganizationID,&codersdk.OrganizationProvisionerJobsOptions{
10888
Limit:1,
10989
})
11090
require.NoError(t,err)
11191
require.Len(t,jobs,1)
11292
})
93+
94+
// For now, this is not allowed even though the member has created a
95+
// workspace. Once member-level permissions for jobs are supported
96+
// by RBAC, this test should be updated.
97+
t.Run("MemberDenied",func(t*testing.T) {
98+
t.Parallel()
99+
ctx:=testutil.Context(t,testutil.WaitMedium)
100+
jobs,err:=memberClient.OrganizationProvisionerJobs(ctx,owner.OrganizationID,nil)
101+
require.Error(t,err)
102+
require.Len(t,jobs,0)
103+
})
113104
}
114105

115106
funcTestProvisionerJobLogs(t*testing.T) {

‎coderd/util/slice/slice.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ func ToStrings[T ~string](a []T) []string {
1414
}
1515

1616
funcStringEnums[E~string](a []string) []E {
17+
ifa==nil {
18+
returnnil
19+
}
1720
tmp:=make([]E,0,len(a))
1821
for_,v:=rangea {
1922
tmp=append(tmp,E(v))

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp