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

Function TestWorkspaceBuildStatus

coderd/workspacebuilds_test.go:1216–1281  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1214}
1215
1216func TestWorkspaceBuildStatus(t *testing.T) {
1217 t.Parallel()
1218
1219 auditor := audit.NewMock()
1220 numLogs := len(auditor.AuditLogs())
1221 client, closeDaemon, api := coderdtest.NewWithAPI(t, &coderdtest.Options{IncludeProvisionerDaemon: true, Auditor: auditor})
1222 user := coderdtest.CreateFirstUser(t, client)
1223 numLogs++ // add an audit log for login
1224 version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
1225 numLogs++ // add an audit log for template version creation
1226 numLogs++ // add an audit log for template version update
1227
1228 coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
1229 closeDaemon.Close()
1230 template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
1231 numLogs++ // add an audit log for template creation
1232
1233 workspace := coderdtest.CreateWorkspace(t, client, template.ID)
1234 numLogs++ // add an audit log for workspace creation
1235
1236 // initial returned state is "pending"
1237 require.EqualValues(t, codersdk.WorkspaceStatusPending, workspace.LatestBuild.Status)
1238
1239 closeDaemon = coderdtest.NewProvisionerDaemon(t, api)
1240 // after successful build is "running"
1241 _ = coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
1242
1243 ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1244 defer cancel()
1245
1246 workspace, err := client.Workspace(ctx, workspace.ID)
1247 require.NoError(t, err)
1248 require.EqualValues(t, codersdk.WorkspaceStatusRunning, workspace.LatestBuild.Status)
1249
1250 numLogs++ // add an audit log for workspace_build starting
1251
1252 // after successful stop is "stopped"
1253 build := coderdtest.CreateWorkspaceBuild(t, client, workspace, database.WorkspaceTransitionStop)
1254 _ = coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, build.ID)
1255 workspace, err = client.Workspace(ctx, workspace.ID)
1256 require.NoError(t, err)
1257 require.EqualValues(t, codersdk.WorkspaceStatusStopped, workspace.LatestBuild.Status)
1258
1259 // assert an audit log has been created for workspace stopping
1260 numLogs++ // add an audit log for workspace_build stop
1261 require.Len(t, auditor.AuditLogs(), numLogs)
1262 require.Equal(t, database.AuditActionStop, auditor.AuditLogs()[numLogs-1].Action)
1263
1264 _ = closeDaemon.Close()
1265 // after successful cancel is "canceled"
1266 build = coderdtest.CreateWorkspaceBuild(t, client, workspace, database.WorkspaceTransitionStart)
1267 err = client.CancelWorkspaceBuild(ctx, build.ID, codersdk.CancelWorkspaceBuildParams{})
1268 require.NoError(t, err)
1269
1270 workspace, err = client.Workspace(ctx, workspace.ID)
1271 require.NoError(t, err)
1272 require.EqualValues(t, codersdk.WorkspaceStatusCanceled, workspace.LatestBuild.Status)
1273

Callers

nothing calls this directly

Calls 15

NewMockFunction · 0.92
NewWithAPIFunction · 0.92
CreateFirstUserFunction · 0.92
CreateTemplateVersionFunction · 0.92
CreateTemplateFunction · 0.92
CreateWorkspaceFunction · 0.92
NewProvisionerDaemonFunction · 0.92
CreateWorkspaceBuildFunction · 0.92
WorkspaceMethod · 0.80
CancelWorkspaceBuildMethod · 0.80

Tested by

no test coverage detected