mirror of
https://github.com/discourse/discourse.git
synced 2025-05-31 01:27:15 +08:00
DEV: Apply syntax_tree formatting to spec/*
This commit is contained in:
@ -1,16 +1,22 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'rate_limiter'
|
||||
require "rate_limiter"
|
||||
|
||||
RSpec.describe RateLimiter do
|
||||
fab!(:user) { Fabricate(:user) }
|
||||
fab!(:admin) { Fabricate(:admin) }
|
||||
let(:rate_limiter) { RateLimiter.new(user, "peppermint-butler", 2, 60) }
|
||||
let(:apply_staff_rate_limiter) { RateLimiter.new(admin, "peppermint-servant", 5, 40, apply_limit_to_staff: true) }
|
||||
let(:staff_rate_limiter) { RateLimiter.new(user, "peppermind-servant", 5, 40, staff_limit: { max: 10, secs: 80 }) }
|
||||
let(:admin_staff_rate_limiter) { RateLimiter.new(admin, "peppermind-servant", 5, 40, staff_limit: { max: 10, secs: 80 }) }
|
||||
let(:apply_staff_rate_limiter) do
|
||||
RateLimiter.new(admin, "peppermint-servant", 5, 40, apply_limit_to_staff: true)
|
||||
end
|
||||
let(:staff_rate_limiter) do
|
||||
RateLimiter.new(user, "peppermind-servant", 5, 40, staff_limit: { max: 10, secs: 80 })
|
||||
end
|
||||
let(:admin_staff_rate_limiter) do
|
||||
RateLimiter.new(admin, "peppermind-servant", 5, 40, staff_limit: { max: 10, secs: 80 })
|
||||
end
|
||||
|
||||
describe 'disabled' do
|
||||
describe "disabled" do
|
||||
before do
|
||||
rate_limiter.performed!
|
||||
rate_limiter.performed!
|
||||
@ -29,7 +35,7 @@ RSpec.describe RateLimiter do
|
||||
end
|
||||
end
|
||||
|
||||
describe 'enabled' do
|
||||
describe "enabled" do
|
||||
before do
|
||||
RateLimiter.enable
|
||||
rate_limiter.clear!
|
||||
@ -37,8 +43,8 @@ RSpec.describe RateLimiter do
|
||||
admin_staff_rate_limiter.clear!
|
||||
end
|
||||
|
||||
context 'with aggressive rate limiter' do
|
||||
it 'can operate correctly and totally stop limiting' do
|
||||
context "with aggressive rate limiter" do
|
||||
it "can operate correctly and totally stop limiting" do
|
||||
freeze_time
|
||||
|
||||
# 2 requests every 30 seconds
|
||||
@ -49,24 +55,16 @@ RSpec.describe RateLimiter do
|
||||
limiter.performed!
|
||||
freeze_time 29.seconds.from_now
|
||||
|
||||
expect do
|
||||
limiter.performed!
|
||||
end.to raise_error(RateLimiter::LimitExceeded)
|
||||
expect do limiter.performed! end.to raise_error(RateLimiter::LimitExceeded)
|
||||
|
||||
expect do
|
||||
limiter.performed!
|
||||
end.to raise_error(RateLimiter::LimitExceeded)
|
||||
expect do limiter.performed! end.to raise_error(RateLimiter::LimitExceeded)
|
||||
|
||||
# in aggressive mode both these ^^^ count as an attempt
|
||||
freeze_time 29.seconds.from_now
|
||||
|
||||
expect do
|
||||
limiter.performed!
|
||||
end.to raise_error(RateLimiter::LimitExceeded)
|
||||
expect do limiter.performed! end.to raise_error(RateLimiter::LimitExceeded)
|
||||
|
||||
expect do
|
||||
limiter.performed!
|
||||
end.to raise_error(RateLimiter::LimitExceeded)
|
||||
expect do limiter.performed! end.to raise_error(RateLimiter::LimitExceeded)
|
||||
|
||||
freeze_time 30.seconds.from_now
|
||||
|
||||
@ -75,8 +73,8 @@ RSpec.describe RateLimiter do
|
||||
end
|
||||
end
|
||||
|
||||
context 'with global rate limiter' do
|
||||
it 'can operate in global mode' do
|
||||
context "with global rate limiter" do
|
||||
it "can operate in global mode" do
|
||||
limiter = RateLimiter.new(nil, "test", 2, 30, global: true)
|
||||
limiter.clear!
|
||||
|
||||
@ -96,22 +94,20 @@ RSpec.describe RateLimiter do
|
||||
end
|
||||
end
|
||||
|
||||
context 'when handling readonly' do
|
||||
context "when handling readonly" do
|
||||
before do
|
||||
# random IP address in the ULA range that does not exist
|
||||
Discourse.redis.without_namespace.slaveof 'fdec:3f5d:d0b7:4c4b:472b:636a:4370:7ac5', '49999'
|
||||
Discourse.redis.without_namespace.slaveof "fdec:3f5d:d0b7:4c4b:472b:636a:4370:7ac5", "49999"
|
||||
end
|
||||
|
||||
after do
|
||||
Discourse.redis.without_namespace.slaveof 'no', 'one'
|
||||
end
|
||||
after { Discourse.redis.without_namespace.slaveof "no", "one" }
|
||||
|
||||
it 'does not explode' do
|
||||
it "does not explode" do
|
||||
expect { rate_limiter.performed! }.not_to raise_error
|
||||
end
|
||||
end
|
||||
|
||||
context 'when never done' do
|
||||
context "when never done" do
|
||||
it "should perform right away" do
|
||||
expect(rate_limiter.can_perform?).to eq(true)
|
||||
end
|
||||
@ -131,12 +127,12 @@ RSpec.describe RateLimiter do
|
||||
end
|
||||
end
|
||||
|
||||
context 'when max is less than or equal to zero' do
|
||||
it 'should raise the right error' do
|
||||
context "when max is less than or equal to zero" do
|
||||
it "should raise the right error" do
|
||||
[-1, 0, nil].each do |max|
|
||||
expect do
|
||||
RateLimiter.new(user, "a", max, 60).performed!
|
||||
end.to raise_error(RateLimiter::LimitExceeded)
|
||||
expect do RateLimiter.new(user, "a", max, 60).performed! end.to raise_error(
|
||||
RateLimiter::LimitExceeded,
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -160,7 +156,7 @@ RSpec.describe RateLimiter do
|
||||
end
|
||||
end
|
||||
|
||||
it 'raises no error when the sliding window ended' do
|
||||
it "raises no error when the sliding window ended" do
|
||||
freeze_time 60.seconds.from_now
|
||||
expect { rate_limiter.performed! }.not_to raise_error
|
||||
end
|
||||
@ -217,9 +213,7 @@ RSpec.describe RateLimiter do
|
||||
end
|
||||
|
||||
describe "#rollback!" do
|
||||
before do
|
||||
rate_limiter.rollback!
|
||||
end
|
||||
before { rate_limiter.rollback! }
|
||||
|
||||
it "returns true for can_perform since there is now room" do
|
||||
expect(rate_limiter.can_perform?).to eq(true)
|
||||
|
Reference in New Issue
Block a user