Skip to content

Commit 9e072ba

Browse files
committed
test: add unit test for template vars in dynamic parameter
1 parent 8396c67 commit 9e072ba

File tree

3 files changed

+91
-1
lines changed

3 files changed

+91
-1
lines changed

coderd/coderdtest/dynamicparameters.go

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ type DynamicParameterTemplateParams struct {
2929
// TemplateID is used to update an existing template instead of creating a new one.
3030
TemplateID uuid.UUID
3131

32-
Version func(request *codersdk.CreateTemplateVersionRequest)
32+
Version func(request *codersdk.CreateTemplateVersionRequest)
33+
Variables []codersdk.TemplateVersionVariable
3334
}
3435

3536
func DynamicParameterTemplate(t *testing.T, client *codersdk.Client, org uuid.UUID, args DynamicParameterTemplateParams) (codersdk.Template, codersdk.TemplateVersion) {
@@ -48,6 +49,32 @@ func DynamicParameterTemplate(t *testing.T, client *codersdk.Client, org uuid.UU
4849
},
4950
}}
5051

52+
userVars := make([]codersdk.VariableValue, 0, len(args.Variables))
53+
parseVars := make([]*proto.TemplateVariable, 0, len(args.Variables))
54+
for _, argv := range args.Variables {
55+
parseVars = append(parseVars, &proto.TemplateVariable{
56+
Name: argv.Name,
57+
Description: argv.Description,
58+
Type: argv.Type,
59+
DefaultValue: argv.DefaultValue,
60+
Required: argv.Required,
61+
Sensitive: argv.Sensitive,
62+
})
63+
64+
userVars = append(userVars, codersdk.VariableValue{
65+
Name: argv.Name,
66+
Value: argv.Value,
67+
})
68+
}
69+
70+
files.Parse = []*proto.Response{{
71+
Type: &proto.Response_Parse{
72+
Parse: &proto.ParseComplete{
73+
TemplateVariables: parseVars,
74+
},
75+
},
76+
}}
77+
5178
mime := codersdk.ContentTypeTar
5279
if args.Zip {
5380
mime = codersdk.ContentTypeZip
@@ -59,6 +86,7 @@ func DynamicParameterTemplate(t *testing.T, client *codersdk.Client, org uuid.UU
5986
if args.Version != nil {
6087
args.Version(request)
6188
}
89+
request.UserVariableValues = userVars
6290
})
6391
AwaitTemplateVersionJobCompleted(t, client, version.ID)
6492

coderd/parameters_test.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,36 @@ func TestDynamicParametersWithTerraformValues(t *testing.T) {
343343
require.Len(t, preview.Diagnostics, 1)
344344
require.Equal(t, preview.Diagnostics[0].Extra.Code, "owner_not_found")
345345
})
346+
347+
t.Run("TemplateVariables", func(t *testing.T) {
348+
t.Parallel()
349+
350+
dynamicParametersTerraformSource, err := os.ReadFile("testdata/parameters/variables/main.tf")
351+
require.NoError(t, err)
352+
353+
setup := setupDynamicParamsTest(t, setupDynamicParamsTestParams{
354+
provisionerDaemonVersion: provProto.CurrentVersion.String(),
355+
mainTF: dynamicParametersTerraformSource,
356+
variables: []codersdk.TemplateVersionVariable{
357+
{Name: "one", Value: "austin", DefaultValue: "alice", Type: "string"},
358+
},
359+
plan: nil,
360+
static: nil,
361+
})
362+
363+
ctx := testutil.Context(t, testutil.WaitShort*100000)
364+
stream := setup.stream
365+
previews := stream.Chan()
366+
367+
// Should see the output of the module represented
368+
preview := testutil.RequireReceive(ctx, t, previews)
369+
require.Equal(t, -1, preview.ID)
370+
require.Empty(t, preview.Diagnostics)
371+
372+
require.Len(t, preview.Parameters, 1)
373+
coderdtest.AssertParameter(t, "variable_values", preview.Parameters).
374+
Exists().Value("austin")
375+
})
346376
}
347377

348378
type setupDynamicParamsTestParams struct {
@@ -355,6 +385,7 @@ type setupDynamicParamsTestParams struct {
355385

356386
static []*proto.RichParameter
357387
expectWebsocketError bool
388+
variables []codersdk.TemplateVersionVariable
358389
}
359390

360391
type dynamicParamsTest struct {
@@ -380,6 +411,7 @@ func setupDynamicParamsTest(t *testing.T, args setupDynamicParamsTestParams) dyn
380411
Plan: args.plan,
381412
ModulesArchive: args.modulesArchive,
382413
StaticParams: args.static,
414+
Variables: args.variables,
383415
})
384416

385417
ctx := testutil.Context(t, testutil.WaitShort)
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Base case for workspace tags + parameters.
2+
terraform {
3+
required_providers {
4+
coder = {
5+
source = "coder/coder"
6+
}
7+
docker = {
8+
source = "kreuzwerker/docker"
9+
version = "3.0.2"
10+
}
11+
}
12+
}
13+
14+
variable "one" {
15+
default = "alice"
16+
type = string
17+
}
18+
19+
20+
data "coder_parameter" "variable_values" {
21+
name = "variable_values"
22+
description = "Just to show the variable values"
23+
type = "string"
24+
default = var.one
25+
26+
option {
27+
name = "one"
28+
value = var.one
29+
}
30+
}

0 commit comments

Comments
 (0)