@@ -338,7 +338,6 @@ func TestDynamicParameterBuild(t *testing.T) {
338
338
bld , err := templateAdmin .CreateWorkspaceBuild (ctx , wrk .ID , codersdk.CreateWorkspaceBuildRequest {
339
339
TemplateVersionID : immutable .ID , // Use the new template version with the immutable parameter
340
340
Transition : codersdk .WorkspaceTransitionDelete ,
341
- DryRun : false ,
342
341
})
343
342
require .NoError (t , err )
344
343
coderdtest .AwaitWorkspaceBuildJobCompleted (t , templateAdmin , bld .ID )
@@ -354,6 +353,48 @@ func TestDynamicParameterBuild(t *testing.T) {
354
353
require .NoError (t , err )
355
354
require .Equal (t , wrk .ID , deleted .ID , "workspace should be deleted" )
356
355
})
356
+
357
+ t .Run ("ImmutableChangeValue" , func (t * testing.T ) {
358
+ t .Parallel ()
359
+
360
+ ctx := testutil .Context (t , testutil .WaitShort )
361
+ // Start with a new template that has 1 parameter that is immutable
362
+ immutable , _ := coderdtest .DynamicParameterTemplate (t , templateAdmin , orgID , coderdtest.DynamicParameterTemplateParams {
363
+ MainTF : string (must (os .ReadFile ("testdata/parameters/immutable/main.tf" ))),
364
+ })
365
+
366
+ // Create the workspace with the immutable parameter
367
+ wrk , err := templateAdmin .CreateUserWorkspace (ctx , codersdk .Me , codersdk.CreateWorkspaceRequest {
368
+ TemplateID : immutable .ID ,
369
+ Name : coderdtest .RandomUsername (t ),
370
+ RichParameterValues : []codersdk.WorkspaceBuildParameter {
371
+ {Name : "immutable" , Value : "coder" },
372
+ },
373
+ })
374
+ require .NoError (t , err )
375
+ coderdtest .AwaitWorkspaceBuildJobCompleted (t , templateAdmin , wrk .LatestBuild .ID )
376
+
377
+ // No new value is acceptable
378
+ bld , err := templateAdmin .CreateWorkspaceBuild (ctx , wrk .ID , codersdk.CreateWorkspaceBuildRequest {
379
+ Transition : codersdk .WorkspaceTransitionStart ,
380
+ })
381
+ require .NoError (t , err )
382
+ coderdtest .AwaitWorkspaceBuildJobCompleted (t , templateAdmin , bld .ID )
383
+
384
+ params , err := templateAdmin .WorkspaceBuildParameters (ctx , bld .ID )
385
+ require .NoError (t , err )
386
+ require .Len (t , params , 1 )
387
+ require .Equal (t , "coder" , params [0 ].Value )
388
+
389
+ // Update the value to something else, which should fail
390
+ _ , err = templateAdmin .CreateWorkspaceBuild (ctx , wrk .ID , codersdk.CreateWorkspaceBuildRequest {
391
+ Transition : codersdk .WorkspaceTransitionStart ,
392
+ RichParameterValues : []codersdk.WorkspaceBuildParameter {
393
+ {Name : "immutable" , Value : "foo" },
394
+ },
395
+ })
396
+ require .ErrorContains (t , err , `Parameter "immutable" is not mutable` )
397
+ })
357
398
})
358
399
}
359
400
0 commit comments