package main import ( "context" "net/http" "testing" "time" "github.com/stretchr/testify/assert" ) func TestCORS(t *testing.T) { ctx := mainCtx ctx, clearTimeout := context.WithTimeout(ctx, time.Second*30) defer clearTimeout() t.Run("enabled", func(t *testing.T) { client := testcluster.NewHTTPClient() req, err := http.NewRequestWithContext(ctx, "OPTIONS", "https://httpdetails.localhost.pomerium.io/cors-enabled", nil) if err != nil { t.Fatal(err) } req.Header.Set("Access-Control-Request-Method", "GET") req.Header.Set("Origin", "https://httpdetails.localhost.pomerium.io") res, err := client.Do(req) if !assert.NoError(t, err, "unexpected http error") { return } defer res.Body.Close() assert.Equal(t, http.StatusOK, res.StatusCode, "unexpected status code") }) t.Run("disabled", func(t *testing.T) { client := testcluster.NewHTTPClient() req, err := http.NewRequestWithContext(ctx, "OPTIONS", "https://httpdetails.localhost.pomerium.io/cors-disabled", nil) if err != nil { t.Fatal(err) } req.Header.Set("Access-Control-Request-Method", "GET") req.Header.Set("Origin", "https://httpdetails.localhost.pomerium.io") res, err := client.Do(req) if !assert.NoError(t, err, "unexpected http error") { return } defer res.Body.Close() assert.NotEqual(t, http.StatusOK, res.StatusCode, "unexpected status code") }) }