@@ -309,4 +309,63 @@ func TestApp(t *testing.T) {
309309}
310310})
311311
312+ t .Run ("CORS Behavior" ,func (t * testing.T ) {
313+ t .Parallel ()
314+
315+ baseConfig := `
316+ provider "coder" {}
317+ resource "coder_agent" "dev" {
318+ os = "linux"
319+ arch = "amd64"
320+ }
321+ resource "coder_app" "test" {
322+ agent_id = coder_agent.dev.id
323+ slug = "test"
324+ display_name = "Testing"
325+ url = "https://google.com"
326+ external = true
327+ %s
328+ }`
329+
330+ cases := []struct {
331+ name string
332+ config string
333+ behavior string
334+ }{{
335+ name :"Default CORS" ,
336+ config :fmt .Sprintf (baseConfig ,"" ),
337+ behavior :"simple" ,
338+ }, {
339+ name :"Simple CORS" ,
340+ config :fmt .Sprintf (baseConfig ,"cors_behavior =\" simple\" " ),
341+ behavior :"simple" ,
342+ }, {
343+ name :"Passthru CORS" ,
344+ config :fmt .Sprintf (baseConfig ,"cors_behavior =\" passthru\" " ),
345+ behavior :"passthru" ,
346+ }}
347+ for _ ,tc := range cases {
348+ tc := tc
349+ t .Run (tc .name ,func (t * testing.T ) {
350+ t .Parallel ()
351+ resource .Test (t , resource.TestCase {
352+ ProviderFactories :coderFactory (),
353+ IsUnitTest :true ,
354+ Steps : []resource.TestStep {{
355+ Config :tc .config ,
356+ Check :func (state * terraform.State )error {
357+ require .Len (t ,state .Modules ,1 )
358+ require .Len (t ,state .Modules [0 ].Resources ,2 )
359+ resource := state .Modules [0 ].Resources ["coder_app.test" ]
360+ require .NotNil (t ,resource )
361+ require .Equal (t ,tc .behavior ,resource .Primary .Attributes ["cors_behavior" ])
362+ return nil
363+ },
364+ ExpectError :nil ,
365+ }},
366+ })
367+ })
368+ }
369+ })
370+
312371}