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 }