@@ -251,46 +251,154 @@ func TestAgent_Metadata(t *testing.T) {
251
251
252
252
func TestAgent_DefaultApps (t * testing.T ) {
253
253
t .Parallel ()
254
- resource .Test (t , resource.TestCase {
255
- Providers : map [string ]* schema.Provider {
256
- "coder" : provider .New (),
257
- },
258
- IsUnitTest : true ,
259
- Steps : []resource.TestStep {{
260
- Config : `
254
+ t .Run ("OK" , func (t * testing.T ) {
255
+ resource .Test (t , resource.TestCase {
256
+ Providers : map [string ]* schema.Provider {
257
+ "coder" : provider .New (),
258
+ },
259
+ IsUnitTest : true ,
260
+ Steps : []resource.TestStep {{
261
+ // Test the fields with non-default values.
262
+ Config : `
261
263
provider "coder" {
262
264
url = "https://example.com"
263
265
}
264
266
resource "coder_agent" "dev" {
265
267
os = "linux"
266
268
arch = "amd64"
267
- default_apps = ["web-terminal", "vscode-desktop", "code-server", "port-forward"]
269
+ display_apps {
270
+ vscode = false
271
+ vscode_insiders = true
272
+ web_terminal = false
273
+ port_forwarding_helper = false
274
+ ssh_helper = false
275
+ }
268
276
}
269
277
` ,
270
- Check : func (state * terraform.State ) error {
271
- require .Len (t , state .Modules , 1 )
272
- require .Len (t , state .Modules [0 ].Resources , 1 )
278
+ Check : func (state * terraform.State ) error {
279
+ require .Len (t , state .Modules , 1 )
280
+ require .Len (t , state .Modules [0 ].Resources , 1 )
273
281
274
- resource := state .Modules [0 ].Resources ["coder_agent.dev" ]
275
- require .NotNil (t , resource )
282
+ resource := state .Modules [0 ].Resources ["coder_agent.dev" ]
283
+ require .NotNil (t , resource )
276
284
277
- t .Logf ("resource: %v" , resource .Primary .Attributes )
285
+ t .Logf ("resource: %v" , resource .Primary .Attributes )
278
286
279
- numElements , ok := resource .Primary .Attributes ["default_apps.#" ]
280
- require .True (t , ok )
281
- require .Equal (t , "4" , numElements )
287
+ for _ , app := range []string {
288
+ "web_terminal" ,
289
+ "vscode_insiders" ,
290
+ "vscode" ,
291
+ "port_forwarding_helper" ,
292
+ "ssh_helper" ,
293
+ } {
294
+ key := fmt .Sprintf ("display_apps.0.%s" , app )
295
+ if app == "vscode_insiders" {
296
+ require .Equal (t , "true" , resource .Primary .Attributes [key ])
297
+ } else {
298
+ require .Equal (t , "false" , resource .Primary .Attributes [key ])
299
+ }
300
+ }
301
+ return nil
302
+ },
303
+ }},
304
+ })
282
305
283
- for i , app := range []string {
284
- "web-terminal" ,
285
- "vscode-desktop" ,
286
- "code-server" ,
287
- "port-forward" ,
288
- } {
289
- key := fmt .Sprintf ("default_apps.%d" , i )
290
- require .Equal (t , resource .Primary .Attributes [key ], app )
291
- }
292
- return nil
306
+ })
307
+
308
+ // Assert all the defaults are set correctly.
309
+ t .Run ("Omitted" , func (t * testing.T ) {
310
+ resource .Test (t , resource.TestCase {
311
+ Providers : map [string ]* schema.Provider {
312
+ "coder" : provider .New (),
293
313
},
294
- }},
314
+ IsUnitTest : true ,
315
+ Steps : []resource.TestStep {{
316
+ Config : `
317
+ provider "coder" {
318
+ url = "https://example.com"
319
+ }
320
+ resource "coder_agent" "dev" {
321
+ os = "linux"
322
+ arch = "amd64"
323
+ }
324
+ ` ,
325
+ Check : func (state * terraform.State ) error {
326
+ require .Len (t , state .Modules , 1 )
327
+ require .Len (t , state .Modules [0 ].Resources , 1 )
328
+
329
+ resource := state .Modules [0 ].Resources ["coder_agent.dev" ]
330
+ require .NotNil (t , resource )
331
+
332
+ t .Logf ("resource: %v" , resource .Primary .Attributes )
333
+
334
+ for _ , app := range []string {
335
+ "web_terminal" ,
336
+ "vscode_insiders" ,
337
+ "vscode" ,
338
+ "port_forwarding_helper" ,
339
+ "ssh_helper" ,
340
+ } {
341
+ key := fmt .Sprintf ("display_apps.0.%s" , app )
342
+ if app == "vscode_insiders" {
343
+ require .Equal (t , "false" , resource .Primary .Attributes [key ])
344
+ } else {
345
+ require .Equal (t , "true" , resource .Primary .Attributes [key ])
346
+ }
347
+ }
348
+ return nil
349
+ },
350
+ }},
351
+ })
352
+ })
353
+
354
+ t .Run ("Empty" , func (t * testing.T ) {
355
+ resource .Test (t , resource.TestCase {
356
+ Providers : map [string ]* schema.Provider {
357
+ "coder" : provider .New (),
358
+ },
359
+ IsUnitTest : true ,
360
+ Steps : []resource.TestStep {{
361
+ Config : `
362
+ provider "coder" {
363
+ url = "https://example.com"
364
+ }
365
+ resource "coder_agent" "dev" {
366
+ os = "linux"
367
+ arch = "amd64"
368
+ display_apps {
369
+ vscode = false
370
+ }
371
+ }
372
+ ` ,
373
+ Check : func (state * terraform.State ) error {
374
+ require .Len (t , state .Modules , 1 )
375
+ require .Len (t , state .Modules [0 ].Resources , 1 )
376
+
377
+ resource := state .Modules [0 ].Resources ["coder_agent.dev" ]
378
+ require .NotNil (t , resource )
379
+
380
+ t .Logf ("resource: %v" , resource .Primary .Attributes )
381
+
382
+ for _ , app := range []string {
383
+ "web_terminal" ,
384
+ "vscode_insiders" ,
385
+ "vscode" ,
386
+ "port_forwarding_helper" ,
387
+ "ssh_helper" ,
388
+ } {
389
+ key := fmt .Sprintf ("display_apps.0.%s" , app )
390
+ if app == "vscode_insiders" {
391
+ require .Equal (t , "false" , resource .Primary .Attributes [key ])
392
+ } else {
393
+ require .Equal (t , "true" , resource .Primary .Attributes [key ])
394
+ }
395
+ }
396
+
397
+ return nil
398
+ },
399
+ }},
400
+ })
401
+
295
402
})
403
+
296
404
}
0 commit comments