mirror of
https://github.com/discourse/discourse.git
synced 2025-06-04 20:24:47 +08:00
FEATURE: Increase daily edit limits proportionally to trust level (#13090)
This commit is contained in:

committed by
GitHub

parent
98736e15f0
commit
3e0f72f57f
@ -485,10 +485,58 @@ describe PostRevisor do
|
||||
describe 'rate limiter' do
|
||||
fab!(:changed_by) { Fabricate(:coding_horror) }
|
||||
|
||||
before do
|
||||
RateLimiter.enable
|
||||
RateLimiter.clear_all!
|
||||
SiteSetting.editing_grace_period = 0
|
||||
end
|
||||
|
||||
it "triggers a rate limiter" do
|
||||
EditRateLimiter.any_instance.expects(:performed!)
|
||||
subject.revise!(changed_by, raw: 'updated body')
|
||||
end
|
||||
|
||||
it "raises error when a user gets rate limited" do
|
||||
SiteSetting.max_edits_per_day = 1
|
||||
user = Fabricate(:user, trust_level: 1)
|
||||
|
||||
subject.revise!(user, raw: 'body (edited)')
|
||||
|
||||
expect do
|
||||
subject.revise!(user, raw: 'body (edited twice) ')
|
||||
end.to raise_error(RateLimiter::LimitExceeded)
|
||||
end
|
||||
|
||||
it "edit limits scale up depending on user's trust level" do
|
||||
SiteSetting.max_edits_per_day = 1
|
||||
SiteSetting.tl2_additional_edits_per_day_multiplier = 2
|
||||
SiteSetting.tl3_additional_edits_per_day_multiplier = 3
|
||||
SiteSetting.tl4_additional_edits_per_day_multiplier = 4
|
||||
|
||||
user = Fabricate(:user, trust_level: 2)
|
||||
expect { subject.revise!(user, raw: 'body (edited)') }.to_not raise_error
|
||||
expect { subject.revise!(user, raw: 'body (edited twice)') }.to_not raise_error
|
||||
expect do
|
||||
subject.revise!(user, raw: 'body (edited three times) ')
|
||||
end.to raise_error(RateLimiter::LimitExceeded)
|
||||
|
||||
user = Fabricate(:user, trust_level: 3)
|
||||
expect { subject.revise!(user, raw: 'body (edited)') }.to_not raise_error
|
||||
expect { subject.revise!(user, raw: 'body (edited twice)') }.to_not raise_error
|
||||
expect { subject.revise!(user, raw: 'body (edited three times)') }.to_not raise_error
|
||||
expect do
|
||||
subject.revise!(user, raw: 'body (edited four times) ')
|
||||
end.to raise_error(RateLimiter::LimitExceeded)
|
||||
|
||||
user = Fabricate(:user, trust_level: 4)
|
||||
expect { subject.revise!(user, raw: 'body (edited)') }.to_not raise_error
|
||||
expect { subject.revise!(user, raw: 'body (edited twice)') }.to_not raise_error
|
||||
expect { subject.revise!(user, raw: 'body (edited three times)') }.to_not raise_error
|
||||
expect { subject.revise!(user, raw: 'body (edited four times)') }.to_not raise_error
|
||||
expect do
|
||||
subject.revise!(user, raw: 'body (edited five times) ')
|
||||
end.to raise_error(RateLimiter::LimitExceeded)
|
||||
end
|
||||
end
|
||||
|
||||
describe "admin editing a new user's post" do
|
||||
|
Reference in New Issue
Block a user