@@ -424,4 +424,71 @@ func TestUpdateValidateRichParameters(t *testing.T) {
424
424
}
425
425
<- doneChan
426
426
})
427
+
428
+ t .Run ("RequiredParameterAdded" , func (t * testing.T ) {
429
+ t .Parallel ()
430
+
431
+ client := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerDaemon : true })
432
+ user := coderdtest .CreateFirstUser (t , client )
433
+
434
+ // Upload the initial template
435
+ version := coderdtest .CreateTemplateVersion (t , client , user .OrganizationID , prepareEchoResponses (stringRichParameters ))
436
+ coderdtest .AwaitTemplateVersionJob (t , client , version .ID )
437
+ template := coderdtest .CreateTemplate (t , client , user .OrganizationID , version .ID )
438
+
439
+ tempDir := t .TempDir ()
440
+ removeTmpDirUntilSuccessAfterTest (t , tempDir )
441
+ parameterFile , _ := os .CreateTemp (tempDir , "testParameterFile*.yaml" )
442
+ _ , _ = parameterFile .WriteString (
443
+ stringParameterName + ": " + stringParameterValue )
444
+
445
+ // Create workspace
446
+ cmd , root := clitest .New (t , "create" , "my-workspace" , "--template" , template .Name , "--rich-parameter-file" , parameterFile .Name (), "-y" )
447
+ clitest .SetupConfig (t , client , root )
448
+ err := cmd .Execute ()
449
+ require .NoError (t , err )
450
+
451
+ // Modify template
452
+ const addedParameterName = "added_parameter"
453
+
454
+ var modifiedParameters []* proto.RichParameter
455
+ modifiedParameters = append (modifiedParameters , stringRichParameters ... )
456
+ modifiedParameters = append (modifiedParameters , & proto.RichParameter {
457
+ // Required parameter
458
+ Name : addedParameterName ,
459
+ Type : "string" ,
460
+ Mutable : true ,
461
+ })
462
+ version = coderdtest .UpdateTemplateVersion (t , client , user .OrganizationID , prepareEchoResponses (modifiedParameters ), template .ID )
463
+ coderdtest .AwaitTemplateVersionJob (t , client , version .ID )
464
+ err = client .UpdateActiveTemplateVersion (context .Background (), template .ID , codersdk.UpdateActiveTemplateVersion {
465
+ ID : version .ID ,
466
+ })
467
+ require .NoError (t , err )
468
+
469
+ // Update the workspace
470
+ cmd , root = clitest .New (t , "update" , "my-workspace" )
471
+ clitest .SetupConfig (t , client , root )
472
+ doneChan := make (chan struct {})
473
+ pty := ptytest .New (t )
474
+ cmd .SetIn (pty .Input ())
475
+ cmd .SetOut (pty .Output ())
476
+ go func () {
477
+ defer close (doneChan )
478
+ err := cmd .Execute ()
479
+ assert .NoError (t , err )
480
+ }()
481
+
482
+ matches := []string {
483
+ "added_parameter" , "" ,
484
+ `Enter a value (default: "")` , "abc" ,
485
+ }
486
+ for i := 0 ; i < len (matches ); i += 2 {
487
+ match := matches [i ]
488
+ value := matches [i + 1 ]
489
+ pty .ExpectMatch (match )
490
+ pty .WriteLine (value )
491
+ }
492
+ <- doneChan
493
+ })
427
494
}
0 commit comments