@@ -441,6 +441,80 @@ func TestTasksCreate(t *testing.T) {
441
441
assert .Equal (t , taskPrompt , parameters [0 ].Value )
442
442
})
443
443
444
+ t .Run ("CustomNames" , func (t * testing.T ) {
445
+ t .Parallel ()
446
+
447
+ tests := []struct {
448
+ name string
449
+ taskName string
450
+ expectFallbackName bool
451
+ expectError string
452
+ }{
453
+ {
454
+ name : "ValidName" ,
455
+ taskName : "a-valid-task-name" ,
456
+ },
457
+ {
458
+ name : "NotValidName" ,
459
+ taskName : "this is not a valid task name" ,
460
+ expectError : "Unable to create a Task with the provided name." ,
461
+ },
462
+ {
463
+ name : "NoNameProvided" ,
464
+ taskName : "" ,
465
+ expectFallbackName : true ,
466
+ },
467
+ }
468
+
469
+ for _ , tt := range tests {
470
+ t .Run (tt .name , func (t * testing.T ) {
471
+ t .Parallel ()
472
+
473
+ var (
474
+ ctx = testutil .Context (t , testutil .WaitShort )
475
+ client = coderdtest .New (t , & coderdtest.Options {IncludeProvisionerDaemon : true })
476
+ expClient = codersdk .NewExperimentalClient (client )
477
+ user = coderdtest .CreateFirstUser (t , client )
478
+ version = coderdtest .CreateTemplateVersion (t , client , user .OrganizationID , & echo.Responses {
479
+ Parse : echo .ParseComplete ,
480
+ ProvisionApply : echo .ApplyComplete ,
481
+ ProvisionPlan : []* proto.Response {
482
+ {Type : & proto.Response_Plan {Plan : & proto.PlanComplete {
483
+ Parameters : []* proto.RichParameter {{Name : "AI Prompt" , Type : "string" }},
484
+ HasAiTasks : true ,
485
+ }}},
486
+ },
487
+ })
488
+ template = coderdtest .CreateTemplate (t , client , user .OrganizationID , version .ID )
489
+ )
490
+
491
+ coderdtest .AwaitTemplateVersionJobCompleted (t , client , version .ID )
492
+
493
+ // When: We attempt to create a Task.
494
+ task , err := expClient .CreateTask (ctx , "me" , codersdk.CreateTaskRequest {
495
+ TemplateVersionID : template .ActiveVersionID ,
496
+ Prompt : "Some prompt" ,
497
+ Name : tt .taskName ,
498
+ })
499
+ if tt .expectError == "" {
500
+ require .NoError (t , err )
501
+ require .True (t , task .WorkspaceID .Valid )
502
+
503
+ // Then: We expect the correct name to have been picked.
504
+ err = codersdk .NameValid (task .Name )
505
+ require .NoError (t , err , "Generated task name should be valid" )
506
+
507
+ require .NotEmpty (t , task .Name )
508
+ if ! tt .expectFallbackName {
509
+ require .Equal (t , tt .taskName , task .Name )
510
+ }
511
+ } else {
512
+ require .ErrorContains (t , err , tt .expectError )
513
+ }
514
+ })
515
+ }
516
+ })
517
+
444
518
t .Run ("FailsOnNonTaskTemplate" , func (t * testing.T ) {
445
519
t .Parallel ()
446
520
0 commit comments