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

     1  package rate
     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 TestRateLimitConfig(t *testing.T) {
    12  	var config Config
    13  	rawConfig := map[string]interface{}{
    14  		"limit":                 "10-S",
    15  		"policy":                "local",
    16  		"trust_forward_headers": true,
    17  	}
    18  
    19  	err := plugin.Decode(rawConfig, &config)
    20  	assert.NoError(t, err)
    21  
    22  	assert.Equal(t, "10-S", config.Limit)
    23  	assert.Equal(t, "local", config.Policy)
    24  	assert.True(t, config.TrustForwardHeaders)
    25  }
    26  
    27  func TestInvalidRateLimitConfig(t *testing.T) {
    28  	var config Config
    29  	rawConfig := map[string]interface{}{
    30  		"limit": []string{"wrong"},
    31  	}
    32  
    33  	err := plugin.Decode(rawConfig, &config)
    34  	assert.Error(t, err)
    35  }
    36  
    37  func TestRateLimitPluginLocalPolicy(t *testing.T) {
    38  	rawConfig := map[string]interface{}{
    39  		"limit":  "10-S",
    40  		"policy": "local",
    41  	}
    42  
    43  	def := proxy.NewRouterDefinition(proxy.NewDefinition())
    44  	err := setupRateLimit(def, rawConfig)
    45  
    46  	assert.NoError(t, err)
    47  	assert.Len(t, def.Middleware(), 2)
    48  }
    49  
    50  func TestRateLimitPluginRedisPolicyWithInvalidStorage(t *testing.T) {
    51  	rawConfig := map[string]interface{}{
    52  		"limit":  "10-S",
    53  		"policy": "redis",
    54  	}
    55  
    56  	def := proxy.NewRouterDefinition(proxy.NewDefinition())
    57  	err := setupRateLimit(def, rawConfig)
    58  
    59  	assert.Error(t, err)
    60  }
    61  
    62  func TestRateLimitPluginInvalidPolicy(t *testing.T) {
    63  	rawConfig := map[string]interface{}{
    64  		"limit":  "10-S",
    65  		"policy": "wrong",
    66  	}
    67  
    68  	def := proxy.NewRouterDefinition(proxy.NewDefinition())
    69  	err := setupRateLimit(def, rawConfig)
    70  
    71  	assert.Error(t, err)
    72  }
    73  
    74  func TestRateLimitPluginTrustForwardHeadersDefaultsToFalse(t *testing.T) {
    75  	var config Config
    76  	rawConfig := map[string]interface{}{
    77  		"limit":  "10-S",
    78  		"policy": "local",
    79  	}
    80  
    81  	err := plugin.Decode(rawConfig, &config)
    82  	assert.NoError(t, err)
    83  
    84  	assert.False(t, config.TrustForwardHeaders)
    85  }
    86  
    87  func TestRateLimitPluginInvalidTrustForwardHeaders(t *testing.T) {
    88  	var config Config
    89  	rawConfig := map[string]interface{}{
    90  		"limit":                 "10-S",
    91  		"policy":                "local",
    92  		"trust_forward_headers": "not_boolean",
    93  	}
    94  
    95  	err := plugin.Decode(rawConfig, &config)
    96  	assert.Error(t, err)
    97  }