Skip to content

Commit 9212109

Browse files
committed
feat: test parameter immutability validation
1 parent 935bd34 commit 9212109

File tree

1 file changed

+42
-1
lines changed

1 file changed

+42
-1
lines changed

enterprise/coderd/dynamicparameters_test.go

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,6 @@ func TestDynamicParameterBuild(t *testing.T) {
338338
bld, err := templateAdmin.CreateWorkspaceBuild(ctx, wrk.ID, codersdk.CreateWorkspaceBuildRequest{
339339
TemplateVersionID: immutable.ID, // Use the new template version with the immutable parameter
340340
Transition: codersdk.WorkspaceTransitionDelete,
341-
DryRun: false,
342341
})
343342
require.NoError(t, err)
344343
coderdtest.AwaitWorkspaceBuildJobCompleted(t, templateAdmin, bld.ID)
@@ -354,6 +353,48 @@ func TestDynamicParameterBuild(t *testing.T) {
354353
require.NoError(t, err)
355354
require.Equal(t, wrk.ID, deleted.ID, "workspace should be deleted")
356355
})
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+
})
357398
})
358399
}
359400

0 commit comments

Comments
 (0)