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

Function TestWorkspaceByOwnerAndName

enterprise/coderd/workspaces_test.go:4217–4419  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

4215}
4216
4217func TestWorkspaceByOwnerAndName(t *testing.T) {
4218 t.Parallel()
4219
4220 t.Run("Matching Provisioner", func(t *testing.T) {
4221 t.Parallel()
4222
4223 ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
4224 defer cancel()
4225
4226 client, db, userResponse := coderdenttest.NewWithDatabase(t, &coderdenttest.Options{
4227 LicenseOptions: &coderdenttest.LicenseOptions{
4228 Features: license.Features{
4229 codersdk.FeatureExternalProvisionerDaemons: 1,
4230 },
4231 },
4232 })
4233 userSubject, _, err := httpmw.UserRBACSubject(ctx, db, userResponse.UserID, rbac.ExpandableScope(rbac.ScopeAll))
4234 require.NoError(t, err)
4235 user, err := client.User(ctx, userSubject.ID)
4236 require.NoError(t, err)
4237 username := user.Username
4238
4239 _ = coderdenttest.NewExternalProvisionerDaemon(t, client, userResponse.OrganizationID, map[string]string{
4240 provisionersdk.TagScope: provisionersdk.ScopeOrganization,
4241 })
4242
4243 version := coderdtest.CreateTemplateVersion(t, client, userResponse.OrganizationID, nil)
4244 coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
4245 template := coderdtest.CreateTemplate(t, client, userResponse.OrganizationID, version.ID)
4246 workspace := coderdtest.CreateWorkspace(t, client, template.ID)
4247
4248 // Pending builds should show matching provisioners
4249 require.Equal(t, workspace.LatestBuild.Status, codersdk.WorkspaceStatusPending)
4250 require.Equal(t, workspace.LatestBuild.MatchedProvisioners.Count, 1)
4251 require.Equal(t, workspace.LatestBuild.MatchedProvisioners.Available, 1)
4252
4253 // Completed builds should not show matching provisioners, because no provisioner daemon can
4254 // be eligible to process a job that is already completed.
4255 completedBuild := coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
4256 require.Equal(t, completedBuild.Status, codersdk.WorkspaceStatusRunning)
4257 require.Equal(t, completedBuild.MatchedProvisioners.Count, 0)
4258 require.Equal(t, completedBuild.MatchedProvisioners.Available, 0)
4259
4260 ws, err := client.WorkspaceByOwnerAndName(ctx, username, workspace.Name, codersdk.WorkspaceOptions{})
4261 require.NoError(t, err)
4262
4263 // Verify the workspace details
4264 require.Equal(t, workspace.ID, ws.ID)
4265 require.Equal(t, workspace.Name, ws.Name)
4266 require.Equal(t, workspace.TemplateID, ws.TemplateID)
4267 require.Equal(t, completedBuild.Status, ws.LatestBuild.Status)
4268 require.Equal(t, ws.LatestBuild.MatchedProvisioners.Count, 0)
4269 require.Equal(t, ws.LatestBuild.MatchedProvisioners.Available, 0)
4270
4271 // Verify that the provisioner daemon is registered in the database
4272 daemons, err := db.GetProvisionerDaemons(dbauthz.AsSystemRestricted(ctx))
4273 require.NoError(t, err)
4274 require.Equal(t, 1, len(daemons))

Callers

nothing calls this directly

Calls 15

NewWithDatabaseFunction · 0.92
UserRBACSubjectFunction · 0.92
ExpandableScopeInterface · 0.92
CreateTemplateVersionFunction · 0.92
CreateTemplateFunction · 0.92
CreateWorkspaceFunction · 0.92
AsSystemRestrictedFunction · 0.92
ContextFunction · 0.92
AsFunction · 0.92

Tested by

no test coverage detected