@@ -1884,3 +1884,84 @@ func TestWorkspaceWithRichParameters(t *testing.T) {
1884
1884
require .NoError (t , err )
1885
1885
require .ElementsMatch (t , expectedBuildParameters , workspaceBuildParameters )
1886
1886
}
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