@@ -1103,65 +1103,120 @@ func TestTemplateExamples(t *testing.T) {
1103
1103
func TestTemplateVersionVariables (t * testing.T ) {
1104
1104
t .Parallel ()
1105
1105
1106
- templateVariables := []* proto.TemplateVariable {
1107
- {
1108
- Name : "first_variable" ,
1109
- Description : "This is the first variable" ,
1110
- Type : "string" ,
1111
- Required : true ,
1112
- Sensitive : true ,
1113
- },
1114
- {
1115
- Name : "second_variable" ,
1116
- Description : "This is the second variable" ,
1117
- DefaultValue : "123" ,
1118
- Type : "number" ,
1119
- },
1106
+ createEchoResponses := func (templateVariables []* proto.TemplateVariable ) * echo.Responses {
1107
+ return & echo.Responses {
1108
+ Parse : []* proto.Parse_Response {
1109
+ {
1110
+ Type : & proto.Parse_Response_Complete {
1111
+ Complete : & proto.Parse_Complete {
1112
+ TemplateVariables : templateVariables ,
1113
+ },
1114
+ },
1115
+ },
1116
+ },
1117
+ ProvisionPlan : echo .ProvisionComplete ,
1118
+ ProvisionApply : []* proto.Provision_Response {{
1119
+ Type : & proto.Provision_Response_Complete {
1120
+ Complete : & proto.Provision_Complete {},
1121
+ },
1122
+ }},
1123
+ }
1120
1124
}
1121
1125
1122
- echoResponses := & echo.Responses {
1123
- Parse : []* proto.Parse_Response {
1126
+ t .Run ("Pass value for required variable" , func (t * testing.T ) {
1127
+ t .Parallel ()
1128
+
1129
+ templateVariables := []* proto.TemplateVariable {
1124
1130
{
1125
- Type : & proto.Parse_Response_Complete {
1126
- Complete : & proto.Parse_Complete {
1127
- TemplateVariables : templateVariables ,
1131
+ Name : "first_variable" ,
1132
+ Description : "This is the first variable" ,
1133
+ Type : "string" ,
1134
+ Required : true ,
1135
+ Sensitive : true ,
1136
+ },
1137
+ }
1138
+ const firstVariableValue = "foobar"
1139
+
1140
+ client := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerDaemon : true })
1141
+ user := coderdtest .CreateFirstUser (t , client )
1142
+ version := coderdtest .CreateTemplateVersion (t , client , user .OrganizationID ,
1143
+ createEchoResponses (templateVariables ),
1144
+ func (ctvr * codersdk.CreateTemplateVersionRequest ) {
1145
+ ctvr .UserVariableValues = []codersdk.VariableValue {
1146
+ {
1147
+ Name : templateVariables [0 ].Name ,
1148
+ Value : firstVariableValue ,
1128
1149
},
1129
- },
1150
+ }
1130
1151
},
1131
- },
1132
- ProvisionPlan : echo .ProvisionComplete ,
1133
- ProvisionApply : []* proto.Provision_Response {{
1134
- Type : & proto.Provision_Response_Complete {
1135
- Complete : & proto.Provision_Complete {},
1152
+ )
1153
+ templateVersion := coderdtest .AwaitTemplateVersionJob (t , client , version .ID )
1154
+
1155
+ // As user passed the value for the first parameter, the job will succeed.
1156
+ require .Empty (t , templateVersion .Job .Error )
1157
+
1158
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitShort )
1159
+ defer cancel ()
1160
+
1161
+ actualVariables , err := client .TemplateVersionVariables (ctx , templateVersion .ID )
1162
+ require .NoError (t , err )
1163
+
1164
+ require .Len (t , actualVariables , 1 )
1165
+ require .Equal (t , templateVariables [0 ].Name , actualVariables [0 ].Name )
1166
+ require .Equal (t , templateVariables [0 ].Description , actualVariables [0 ].Description )
1167
+ require .Equal (t , templateVariables [0 ].Type , actualVariables [0 ].Type )
1168
+ require .Equal (t , templateVariables [0 ].DefaultValue , actualVariables [0 ].DefaultValue )
1169
+ require .Equal (t , templateVariables [0 ].Required , actualVariables [0 ].Required )
1170
+ require .Equal (t , templateVariables [0 ].Sensitive , actualVariables [0 ].Sensitive )
1171
+ require .Equal (t , firstVariableValue , actualVariables [0 ].Value )
1172
+ })
1173
+
1174
+ t .Run ("Missing value for required variable" , func (t * testing.T ) {
1175
+ t .Parallel ()
1176
+
1177
+ templateVariables := []* proto.TemplateVariable {
1178
+ {
1179
+ Name : "first_variable" ,
1180
+ Description : "This is the first variable" ,
1181
+ Type : "string" ,
1182
+ Required : true ,
1183
+ Sensitive : true ,
1136
1184
},
1137
- }},
1138
- }
1185
+ {
1186
+ Name : "second_variable" ,
1187
+ Description : "This is the second variable" ,
1188
+ DefaultValue : "123" ,
1189
+ Type : "number" ,
1190
+ },
1191
+ }
1139
1192
1140
- client := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerDaemon : true })
1141
- user := coderdtest .CreateFirstUser (t , client )
1142
- version := coderdtest .CreateTemplateVersion (t , client , user .OrganizationID , echoResponses )
1143
- templateVersion := coderdtest .AwaitTemplateVersionJob (t , client , version .ID )
1193
+ client := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerDaemon : true })
1194
+ user := coderdtest .CreateFirstUser (t , client )
1195
+ version := coderdtest .CreateTemplateVersion (t , client , user .OrganizationID , createEchoResponses ( templateVariables ) )
1196
+ templateVersion := coderdtest .AwaitTemplateVersionJob (t , client , version .ID )
1144
1197
1145
- // As the first variable is marked as required and misses the default value,
1146
- // the job will fail, but will populate the template_version_variables table with existing variables.
1147
- require .Contains (t , templateVersion .Job .Error , "required template variables need values" )
1198
+ // As the first variable is marked as required and misses the default value,
1199
+ // the job will fail, but will populate the template_version_variables table with existing variables.
1200
+ require .Contains (t , templateVersion .Job .Error , "required template variables need values" )
1148
1201
1149
- ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitShort )
1150
- defer cancel ()
1202
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitShort )
1203
+ defer cancel ()
1151
1204
1152
- actualVariables , err := client .TemplateVersionVariables (ctx , templateVersion .ID )
1153
- require .NoError (t , err )
1205
+ actualVariables , err := client .TemplateVersionVariables (ctx , templateVersion .ID )
1206
+ require .NoError (t , err )
1154
1207
1155
- require .Len (t , actualVariables , 2 )
1156
- for i := range templateVariables {
1157
- require .Equal (t , templateVariables [i ].Name , actualVariables [i ].Name )
1158
- require .Equal (t , templateVariables [i ].Description , actualVariables [i ].Description )
1159
- require .Equal (t , templateVariables [i ].Type , actualVariables [i ].Type )
1160
- require .Equal (t , templateVariables [i ].DefaultValue , actualVariables [i ].DefaultValue )
1161
- require .Equal (t , templateVariables [i ].Required , actualVariables [i ].Required )
1162
- require .Equal (t , templateVariables [i ].Sensitive , actualVariables [i ].Sensitive )
1163
- }
1208
+ require .Len (t , actualVariables , 2 )
1209
+ for i := range templateVariables {
1210
+ require .Equal (t , templateVariables [i ].Name , actualVariables [i ].Name )
1211
+ require .Equal (t , templateVariables [i ].Description , actualVariables [i ].Description )
1212
+ require .Equal (t , templateVariables [i ].Type , actualVariables [i ].Type )
1213
+ require .Equal (t , templateVariables [i ].DefaultValue , actualVariables [i ].DefaultValue )
1214
+ require .Equal (t , templateVariables [i ].Required , actualVariables [i ].Required )
1215
+ require .Equal (t , templateVariables [i ].Sensitive , actualVariables [i ].Sensitive )
1216
+ }
1217
+
1218
+ require .Equal (t , "" , actualVariables [0 ].Value )
1219
+ require .Equal (t , templateVariables [1 ].DefaultValue , actualVariables [1 ].Value )
1164
1220
1165
- require .Equal (t , "" , actualVariables [0 ].Value )
1166
- require .Equal (t , templateVariables [1 ].DefaultValue , actualVariables [1 ].Value )
1221
+ })
1167
1222
}
0 commit comments