Add Sidetiq webview to the Sidekiq monitoring panel Add rake task maintenance:queue_users_for_removal This basically just triggers an immediate run of the normal maintenance remove old users functionality that is normally (if enabled) scheduled to run once a day via sidetiq Add extra safety when checking for user removal due to inactivity. Now also user.last_seen will also be checked to make sure a user will not be removed in the event that the Devise rememember me login functionality has stopped the users remove_after timestamp from being removed. Add initializer for maintenance job. Add warning about mail being disabled if remove_old_users maintenance is enabled.
52 lines
2 KiB
Ruby
52 lines
2 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe Workers::RemoveOldUser do
|
|
describe 'remove_old_users is active' do
|
|
before do
|
|
AppConfig.settings.maintenance.remove_old_users.enable = true
|
|
end
|
|
|
|
it '#removes user whose remove_after timestamp has passed' do
|
|
user = double(id: 1, remove_after: 1.day.ago, last_seen: 1000.days.ago)
|
|
allow(User).to receive(:find).with(user.id).and_return(user)
|
|
expect(user).to receive(:close_account!)
|
|
Workers::RemoveOldUser.new.perform(user.id)
|
|
end
|
|
|
|
it '#doesnt remove user whose remove_after timestamp hasnt passed' do
|
|
user = double(id: 1, remove_after: 1.day.from_now, last_seen: 1000.days.ago)
|
|
allow(User).to receive(:find).with(user.id).and_return(user)
|
|
expect(user).to_not receive(:close_account!)
|
|
Workers::RemoveOldUser.new.perform(user.id)
|
|
end
|
|
|
|
it '#doesnt remove user whose remove_after timestamp has passed but last_seen is recent' do
|
|
user = double(id: 1, remove_after: 1.day.ago, last_seen: 1.day.ago)
|
|
allow(User).to receive(:find).with(user.id).and_return(user)
|
|
expect(user).to_not receive(:close_account!)
|
|
Workers::RemoveOldUser.new.perform(user.id)
|
|
end
|
|
|
|
end
|
|
|
|
describe 'remove_old_users is inactive' do
|
|
before do
|
|
AppConfig.settings.maintenance.remove_old_users.enable = false
|
|
end
|
|
|
|
it '#doesnt remove user whose remove_after timestamp has passed' do
|
|
user = double(id: 1, remove_after: 1.day.ago, last_seen: 1000.days.ago)
|
|
allow(User).to receive(:find).with(user.id).and_return(user)
|
|
expect(user).to_not receive(:close_account!)
|
|
Workers::RemoveOldUser.new.perform(user.id)
|
|
end
|
|
|
|
it '#doesnt remove user whose remove_after timestamp hasnt passed' do
|
|
user = double(id: 1, remove_after: 1.day.from_now, last_seen: 1000.days.ago)
|
|
allow(User).to receive(:find).with(user.id).and_return(user)
|
|
expect(user).to_not receive(:close_account!)
|
|
Workers::RemoveOldUser.new.perform(user.id)
|
|
end
|
|
|
|
end
|
|
end
|