Merge pull request #3838 from evazion/fix-3837
Fix #3837: Remove expired bans.
This commit is contained in:
@@ -18,5 +18,6 @@ class DailyMaintenance
|
|||||||
TokenBucket.prune!
|
TokenBucket.prune!
|
||||||
TagChangeRequestPruner.warn_all
|
TagChangeRequestPruner.warn_all
|
||||||
TagChangeRequestPruner.reject_all
|
TagChangeRequestPruner.reject_all
|
||||||
|
Ban.prune!
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -59,6 +59,12 @@ class Ban < ApplicationRecord
|
|||||||
q
|
q
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.prune!
|
||||||
|
expired.includes(:user).find_each do |ban|
|
||||||
|
ban.user.unban! if ban.user.ban_expired?
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def initialize_banner_id
|
def initialize_banner_id
|
||||||
self.banner_id = CurrentUser.id if self.banner_id.blank?
|
self.banner_id = CurrentUser.id if self.banner_id.blank?
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -29,5 +29,18 @@ class DailyMaintenanceTest < ActiveSupport::TestCase
|
|||||||
assert(true, @pending.reload.is_deleted)
|
assert(true, @pending.reload.is_deleted)
|
||||||
assert(true, @flagged.reload.is_deleted)
|
assert(true, @flagged.reload.is_deleted)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "when pruning bans" do
|
||||||
|
should "clear the is_banned flag for users who are no longer banned" do
|
||||||
|
banner = FactoryBot.create(:admin_user)
|
||||||
|
user = FactoryBot.create(:user)
|
||||||
|
|
||||||
|
CurrentUser.as(banner) { FactoryBot.create(:ban, user: user, banner: banner, duration: 1) }
|
||||||
|
|
||||||
|
assert_equal(true, user.reload.is_banned)
|
||||||
|
travel_to(2.days.from_now) { DailyMaintenance.new.run }
|
||||||
|
assert_equal(false, user.reload.is_banned)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user