Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6ae6b68

Browse files
committed
feat: test parameter immutability validation
1 parent e396b06 commit 6ae6b68

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
@@ -336,7 +336,6 @@ func TestDynamicParameterBuild(t *testing.T) {
336336
bld, err := templateAdmin.CreateWorkspaceBuild(ctx, wrk.ID, codersdk.CreateWorkspaceBuildRequest{
337337
TemplateVersionID: immutable.ID, // Use the new template version with the immutable parameter
338338
Transition: codersdk.WorkspaceTransitionDelete,
339-
DryRun: false,
340339
})
341340
require.NoError(t, err)
342341
coderdtest.AwaitWorkspaceBuildJobCompleted(t, templateAdmin, bld.ID)
@@ -352,6 +351,48 @@ func TestDynamicParameterBuild(t *testing.T) {
352351
require.NoError(t, err)
353352
require.Equal(t, wrk.ID, deleted.ID, "workspace should be deleted")
354353
})
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+
})
355396
})
356397
}
357398

0 commit comments

Comments
 (0)