tech(expires-user.cron): ajoute une tache cron [débrayable] pour faire tourner la tache de suppression des usagers inutile

attention, pour notre instance, avec ma db anonymiser :
```
ExpiredUsersDeletionService.find_expired_user.pluck(:id).size
=> 1795515
```
This commit is contained in:
Martin 2023-11-03 09:22:03 +01:00 committed by mfo
parent a49a5c2c93
commit 252b3e4719
3 changed files with 31 additions and 1 deletions

View file

@ -0,0 +1,8 @@
class Cron::ExpiredUsersDeletionJob < Cron::CronJob
self.schedule_expression = "every day at 11 pm"
def perform(*args)
return if ENV['EXPIRE_USER_DELETION_JOB_DISABLED'].present?
ExpiredUsersDeletionService.process_expired
end
end

View file

@ -229,7 +229,7 @@ REDIS_CACHE_URL=""
REDIS_CACHE_SSL="enabled"
REDIS_CACHE_SSL_VERIFY_NONE="enabled"
# configuration for sidekiq's redis
# configuration for sidekiq's redis
# simple mode
# that's all you need to do to conf your sidekiq on a local redis
REDIS_URL="redis://localhost:6379"
@ -253,3 +253,6 @@ BULK_EMAIL_QUEUE="low_priority"
# work in progress about attestation_v2
WEASYPRINT_URL="http://10.33.23.204:5000/pdf"
# Use this env var to disable the user expiration mechanism
EXPIRE_USER_DELETION_JOB_DISABLED=anything

View file

@ -0,0 +1,19 @@
describe Cron::ExpiredUsersDeletionJob do
subject { described_class.perform_now }
context 'when env[EXPIRE_USER_DELETION_JOB_DISABLED] is present' do
before { expect(ENV).to receive(:[]).with('EXPIRE_USER_DELETION_JOB_DISABLED').and_return('anything') }
it 'does not call ExpiredUsersDeletionService.process_expired' do
expect(ExpiredUsersDeletionService).not_to receive(:process_expired)
subject
end
end
context 'when env[EXPIRE_USER_DELETION_JOB_DISABLED] is absent' do
it 'calls ExpiredUsersDeletionService.process_expired' do
expect(ExpiredUsersDeletionService).to receive(:process_expired)
subject
end
end
end