@@ -100,10 +100,11 @@ func TestDynamicParametersWithTerraformValues(t *testing.T) {
100100require .Equal (t ,- 1 ,preview .ID )
101101require .Empty (t ,preview .Diagnostics )
102102
103- require .Len (t ,preview .Parameters ,1 )
104- require .Equal (t ,"jetbrains_ide" ,preview .Parameters [0 ].Name )
105- require .True (t ,preview .Parameters [0 ].Value .Valid )
106- require .Equal (t ,"CL" ,preview .Parameters [0 ].Value .Value )
103+ require .Len (t ,preview .Parameters ,2 )
104+ coderdtest .AssertParameter (t ,"jetbrains_ide" ,preview .Parameters ).
105+ Exists ().Value ("CL" )
106+ coderdtest .AssertParameter (t ,"region" ,preview .Parameters ).
107+ Exists ().Value ("na" )
107108})
108109
109110// OldProvisioners use the static parameters in the dynamic param flow
@@ -241,10 +242,11 @@ func TestDynamicParametersWithTerraformValues(t *testing.T) {
241242require .Equal (t ,- 1 ,preview .ID )
242243require .Empty (t ,preview .Diagnostics )
243244
244- require .Len (t ,preview .Parameters ,1 )
245- require .Equal (t ,"jetbrains_ide" ,preview .Parameters [0 ].Name )
246- require .True (t ,preview .Parameters [0 ].Value .Valid )
247- require .Equal (t ,"CL" ,preview .Parameters [0 ].Value .Value )
245+ require .Len (t ,preview .Parameters ,2 )
246+ coderdtest .AssertParameter (t ,"jetbrains_ide" ,preview .Parameters ).
247+ Exists ().Value ("CL" )
248+ coderdtest .AssertParameter (t ,"region" ,preview .Parameters ).
249+ Exists ().Value ("na" )
248250_ = stream .Close (websocket .StatusGoingAway )
249251
250252wrk := coderdtest .CreateWorkspace (t ,setup .client ,setup .template .ID ,func (request * codersdk.CreateWorkspaceRequest ) {
@@ -253,29 +255,35 @@ func TestDynamicParametersWithTerraformValues(t *testing.T) {
253255Name :preview .Parameters [0 ].Name ,
254256Value :"GO" ,
255257},
258+ {
259+ Name :preview .Parameters [1 ].Name ,
260+ Value :"eu" ,
261+ },
256262}
257263request .EnableDynamicParameters = true
258264})
259265coderdtest .AwaitWorkspaceBuildJobCompleted (t ,setup .client ,wrk .LatestBuild .ID )
260266
261267params ,err := setup .client .WorkspaceBuildParameters (ctx ,wrk .LatestBuild .ID )
262268require .NoError (t ,err )
263- require .Len (t ,params ,1 )
264- require .Equal (t ,"jetbrains_ide" ,params [0 ].Name )
265- require .Equal (t ,"GO" ,params [0 ].Value )
269+ require .ElementsMatch (t , []codersdk.WorkspaceBuildParameter {
270+ {Name :"jetbrains_ide" ,Value :"GO" }, {Name :"region" ,Value :"eu" },
271+ },params )
272+
273+ regionOptions := []string {"na" ,"af" ,"sa" ,"as" }
266274
267275// A helper function to assert params
268276doTransition := func (t * testing.T ,trans codersdk.WorkspaceTransition ) {
269277t .Helper ()
270278
271- fooVal := coderdtest .RandomUsername (t )
279+ regionVal := regionOptions [0 ]
280+ regionOptions = regionOptions [1 :]// Choose the next region on the next build
281+
272282bld ,err := setup .client .CreateWorkspaceBuild (ctx ,wrk .ID , codersdk.CreateWorkspaceBuildRequest {
273283TemplateVersionID :setup .template .ActiveVersionID ,
274284Transition :trans ,
275285RichParameterValues : []codersdk.WorkspaceBuildParameter {
276- // No validation, so this should work as is.
277- // Overwrite the value on each transition
278- {Name :"foo" ,Value :fooVal },
286+ {Name :"region" ,Value :regionVal },
279287},
280288EnableDynamicParameters :ptr .Ref (true ),
281289})
@@ -286,7 +294,7 @@ func TestDynamicParametersWithTerraformValues(t *testing.T) {
286294require .NoError (t ,err )
287295require .ElementsMatch (t ,latestParams , []codersdk.WorkspaceBuildParameter {
288296{Name :"jetbrains_ide" ,Value :"GO" },
289- {Name :"foo " ,Value :fooVal },
297+ {Name :"region " ,Value :regionVal },
290298})
291299}
292300