fix: coder_parameter fallbacks to default (#7240)

This commit is contained in:
Marcin Tojek
2023-04-24 09:51:34 +02:00
committed by GitHub
parent ab077d1f15
commit c000f2ec28
3 changed files with 40 additions and 5 deletions

View File

@ -544,6 +544,15 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
// Check if parameter is defined in previous build
if buildParameter, found := findWorkspaceBuildParameter(apiLastBuildParameters, templateVersionParameter.Name); found {
parameters = append(parameters, *buildParameter)
continue
}
// Check if default parameter value is in schema
if templateVersionParameter.DefaultValue != "" {
parameters = append(parameters, codersdk.WorkspaceBuildParameter{
Name: templateVersionParameter.Name,
Value: templateVersionParameter.DefaultValue,
})
}
}

View File

@ -901,12 +901,23 @@ func TestWorkspaceBuildWithRichParameters(t *testing.T) {
nextBuildParameters := []codersdk.WorkspaceBuildParameter{
{Name: newImmutableParameterName, Value: "good"},
}
_, err = client.CreateWorkspaceBuild(ctx, workspace.ID, codersdk.CreateWorkspaceBuildRequest{
nextWorkspaceBuild, err := client.CreateWorkspaceBuild(ctx, workspace.ID, codersdk.CreateWorkspaceBuildRequest{
TemplateVersionID: version2.ID,
Transition: codersdk.WorkspaceTransitionStart,
RichParameterValues: nextBuildParameters,
})
require.NoError(t, err)
require.NotEqual(t, workspaceBuild, nextWorkspaceBuild)
coderdtest.AwaitWorkspaceBuildJob(t, client, nextWorkspaceBuild.ID)
workspaceBuildParameters, err := client.WorkspaceBuildParameters(ctx, nextWorkspaceBuild.ID)
require.NoError(t, err)
expectedNextBuildParameters := append(initialBuildParameters, codersdk.WorkspaceBuildParameter{
Name: newImmutableParameterName,
Value: "good",
})
require.ElementsMatch(t, expectedNextBuildParameters, workspaceBuildParameters)
})
t.Run("NewImmutableOptionalParameterUsesDefault", func(t *testing.T) {
@ -961,12 +972,23 @@ func TestWorkspaceBuildWithRichParameters(t *testing.T) {
defer cancel()
var nextBuildParameters []codersdk.WorkspaceBuildParameter
_, err = client.CreateWorkspaceBuild(ctx, workspace.ID, codersdk.CreateWorkspaceBuildRequest{
nextWorkspaceBuild, err := client.CreateWorkspaceBuild(ctx, workspace.ID, codersdk.CreateWorkspaceBuildRequest{
TemplateVersionID: version2.ID,
Transition: codersdk.WorkspaceTransitionStart,
RichParameterValues: nextBuildParameters,
})
require.NoError(t, err)
require.NotEqual(t, workspaceBuild, nextWorkspaceBuild)
coderdtest.AwaitWorkspaceBuildJob(t, client, nextWorkspaceBuild.ID)
workspaceBuildParameters, err := client.WorkspaceBuildParameters(ctx, nextWorkspaceBuild.ID)
require.NoError(t, err)
expectedNextBuildParameters := append(initialBuildParameters, codersdk.WorkspaceBuildParameter{
Name: newImmutableParameterName,
Value: "12345",
})
require.ElementsMatch(t, expectedNextBuildParameters, workspaceBuildParameters)
})
}