Skip to content

Commit dd49c08

Browse files
committed
fix tests
1 parent 765c93a commit dd49c08

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
func TestProvisionerJobs(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 := range jobs {
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
func TestProvisionerJobLogs(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
func StringEnums[E ~string](a []string) []E {
17+
if a == nil {
18+
return nil
19+
}
1720
tmp := make([]E, 0, len(a))
1821
for _, v := range a {
1922
tmp = append(tmp, E(v))

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy