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.
Этот коммит содержится в:
коммит произвёл
Chris
родитель
323d717a40
Коммит
034dbc07e3
@@ -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)
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user