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

Skip to content

Commit 8b3fe8c

Browse files
committed
Pass the required property down
1 parent 110b10b commit 8b3fe8c

File tree

2 files changed

+82
-0
lines changed

2 files changed

+82
-0
lines changed

coderd/provisionerdserver/provisionerdserver.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -808,6 +808,7 @@ func (server *Server) CompleteJob(ctx context.Context, completed *proto.Complete
808808
ValidationMin: richParameter.ValidationMin,
809809
ValidationMax: richParameter.ValidationMax,
810810
ValidationMonotonic: richParameter.ValidationMonotonic,
811+
Required: richParameter.Required,
811812
})
812813
if err != nil {
813814
return nil, xerrors.Errorf("insert parameter: %w", err)

coderd/workspaces_test.go

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1884,3 +1884,84 @@ func TestWorkspaceWithRichParameters(t *testing.T) {
18841884
require.NoError(t, err)
18851885
require.ElementsMatch(t, expectedBuildParameters, workspaceBuildParameters)
18861886
}
1887+
1888+
func TestWorkspaceWithOptionalRichParameters(t *testing.T) {
1889+
t.Parallel()
1890+
1891+
const (
1892+
firstParameterName = "first_parameter"
1893+
firstParameterType = "string"
1894+
firstParameterDescription = "This is _first_ *parameter*"
1895+
firstParameterDefaultValue = "1"
1896+
1897+
secondParameterName = "second_parameter"
1898+
secondParameterType = "number"
1899+
secondParameterDescription = "_This_ is second *parameter*"
1900+
secondParameterRequired = true
1901+
)
1902+
1903+
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
1904+
user := coderdtest.CreateFirstUser(t, client)
1905+
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
1906+
Parse: echo.ParseComplete,
1907+
ProvisionPlan: []*proto.Provision_Response{
1908+
{
1909+
Type: &proto.Provision_Response_Complete{
1910+
Complete: &proto.Provision_Complete{
1911+
Parameters: []*proto.RichParameter{
1912+
{
1913+
Name: firstParameterName,
1914+
Type: firstParameterType,
1915+
Description: firstParameterDescription,
1916+
DefaultValue: firstParameterDefaultValue,
1917+
},
1918+
{
1919+
Name: secondParameterName,
1920+
Type: secondParameterType,
1921+
Description: secondParameterDescription,
1922+
Required: secondParameterRequired,
1923+
},
1924+
},
1925+
},
1926+
},
1927+
},
1928+
},
1929+
ProvisionApply: []*proto.Provision_Response{{
1930+
Type: &proto.Provision_Response_Complete{
1931+
Complete: &proto.Provision_Complete{},
1932+
},
1933+
}},
1934+
})
1935+
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
1936+
1937+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1938+
defer cancel()
1939+
1940+
templateRichParameters, err := client.TemplateVersionRichParameters(ctx, version.ID)
1941+
require.NoError(t, err)
1942+
require.Len(t, templateRichParameters, 2)
1943+
require.Equal(t, firstParameterName, templateRichParameters[0].Name)
1944+
require.Equal(t, firstParameterType, templateRichParameters[0].Type)
1945+
require.Equal(t, firstParameterDescription, templateRichParameters[0].Description)
1946+
require.Equal(t, firstParameterDefaultValue, templateRichParameters[0].DefaultValue)
1947+
require.Equal(t, secondParameterName, templateRichParameters[1].Name)
1948+
require.Equal(t, secondParameterType, templateRichParameters[1].Type)
1949+
require.Equal(t, secondParameterDescription, templateRichParameters[1].Description)
1950+
require.Equal(t, secondParameterRequired, templateRichParameters[1].Required)
1951+
1952+
expectedBuildParameters := []codersdk.WorkspaceBuildParameter{
1953+
{Name: firstParameterName, Value: firstParameterDefaultValue},
1954+
}
1955+
1956+
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
1957+
workspace := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID, func(cwr *codersdk.CreateWorkspaceRequest) {
1958+
cwr.RichParameterValues = expectedBuildParameters
1959+
})
1960+
1961+
workspaceBuild := coderdtest.AwaitWorkspaceBuildJob(t, client, workspace.LatestBuild.ID)
1962+
require.Equal(t, codersdk.WorkspaceStatusRunning, workspaceBuild.Status)
1963+
1964+
workspaceBuildParameters, err := client.WorkspaceBuildParameters(ctx, workspaceBuild.ID)
1965+
require.NoError(t, err)
1966+
require.ElementsMatch(t, expectedBuildParameters, workspaceBuildParameters)
1967+
}

0 commit comments

Comments
 (0)