github.com/hellofresh/janus@v0.0.0-20230925145208-ce8de8183c67/pkg/plugin/cors/setup_test.go (about)

     1  package cors
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/hellofresh/janus/pkg/plugin"
     7  	"github.com/hellofresh/janus/pkg/proxy"
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  func TestConfig(t *testing.T) {
    12  	var config Config
    13  	rawConfig := map[string]interface{}{
    14  		"domains":             []string{"*"},
    15  		"methods":             []string{"GET"},
    16  		"request_headers":     []string{"Content-Type", "Authorization"},
    17  		"exposed_headers":     []string{"Test"},
    18  		"options_passthrough": true,
    19  	}
    20  
    21  	err := plugin.Decode(rawConfig, &config)
    22  	assert.NoError(t, err)
    23  
    24  	assert.IsType(t, []string{}, config.AllowedOrigins)
    25  	assert.Equal(t, []string{"*"}, config.AllowedOrigins)
    26  
    27  	assert.IsType(t, []string{}, config.AllowedMethods)
    28  	assert.Equal(t, []string{"GET"}, config.AllowedMethods)
    29  
    30  	assert.IsType(t, []string{}, config.AllowedHeaders)
    31  	assert.Equal(t, []string{"Content-Type", "Authorization"}, config.AllowedHeaders)
    32  
    33  	assert.IsType(t, []string{}, config.ExposedHeaders)
    34  	assert.Equal(t, []string{"Test"}, config.ExposedHeaders)
    35  
    36  	assert.True(t, config.OptionsPassthrough)
    37  }
    38  
    39  func TestInvalidConfig(t *testing.T) {
    40  	var config Config
    41  	rawConfig := map[string]interface{}{
    42  		"domains": "*",
    43  	}
    44  
    45  	err := plugin.Decode(rawConfig, &config)
    46  	assert.Error(t, err)
    47  }
    48  
    49  func TestEmptyPassthrough(t *testing.T) {
    50  	var config Config
    51  	rawConfig := map[string]interface{}{
    52  		"domains":         []string{"*"},
    53  		"methods":         []string{"GET"},
    54  		"request_headers": []string{"Content-Type", "Authorization"},
    55  		"exposed_headers": []string{"Test"},
    56  	}
    57  
    58  	err := plugin.Decode(rawConfig, &config)
    59  	assert.NoError(t, err)
    60  
    61  	assert.False(t, config.OptionsPassthrough)
    62  }
    63  
    64  func TestSetup(t *testing.T) {
    65  	rawConfig := map[string]interface{}{
    66  		"domains":             []string{"*"},
    67  		"methods":             []string{"GET"},
    68  		"request_headers":     []string{"Content-Type", "Authorization"},
    69  		"exposed_headers":     []string{"Test"},
    70  		"options_passthrough": true,
    71  	}
    72  	def := proxy.NewRouterDefinition(proxy.NewDefinition())
    73  	err := setupCors(def, rawConfig)
    74  
    75  	assert.NoError(t, err)
    76  	assert.Len(t, def.Middleware(), 1)
    77  }