@@ -13,6 +13,7 @@ import (
13
13
"github.com/coder/coder/v2/coderd/database"
14
14
"github.com/coder/coder/v2/coderd/database/dbgen"
15
15
"github.com/coder/coder/v2/coderd/database/dbtestutil"
16
+ "github.com/coder/coder/v2/coderd/rbac"
16
17
"github.com/coder/coder/v2/codersdk"
17
18
"github.com/coder/coder/v2/provisioner/echo"
18
19
"github.com/coder/coder/v2/provisionersdk/proto"
@@ -22,32 +23,14 @@ import (
22
23
func TestProvisionerJobs (t * testing.T ) {
23
24
t .Parallel ()
24
25
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
-
44
26
db , ps := dbtestutil .NewDB (t , dbtestutil .WithDumpOnFailure ())
45
27
client := coderdtest .New (t , & coderdtest.Options {
46
28
IncludeProvisionerDaemon : true ,
47
29
Database : db ,
48
30
Pubsub : ps ,
49
31
})
50
32
owner := coderdtest .CreateFirstUser (t , client )
33
+ templateAdminClient , _ := coderdtest .CreateAnotherUser (t , client , owner .OrganizationID , rbac .RoleTemplateAdmin ())
51
34
memberClient , member := coderdtest .CreateAnotherUser (t , client , owner .OrganizationID )
52
35
53
36
// client, db := coderdtest.NewWithDatabase(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
@@ -83,33 +66,41 @@ func TestProvisionerJobs(t *testing.T) {
83
66
t .Run ("All" , func (t * testing.T ) {
84
67
t .Parallel ()
85
68
ctx := testutil .Context (t , testutil .WaitMedium )
86
- jobs , err := memberClient .OrganizationProvisionerJobs (ctx , owner .OrganizationID , nil )
69
+ jobs , err := templateAdminClient .OrganizationProvisionerJobs (ctx , owner .OrganizationID , nil )
87
70
require .NoError (t , err )
88
71
require .Len (t , jobs , 3 )
89
72
})
90
73
91
74
t .Run ("Pending" , func (t * testing.T ) {
92
75
t .Parallel ()
93
76
ctx := testutil .Context (t , testutil .WaitMedium )
94
- jobs , err := memberClient .OrganizationProvisionerJobs (ctx , owner .OrganizationID , & codersdk.OrganizationProvisionerJobsOptions {
77
+ jobs , err := templateAdminClient .OrganizationProvisionerJobs (ctx , owner .OrganizationID , & codersdk.OrganizationProvisionerJobsOptions {
95
78
Status : []codersdk.ProvisionerJobStatus {codersdk .ProvisionerJobPending },
96
79
})
97
- for _ , job := range jobs {
98
- t .Logf ("job: %#v" , job )
99
- }
100
80
require .NoError (t , err )
101
81
require .Len (t , jobs , 1 )
102
82
})
103
83
104
84
t .Run ("Limit" , func (t * testing.T ) {
105
85
t .Parallel ()
106
86
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 {
108
88
Limit : 1 ,
109
89
})
110
90
require .NoError (t , err )
111
91
require .Len (t , jobs , 1 )
112
92
})
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
+ })
113
104
}
114
105
115
106
func TestProvisionerJobLogs (t * testing.T ) {
0 commit comments