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