diff options
author | Pierre de La Morinerie <kemenaran@gmail.com> | 2018-02-06 10:57:34 +0530 |
---|---|---|
committer | Chris <ccbrown112@gmail.com> | 2018-02-05 23:27:34 -0600 |
commit | 034dbc07e3068c482e654b6a1a8fcbe4b01c44f3 (patch) | |
tree | 338bac5ef5795901f1c04718c0cc9b3330bdaa52 /app/ratelimit_test.go | |
parent | 323d717a402c4407ca14c8b94b5eebf861ccf44a (diff) | |
download | chat-034dbc07e3068c482e654b6a1a8fcbe4b01c44f3.tar.gz chat-034dbc07e3068c482e654b6a1a8fcbe4b01c44f3.tar.bz2 chat-034dbc07e3068c482e654b6a1a8fcbe4b01c44f3.zip |
handle RateLimiter initialization errors (#8199)
Previously, an error occuring in NewRateLimiter would return a nil
reference – which would be de-referenced just after, making the server
crash.
Diffstat (limited to 'app/ratelimit_test.go')
-rw-r--r-- | app/ratelimit_test.go | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/app/ratelimit_test.go b/app/ratelimit_test.go index ddaa25710..fb157b2b0 100644 --- a/app/ratelimit_test.go +++ b/app/ratelimit_test.go @@ -25,6 +25,21 @@ func genRateLimitSettings(useAuth, useIP bool, header string) *model.RateLimitSe } } +func TestNewRateLimiterSuccess(t *testing.T) { + settings := genRateLimitSettings(false, false, "") + rateLimiter, err := NewRateLimiter(settings) + require.NotNil(t, rateLimiter) + require.NoError(t, err) +} + +func TestNewRateLimiterFailure(t *testing.T) { + invalidSettings := genRateLimitSettings(false, false, "") + invalidSettings.MaxBurst = model.NewInt(-100) + rateLimiter, err := NewRateLimiter(invalidSettings) + require.Nil(t, rateLimiter) + require.Error(t, err) +} + func TestGenerateKey(t *testing.T) { cases := []struct { useAuth bool @@ -58,7 +73,7 @@ func TestGenerateKey(t *testing.T) { req.Header.Set(tc.header, tc.headerResult) } - rateLimiter := NewRateLimiter(genRateLimitSettings(tc.useAuth, tc.useIP, tc.header)) + rateLimiter, _ := NewRateLimiter(genRateLimitSettings(tc.useAuth, tc.useIP, tc.header)) key := rateLimiter.GenerateKey(req) |