(t *testing.T)
| 221 | } |
| 222 | |
| 223 | func TestStartWithParameters(t *testing.T) { |
| 224 | t.Parallel() |
| 225 | |
| 226 | t.Run("DoNotAskForImmutables", func(t *testing.T) { |
| 227 | t.Parallel() |
| 228 | |
| 229 | // Create the workspace |
| 230 | client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true}) |
| 231 | owner := coderdtest.CreateFirstUser(t, client) |
| 232 | member, _ := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID) |
| 233 | version := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, immutableParamsResponse()) |
| 234 | coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID) |
| 235 | template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version.ID) |
| 236 | workspace := coderdtest.CreateWorkspace(t, member, template.ID, func(cwr *codersdk.CreateWorkspaceRequest) { |
| 237 | cwr.RichParameterValues = []codersdk.WorkspaceBuildParameter{ |
| 238 | { |
| 239 | Name: immutableParameterName, |
| 240 | Value: immutableParameterValue, |
| 241 | }, |
| 242 | } |
| 243 | }) |
| 244 | coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID) |
| 245 | |
| 246 | // Stop the workspace |
| 247 | workspaceBuild := coderdtest.CreateWorkspaceBuild(t, client, workspace, database.WorkspaceTransitionStop) |
| 248 | coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspaceBuild.ID) |
| 249 | |
| 250 | // Start the workspace again |
| 251 | inv, root := clitest.New(t, "start", workspace.Name) |
| 252 | clitest.SetupConfig(t, member, root) |
| 253 | doneChan := make(chan struct{}) |
| 254 | pty := ptytest.New(t).Attach(inv) |
| 255 | go func() { |
| 256 | defer close(doneChan) |
| 257 | err := inv.Run() |
| 258 | assert.NoError(t, err) |
| 259 | }() |
| 260 | |
| 261 | pty.ExpectMatch("workspace has been started") |
| 262 | <-doneChan |
| 263 | |
| 264 | // Verify if immutable parameter is set |
| 265 | ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort) |
| 266 | defer cancel() |
| 267 | |
| 268 | workspace, err := client.WorkspaceByOwnerAndName(ctx, workspace.OwnerName, workspace.Name, codersdk.WorkspaceOptions{}) |
| 269 | require.NoError(t, err) |
| 270 | actualParameters, err := client.WorkspaceBuildParameters(ctx, workspace.LatestBuild.ID) |
| 271 | require.NoError(t, err) |
| 272 | require.Contains(t, actualParameters, codersdk.WorkspaceBuildParameter{ |
| 273 | Name: immutableParameterName, |
| 274 | Value: immutableParameterValue, |
| 275 | }) |
| 276 | }) |
| 277 | |
| 278 | t.Run("AlwaysPrompt", func(t *testing.T) { |
| 279 | t.Parallel() |
| 280 |
nothing calls this directly
no test coverage detected