@@ -2,6 +2,7 @@ package coderd_test
2
2
3
3
import (
4
4
"context"
5
+ "database/sql"
5
6
"encoding/json"
6
7
"testing"
7
8
"time"
@@ -13,6 +14,8 @@ import (
13
14
"github.com/coder/coder/v2/coderd/database"
14
15
"github.com/coder/coder/v2/coderd/database/dbgen"
15
16
"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"
16
19
"github.com/coder/coder/v2/codersdk"
17
20
"github.com/coder/coder/v2/provisioner/echo"
18
21
"github.com/coder/coder/v2/provisionersdk/proto"
@@ -22,37 +25,16 @@ import (
22
25
func TestProvisionerJobs (t * testing.T ) {
23
26
t .Parallel ()
24
27
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
28
db , ps := dbtestutil .NewDB (t , dbtestutil .WithDumpOnFailure ())
45
29
client := coderdtest .New (t , & coderdtest.Options {
46
30
IncludeProvisionerDaemon : true ,
47
31
Database : db ,
48
32
Pubsub : ps ,
49
33
})
50
34
owner := coderdtest .CreateFirstUser (t , client )
35
+ templateAdminClient , _ := coderdtest .CreateAnotherUser (t , client , owner .OrganizationID , rbac .ScopedRoleOrgTemplateAdmin (owner .OrganizationID ))
51
36
memberClient , member := coderdtest .CreateAnotherUser (t , client , owner .OrganizationID )
52
37
53
- // client, db := coderdtest.NewWithDatabase(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
54
- // user := coderdtest.CreateFirstUser(t, client)
55
-
56
38
version := coderdtest .CreateTemplateVersion (t , client , owner .OrganizationID , nil )
57
39
coderdtest .AwaitTemplateVersionJobCompleted (t , client , version .ID )
58
40
template := coderdtest .CreateTemplate (t , client , owner .OrganizationID , version .ID )
@@ -70,6 +52,7 @@ func TestProvisionerJobs(t *testing.T) {
70
52
wbID := uuid .New ()
71
53
job := dbgen .ProvisionerJob (t , db , nil , database.ProvisionerJob {
72
54
OrganizationID : w .OrganizationID ,
55
+ StartedAt : sql.NullTime {Time : dbtime .Now (), Valid : true },
73
56
Type : database .ProvisionerJobTypeWorkspaceBuild ,
74
57
Input : json .RawMessage (`{"workspace_build_id":"` + wbID .String () + `"}` ),
75
58
})
@@ -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
- t .Run ("Pending " , func (t * testing.T ) {
74
+ t .Run ("Status " , 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 {
95
- Status : []codersdk.ProvisionerJobStatus {codersdk .ProvisionerJobPending },
77
+ jobs , err := templateAdminClient .OrganizationProvisionerJobs (ctx , owner .OrganizationID , & codersdk.OrganizationProvisionerJobsOptions {
78
+ Status : []codersdk.ProvisionerJobStatus {codersdk .ProvisionerJobRunning },
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