FIX: `RateLimiter` max of zero or less should raise rate limit exceeded.
This commit is contained in:
parent
47c41f474d
commit
5d9f9c2614
|
@ -83,7 +83,7 @@ class RateLimiter
|
|||
def performed!
|
||||
return if rate_unlimited?
|
||||
now = Time.now.to_i
|
||||
if eval_lua(PERFORM_LUA, PERFORM_LUA_SHA, [prefixed_key], [now, @secs, @max]) == 0
|
||||
if max <= 0 || (eval_lua(PERFORM_LUA, PERFORM_LUA_SHA, [prefixed_key], [now, @secs, @max]) == 0)
|
||||
raise RateLimiter::LimitExceeded.new(seconds_to_wait, @type)
|
||||
end
|
||||
rescue Redis::CommandError => e
|
||||
|
|
|
@ -93,6 +93,17 @@ describe RateLimiter do
|
|||
end
|
||||
end
|
||||
|
||||
context 'max is less than or equal to zero' do
|
||||
|
||||
it 'should raise the right error' do
|
||||
[-1, 0].each do |max|
|
||||
expect do
|
||||
RateLimiter.new(user, "a", max, 60).performed!
|
||||
end.to raise_error(RateLimiter::LimitExceeded)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "multiple calls" do
|
||||
before do
|
||||
rate_limiter.performed!
|
||||
|
|
Loading…
Reference in New Issue