@@ -11,6 +11,8 @@ import (
11
11
"testing"
12
12
"time"
13
13
14
+ "github.com/coder/coder/coderd/database/dbtype"
15
+
14
16
"github.com/coder/coder/coderd/database/dbauthz"
15
17
"github.com/coder/coder/coderd/rbac"
16
18
@@ -26,6 +28,7 @@ import (
26
28
// All methods take in a 'seed' object. Any provided fields in the seed will be
27
29
// maintained. Any fields omitted will have sensible defaults generated.
28
30
31
+ // genCtx is to give all generator functions permission if the db is a dbauthz db.
29
32
var genCtx = dbauthz .As (context .Background (), rbac.Subject {
30
33
ID : "owner" ,
31
34
Roles : rbac .Roles (must (rbac.RoleNames {rbac .RoleOwner ()}.Expand ())),
@@ -271,7 +274,17 @@ func GroupMember(t testing.TB, db database.Store, orig database.GroupMember) dat
271
274
return member
272
275
}
273
276
277
+ // ProvisionerJob might not have all the correct values like CompletedAt and CancelledAt. This is because
278
+ // the workspaceBuild is required to fetch those,
274
279
func ProvisionerJob (t testing.TB , db database.Store , orig database.ProvisionerJob ) database.ProvisionerJob {
280
+ id := takeFirst (orig .ID , uuid .New ())
281
+ if ! orig .StartedAt .Time .IsZero () {
282
+ if orig .Tags == nil {
283
+ orig .Tags = make (dbtype.StringMap )
284
+ }
285
+ // Make sure when we acquire the job, we only get this one.
286
+ orig .Tags [id .String ()] = "true"
287
+ }
275
288
job , err := db .InsertProvisionerJob (genCtx , database.InsertProvisionerJobParams {
276
289
ID : takeFirst (orig .ID , uuid .New ()),
277
290
CreatedAt : takeFirst (orig .CreatedAt , database .Now ()),
@@ -286,6 +299,34 @@ func ProvisionerJob(t testing.TB, db database.Store, orig database.ProvisionerJo
286
299
Tags : orig .Tags ,
287
300
})
288
301
require .NoError (t , err , "insert job" )
302
+
303
+ if ! orig .CompletedAt .Time .IsZero () || orig .Error .String != "" {
304
+ err := db .UpdateProvisionerJobWithCompleteByID (genCtx , database.UpdateProvisionerJobWithCompleteByIDParams {
305
+ ID : job .ID ,
306
+ UpdatedAt : orig .UpdatedAt ,
307
+ CompletedAt : orig .CompletedAt ,
308
+ Error : orig .Error ,
309
+ ErrorCode : orig .ErrorCode ,
310
+ })
311
+ require .NoError (t , err )
312
+ }
313
+ if ! orig .CanceledAt .Time .IsZero () {
314
+ err := db .UpdateProvisionerJobWithCancelByID (genCtx , database.UpdateProvisionerJobWithCancelByIDParams {
315
+ ID : job .ID ,
316
+ CanceledAt : orig .CanceledAt ,
317
+ CompletedAt : orig .CompletedAt ,
318
+ })
319
+ require .NoError (t , err )
320
+ }
321
+ if ! orig .StartedAt .Time .IsZero () {
322
+ job , err = db .AcquireProvisionerJob (genCtx , database.AcquireProvisionerJobParams {
323
+ StartedAt : orig .StartedAt ,
324
+ Types : []database.ProvisionerType {database .ProvisionerTypeEcho },
325
+ Tags : must (json .Marshal (orig .Tags )),
326
+ })
327
+ require .NoError (t , err )
328
+ }
329
+
289
330
return job
290
331
}
291
332
0 commit comments