@@ -27,6 +27,7 @@ import (
27
27
"github.com/coder/coder/v2/provisionersdk"
28
28
"github.com/coder/coder/v2/provisionersdk/proto"
29
29
"github.com/coder/coder/v2/testutil"
30
+ "github.com/coder/websocket"
30
31
)
31
32
32
33
func TestTemplateVersion (t * testing.T ) {
@@ -2256,75 +2257,75 @@ const dynamicParametersTerraformPlan = `
2256
2257
}
2257
2258
`
2258
2259
2259
- // func TestTemplateVersionDynamicParameters(t *testing.T) {
2260
- // t.Parallel()
2261
-
2262
- // ownerClient := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
2263
- // owner := coderdtest.CreateFirstUser(t, ownerClient)
2264
- // templateAdmin, _ := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID, rbac.RoleTemplateAdmin())
2265
-
2266
- // files := echo.WithExtraFiles(map[string][]byte{
2267
- // "main.tf": []byte(dynamicParametersTerraformSource),
2268
- // })
2269
- // files.ProvisionPlan = []*proto.Response{{
2270
- // Type: &proto.Response_Plan{
2271
- // Plan: &proto.PlanComplete{
2272
- // Plan: []byte(dynamicParametersTerraformPlan),
2273
- // },
2274
- // },
2275
- // }}
2276
-
2277
- // version := coderdtest.CreateTemplateVersion(t, templateAdmin, owner.OrganizationID, files)
2278
- // coderdtest.AwaitTemplateVersionJobCompleted(t, templateAdmin, version.ID)
2279
- // _ = coderdtest.CreateTemplate(t, templateAdmin, owner.OrganizationID, version.ID)
2280
-
2281
- // ctx := testutil.Context(t, testutil.WaitShort)
2282
- // stream, err := templateAdmin.TemplateVersionDynamicParameters(ctx, version.ID)
2283
- // require.NoError(t, err)
2284
- // defer stream.Close(websocket.StatusGoingAway)
2285
-
2286
- // previews := stream.Chan()
2287
-
2288
- // // Should automatically send a form state with all defaulted/empty values
2289
- // preview := testutil.RequireRecvCtx(ctx, t, previews)
2290
- // require.Empty(t, preview.Diagnostics)
2291
- // require.Equal(t, "group", preview.Parameters[0].Name)
2292
- // require.True(t, preview.Parameters[0].Value.Valid())
2293
- // require.Equal(t, "Everyone", preview.Parameters[0].Value.Value.AsString())
2294
-
2295
- // // Send a new value, and see it reflected
2296
- // stream.Send(codersdk.DynamicParametersRequest{
2297
- // ID: 1,
2298
- // Inputs: map[string]string{"group": "Bloob"},
2299
- // })
2300
- // preview = testutil.RequireRecvCtx(ctx, t, previews)
2301
- // require.Equal(t, 1, preview.ID)
2302
- // require.Empty(t, preview.Diagnostics)
2303
- // require.Equal(t, "group", preview.Parameters[0].Name)
2304
- // require.True(t, preview.Parameters[0].Value.Valid())
2305
- // require.Equal(t, "Bloob", preview.Parameters[0].Value.Value.AsString())
2306
-
2307
- // // Send an invalid value, expect a diagnostic
2308
- // stream.Send(codersdk.DynamicParametersRequest{
2309
- // ID: 2,
2310
- // Inputs: map[string]string{"group": "Invalid"},
2311
- // })
2312
- // preview = testutil.RequireRecvCtx(ctx, t, previews)
2313
- // require.Equal(t, 2, preview.ID)
2314
- // // require.NotEmpty(t, preview.Diagnostics)
2315
- // require.Equal(t, "group", preview.Parameters[0].Name)
2316
- // require.True(t, preview.Parameters[0].Value.Valid())
2317
- // require.Equal(t, "Invalid", preview.Parameters[0].Value.Value.AsString())
2318
-
2319
- // // Back to default
2320
- // stream.Send(codersdk.DynamicParametersRequest{
2321
- // ID: 3,
2322
- // Inputs: map[string]string{},
2323
- // })
2324
- // preview = testutil.RequireRecvCtx(ctx, t, previews)
2325
- // require.Equal(t, 3, preview.ID)
2326
- // require.Empty(t, preview.Diagnostics)
2327
- // require.Equal(t, "group", preview.Parameters[0].Name)
2328
- // require.True(t, preview.Parameters[0].Value.Valid())
2329
- // require.Equal(t, "Everyone", preview.Parameters[0].Value.Value.AsString())
2330
- // }
2260
+ func TestTemplateVersionDynamicParameters (t * testing.T ) {
2261
+ t .Parallel ()
2262
+
2263
+ ownerClient := coderdtest .New (t ,& coderdtest.Options {IncludeProvisionerDaemon :true })
2264
+ owner := coderdtest .CreateFirstUser (t ,ownerClient )
2265
+ templateAdmin ,_ := coderdtest .CreateAnotherUser (t ,ownerClient ,owner .OrganizationID ,rbac .RoleTemplateAdmin ())
2266
+
2267
+ files := echo .WithExtraFiles (map [string ][]byte {
2268
+ "main.tf" : []byte (dynamicParametersTerraformSource ),
2269
+ })
2270
+ files .ProvisionPlan = []* proto.Response {{
2271
+ Type :& proto.Response_Plan {
2272
+ Plan :& proto.PlanComplete {
2273
+ Plan : []byte (dynamicParametersTerraformPlan ),
2274
+ },
2275
+ },
2276
+ }}
2277
+
2278
+ version := coderdtest .CreateTemplateVersion (t ,templateAdmin ,owner .OrganizationID ,files )
2279
+ coderdtest .AwaitTemplateVersionJobCompleted (t ,templateAdmin ,version .ID )
2280
+ _ = coderdtest .CreateTemplate (t ,templateAdmin ,owner .OrganizationID ,version .ID )
2281
+
2282
+ ctx := testutil .Context (t ,testutil .WaitShort )
2283
+ stream ,err := templateAdmin .TemplateVersionDynamicParameters (ctx ,version .ID )
2284
+ require .NoError (t ,err )
2285
+ defer stream .Close (websocket .StatusGoingAway )
2286
+
2287
+ previews := stream .Chan ()
2288
+
2289
+ // Should automatically send a form state with all defaulted/empty values
2290
+ preview := testutil .RequireRecvCtx (ctx ,t ,previews )
2291
+ require .Empty (t ,preview .Diagnostics )
2292
+ require .Equal (t ,"group" ,preview .Parameters [0 ].Name )
2293
+ require .True (t ,preview .Parameters [0 ].Value .Valid ())
2294
+ require .Equal (t ,"Everyone" ,preview .Parameters [0 ].Value .Value .AsString ())
2295
+
2296
+ // Send a new value, and see it reflected
2297
+ stream .Send (codersdk.DynamicParametersRequest {
2298
+ ID :1 ,
2299
+ Inputs :map [string ]string {"group" :"Bloob" },
2300
+ })
2301
+ preview = testutil .RequireRecvCtx (ctx ,t ,previews )
2302
+ require .Equal (t ,1 ,preview .ID )
2303
+ require .Empty (t ,preview .Diagnostics )
2304
+ require .Equal (t ,"group" ,preview .Parameters [0 ].Name )
2305
+ require .True (t ,preview .Parameters [0 ].Value .Valid ())
2306
+ require .Equal (t ,"Bloob" ,preview .Parameters [0 ].Value .Value .AsString ())
2307
+
2308
+ // Send an invalid value, expect a diagnostic
2309
+ stream .Send (codersdk.DynamicParametersRequest {
2310
+ ID :2 ,
2311
+ Inputs :map [string ]string {"group" :"Invalid" },
2312
+ })
2313
+ preview = testutil .RequireRecvCtx (ctx ,t ,previews )
2314
+ require .Equal (t ,2 ,preview .ID )
2315
+ // require.NotEmpty(t, preview.Diagnostics)
2316
+ require .Equal (t ,"group" ,preview .Parameters [0 ].Name )
2317
+ require .True (t ,preview .Parameters [0 ].Value .Valid ())
2318
+ require .Equal (t ,"Invalid" ,preview .Parameters [0 ].Value .Value .AsString ())
2319
+
2320
+ // Back to default
2321
+ stream .Send (codersdk.DynamicParametersRequest {
2322
+ ID :3 ,
2323
+ Inputs :map [string ]string {},
2324
+ })
2325
+ preview = testutil .RequireRecvCtx (ctx ,t ,previews )
2326
+ require .Equal (t ,3 ,preview .ID )
2327
+ require .Empty (t ,preview .Diagnostics )
2328
+ require .Equal (t ,"group" ,preview .Parameters [0 ].Name )
2329
+ require .True (t ,preview .Parameters [0 ].Value .Valid ())
2330
+ require .Equal (t ,"Everyone" ,preview .Parameters [0 ].Value .Value .AsString ())
2331
+ }