MCPcopy Index your code
hub / github.com/coder/coder / TestReinit

Function TestReinit

coderd/workspaceagents_test.go:3368–3617  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

3366}
3367
3368func TestReinit(t *testing.T) {
3369 t.Parallel()
3370
3371 // Helper to create the prebuilds system user's workspace (an
3372 // unclaimed prebuild) and return the build result. The first
3373 // build's InitiatorID defaults to PrebuildsSystemUserID via
3374 // dbfake.
3375 setupPrebuildWorkspace := func(t *testing.T, db database.Store, orgID uuid.UUID) dbfake.WorkspaceResponse {
3376 t.Helper()
3377 return dbfake.WorkspaceBuild(t, db, database.WorkspaceTable{
3378 OrganizationID: orgID,
3379 OwnerID: database.PrebuildsSystemUserID,
3380 }).WithAgent().Do()
3381 }
3382
3383 // Helper to simulate claiming a prebuild: change the workspace
3384 // owner to the real user and create a second (claim) build.
3385 claimPrebuild := func(t *testing.T, db database.Store, sqlDB *sql.DB, ws database.WorkspaceTable, claimerID uuid.UUID, templateVersionID uuid.UUID, complete bool) dbfake.WorkspaceResponse {
3386 t.Helper()
3387 // Change the workspace owner to the claiming user.
3388 _, err := sqlDB.Exec("UPDATE workspaces SET owner_id = $1 WHERE id = $2", claimerID, ws.ID)
3389 require.NoError(t, err)
3390
3391 // Update the in-memory workspace to reflect the new owner
3392 // so that dbfake uses it for the second build.
3393 ws.OwnerID = claimerID
3394
3395 builder := dbfake.WorkspaceBuild(t, db, ws).
3396 Seed(database.WorkspaceBuild{
3397 TemplateVersionID: templateVersionID,
3398 BuildNumber: 2,
3399 InitiatorID: claimerID,
3400 Transition: database.WorkspaceTransitionStart,
3401 }).
3402 MarkPrebuiltWorkspaceClaim().
3403 WithAgent()
3404 if !complete {
3405 builder = builder.Starting()
3406 }
3407 return builder.Do()
3408 }
3409
3410 t.Run("unclaimed prebuild receives reinit via pubsub", func(t *testing.T) {
3411 t.Parallel()
3412
3413 db, ps := dbtestutil.NewDB(t)
3414 pubsubSpy := pubsubReinitSpy{
3415 Pubsub: ps,
3416 triedToSubscribe: make(chan string),
3417 }
3418 client := coderdtest.New(t, &coderdtest.Options{
3419 Database: db,
3420 Pubsub: &pubsubSpy,
3421 })
3422 user := coderdtest.CreateFirstUser(t, client)
3423
3424 r := setupPrebuildWorkspace(t, db, user.OrganizationID)
3425

Callers

nothing calls this directly

Calls 15

StatusCodeMethod · 0.95
WorkspaceBuildFunction · 0.92
NewDBFunction · 0.92
NewFunction · 0.92
CreateFirstUserFunction · 0.92
PrebuildClaimedChannelFunction · 0.92
ContextFunction · 0.92
NewFunction · 0.92
WithFixedTokenFunction · 0.92
TryReceiveFunction · 0.92
NewDBWithSQLDBFunction · 0.92

Tested by

no test coverage detected