@@ -197,6 +197,56 @@ func TestTemplateCreate(t *testing.T) {
197
197
require .EqualError (t , <- execDone , "Parameter value absent in parameter file for \" region\" !" )
198
198
removeTmpDirUntilSuccess (t , tempDir )
199
199
})
200
+
201
+ t .Run ("Recreate template with same name (create, delete, create)" , func (t * testing.T ) {
202
+ t .Parallel ()
203
+ client := coderdtest .New (t , & coderdtest.Options {IncludeProvisionerD : true })
204
+ coderdtest .CreateFirstUser (t , client )
205
+
206
+ create := func () error {
207
+ source := clitest .CreateTemplateVersionSource (t , & echo.Responses {
208
+ Parse : echo .ParseComplete ,
209
+ Provision : provisionCompleteWithAgent ,
210
+ })
211
+ args := []string {
212
+ "templates" ,
213
+ "create" ,
214
+ "my-template" ,
215
+ "--yes" ,
216
+ "--directory" , source ,
217
+ "--test.provisioner" , string (database .ProvisionerTypeEcho ),
218
+ }
219
+ cmd , root := clitest .New (t , args ... )
220
+ clitest .SetupConfig (t , client , root )
221
+ pty := ptytest .New (t )
222
+ cmd .SetIn (pty .Input ())
223
+ cmd .SetOut (pty .Output ())
224
+ cmd .SetErr (pty .Output ())
225
+
226
+ return cmd .Execute ()
227
+ }
228
+ del := func () error {
229
+ args := []string {
230
+ "templates" ,
231
+ "delete" ,
232
+ "my-template" ,
233
+ }
234
+ cmd , root := clitest .New (t , args ... )
235
+ clitest .SetupConfig (t , client , root )
236
+ pty := ptytest .New (t )
237
+ cmd .SetIn (pty .Input ())
238
+ cmd .SetOut (pty .Output ())
239
+
240
+ return cmd .Execute ()
241
+ }
242
+
243
+ err := create ()
244
+ require .NoError (t , err , "Template must be created without error" )
245
+ err = del ()
246
+ require .NoError (t , err , "Template must be deleted without error" )
247
+ err = create ()
248
+ require .NoError (t , err , "Template must be recreated without error" )
249
+ })
200
250
}
201
251
202
252
func createTestParseResponse () []* proto.Parse_Response {
0 commit comments