(t *testing.T)
| 198 | } |
| 199 | |
| 200 | func TestUpdateWithRichParameters(t *testing.T) { |
| 201 | t.Parallel() |
| 202 | |
| 203 | const ( |
| 204 | firstParameterName = "first_parameter" |
| 205 | firstParameterDescription = "This is first parameter" |
| 206 | firstParameterValue = "1" |
| 207 | |
| 208 | secondParameterName = "second_parameter" |
| 209 | secondParameterDescription = "This is second parameter" |
| 210 | secondParameterValue = "2" |
| 211 | |
| 212 | ephemeralParameterName = "ephemeral_parameter" |
| 213 | ephemeralParameterDescription = "This is ephemeral parameter" |
| 214 | ephemeralParameterValue = "3" |
| 215 | |
| 216 | immutableParameterName = "immutable_parameter" |
| 217 | immutableParameterDescription = "This is not mutable parameter" |
| 218 | immutableParameterValue = "4" |
| 219 | ) |
| 220 | |
| 221 | echoResponses := func() *echo.Responses { |
| 222 | return prepareEchoResponses([]*proto.RichParameter{ |
| 223 | {Name: firstParameterName, Description: firstParameterDescription, Mutable: true}, |
| 224 | {Name: immutableParameterName, Description: immutableParameterDescription, Mutable: false}, |
| 225 | {Name: secondParameterName, Description: secondParameterDescription, Mutable: true}, |
| 226 | {Name: ephemeralParameterName, Description: ephemeralParameterDescription, Mutable: true, Ephemeral: true, DefaultValue: "unset"}, |
| 227 | }) |
| 228 | } |
| 229 | |
| 230 | t.Run("ImmutableCannotBeCustomized", func(t *testing.T) { |
| 231 | t.Parallel() |
| 232 | |
| 233 | client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true}) |
| 234 | owner := coderdtest.CreateFirstUser(t, client) |
| 235 | member, _ := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID) |
| 236 | version := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, echoResponses()) |
| 237 | coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID) |
| 238 | |
| 239 | template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version.ID) |
| 240 | |
| 241 | tempDir := t.TempDir() |
| 242 | removeTmpDirUntilSuccessAfterTest(t, tempDir) |
| 243 | parameterFile, _ := os.CreateTemp(tempDir, "testParameterFile*.yaml") |
| 244 | _, _ = parameterFile.WriteString( |
| 245 | firstParameterName + ": " + firstParameterValue + "\n" + |
| 246 | immutableParameterName + ": " + immutableParameterValue + "\n" + |
| 247 | secondParameterName + ": " + secondParameterValue) |
| 248 | |
| 249 | inv, root := clitest.New(t, "create", "my-workspace", "--template", template.Name, "--rich-parameter-file", parameterFile.Name(), "-y") |
| 250 | clitest.SetupConfig(t, member, root) |
| 251 | err := inv.Run() |
| 252 | assert.NoError(t, err) |
| 253 | |
| 254 | inv, root = clitest.New(t, "update", "my-workspace", "--always-prompt") |
| 255 | clitest.SetupConfig(t, member, root) |
| 256 | |
| 257 | doneChan := make(chan struct{}) |
nothing calls this directly
no test coverage detected