(t *testing.T)
| 395 | } |
| 396 | |
| 397 | func TestUpdateValidateRichParameters(t *testing.T) { |
| 398 | t.Parallel() |
| 399 | |
| 400 | const ( |
| 401 | stringParameterName = "string_parameter" |
| 402 | stringParameterValue = "abc" |
| 403 | |
| 404 | numberParameterName = "number_parameter" |
| 405 | numberParameterValue = "7" |
| 406 | |
| 407 | boolParameterName = "bool_parameter" |
| 408 | boolParameterValue = "true" |
| 409 | ) |
| 410 | |
| 411 | numberRichParameters := []*proto.RichParameter{ |
| 412 | {Name: numberParameterName, Type: "number", Mutable: true, ValidationMin: ptr.Ref(int32(3)), ValidationMax: ptr.Ref(int32(10))}, |
| 413 | } |
| 414 | |
| 415 | stringRichParameters := []*proto.RichParameter{ |
| 416 | {Name: stringParameterName, Type: "string", Mutable: true, ValidationRegex: "^[a-z]+$", ValidationError: "this is error"}, |
| 417 | } |
| 418 | |
| 419 | boolRichParameters := []*proto.RichParameter{ |
| 420 | {Name: boolParameterName, Type: "bool", Mutable: true}, |
| 421 | } |
| 422 | |
| 423 | t.Run("ValidateString", func(t *testing.T) { |
| 424 | t.Parallel() |
| 425 | |
| 426 | client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true}) |
| 427 | owner := coderdtest.CreateFirstUser(t, client) |
| 428 | member, _ := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID) |
| 429 | version := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, prepareEchoResponses(stringRichParameters)) |
| 430 | coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID) |
| 431 | template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version.ID) |
| 432 | |
| 433 | tempDir := t.TempDir() |
| 434 | removeTmpDirUntilSuccessAfterTest(t, tempDir) |
| 435 | parameterFile, _ := os.CreateTemp(tempDir, "testParameterFile*.yaml") |
| 436 | _, _ = parameterFile.WriteString( |
| 437 | stringParameterName + ": " + stringParameterValue) |
| 438 | |
| 439 | inv, root := clitest.New(t, "create", "my-workspace", "--template", template.Name, "--rich-parameter-file", parameterFile.Name(), "-y") |
| 440 | clitest.SetupConfig(t, member, root) |
| 441 | err := inv.Run() |
| 442 | require.NoError(t, err) |
| 443 | |
| 444 | ctx := testutil.Context(t, testutil.WaitLong) |
| 445 | inv, root = clitest.New(t, "update", "my-workspace", "--always-prompt") |
| 446 | inv = inv.WithContext(ctx) |
| 447 | clitest.SetupConfig(t, member, root) |
| 448 | doneChan := make(chan struct{}) |
| 449 | pty := ptytest.New(t).Attach(inv) |
| 450 | go func() { |
| 451 | defer close(doneChan) |
| 452 | err := inv.Run() |
| 453 | assert.NoError(t, err) |
| 454 | }() |
nothing calls this directly
no test coverage detected