Skip to content

Commit 40ee3fd

Browse files
committed
test: add unit test for template vars in dynamic parameter
1 parent e86224c commit 40ee3fd

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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy