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

Commitd0477c6

Browse files
committed
fix tests
1 parent765c93a commitd0477c6

File tree

2 files changed

+24
-28
lines changed

2 files changed

+24
-28
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: 16 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/coder/coder/v2/coderd/database"
1414
"github.com/coder/coder/v2/coderd/database/dbgen"
1515
"github.com/coder/coder/v2/coderd/database/dbtestutil"
16+
"github.com/coder/coder/v2/coderd/rbac"
1617
"github.com/coder/coder/v2/codersdk"
1718
"github.com/coder/coder/v2/provisioner/echo"
1819
"github.com/coder/coder/v2/provisionersdk/proto"
@@ -22,37 +23,16 @@ import (
2223
funcTestProvisionerJobs(t*testing.T) {
2324
t.Parallel()
2425

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-
4426
db,ps:=dbtestutil.NewDB(t,dbtestutil.WithDumpOnFailure())
4527
client:=coderdtest.New(t,&coderdtest.Options{
4628
IncludeProvisionerDaemon:true,
4729
Database:db,
4830
Pubsub:ps,
4931
})
5032
owner:=coderdtest.CreateFirstUser(t,client)
33+
templateAdminClient,_:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID,rbac.ScopedRoleOrgTemplateAdmin(owner.OrganizationID))
5134
memberClient,member:=coderdtest.CreateAnotherUser(t,client,owner.OrganizationID)
5235

53-
// client, db := coderdtest.NewWithDatabase(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
54-
// user := coderdtest.CreateFirstUser(t, client)
55-
5636
version:=coderdtest.CreateTemplateVersion(t,client,owner.OrganizationID,nil)
5737
coderdtest.AwaitTemplateVersionJobCompleted(t,client,version.ID)
5838
template:=coderdtest.CreateTemplate(t,client,owner.OrganizationID,version.ID)
@@ -83,33 +63,41 @@ func TestProvisionerJobs(t *testing.T) {
8363
t.Run("All",func(t*testing.T) {
8464
t.Parallel()
8565
ctx:=testutil.Context(t,testutil.WaitMedium)
86-
jobs,err:=memberClient.OrganizationProvisionerJobs(ctx,owner.OrganizationID,nil)
66+
jobs,err:=templateAdminClient.OrganizationProvisionerJobs(ctx,owner.OrganizationID,nil)
8767
require.NoError(t,err)
8868
require.Len(t,jobs,3)
8969
})
9070

9171
t.Run("Pending",func(t*testing.T) {
9272
t.Parallel()
9373
ctx:=testutil.Context(t,testutil.WaitMedium)
94-
jobs,err:=memberClient.OrganizationProvisionerJobs(ctx,owner.OrganizationID,&codersdk.OrganizationProvisionerJobsOptions{
74+
jobs,err:=templateAdminClient.OrganizationProvisionerJobs(ctx,owner.OrganizationID,&codersdk.OrganizationProvisionerJobsOptions{
9575
Status: []codersdk.ProvisionerJobStatus{codersdk.ProvisionerJobPending},
9676
})
97-
for_,job:=rangejobs {
98-
t.Logf("job: %#v",job)
99-
}
10077
require.NoError(t,err)
10178
require.Len(t,jobs,1)
10279
})
10380

10481
t.Run("Limit",func(t*testing.T) {
10582
t.Parallel()
10683
ctx:=testutil.Context(t,testutil.WaitMedium)
107-
jobs,err:=memberClient.OrganizationProvisionerJobs(ctx,owner.OrganizationID,&codersdk.OrganizationProvisionerJobsOptions{
84+
jobs,err:=templateAdminClient.OrganizationProvisionerJobs(ctx,owner.OrganizationID,&codersdk.OrganizationProvisionerJobsOptions{
10885
Limit:1,
10986
})
11087
require.NoError(t,err)
11188
require.Len(t,jobs,1)
11289
})
90+
91+
// For now, this is not allowed even though the member has created a
92+
// workspace. Once member-level permissions for jobs are supported
93+
// by RBAC, this test should be updated.
94+
t.Run("MemberDenied",func(t*testing.T) {
95+
t.Parallel()
96+
ctx:=testutil.Context(t,testutil.WaitMedium)
97+
jobs,err:=memberClient.OrganizationProvisionerJobs(ctx,owner.OrganizationID,nil)
98+
require.Error(t,err)
99+
require.Len(t,jobs,0)
100+
})
113101
}
114102

115103
funcTestProvisionerJobLogs(t*testing.T) {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp