change_token_expiration_handling_spec.rb 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. # Copyright (C) 2012-2025 Zammad Foundation, https://zammad-foundation.org/
  2. require 'rails_helper'
  3. RSpec.describe ChangeTokenExpirationHandling, db_strategy: :reset, type: :db_migration do
  4. before do
  5. change_column :tokens, :expires_at, :date, null: true
  6. Token.reset_column_information
  7. end
  8. describe 'updating scheduler job' do
  9. let(:scheduler_job) { Scheduler.find_by(method: 'Token.cleanup') }
  10. before do
  11. scheduler_job.update! period: 30.days
  12. end
  13. it 'changes token cleanup period to 1 day' do
  14. expect { migrate }
  15. .to change { scheduler_job.reload.period }
  16. .to 1.day
  17. end
  18. end
  19. describe 'migrating expiration date column' do
  20. let(:token) { create(:token, expires_at:) }
  21. around do |example|
  22. tz = Setting.get('timezone_default')
  23. Setting.set('timezone_default', 'Asia/Tokyo')
  24. example.run
  25. Setting.set('timezone_default', tz)
  26. end
  27. context 'when token has expiration date' do
  28. let(:expires_at) { '2020-02-02'.to_date }
  29. it 'changes existing expiration dates to beginning-of-the-day' do
  30. expect { migrate }
  31. .to change { token.reload.expires_at }
  32. .to Time.zone.parse('2020-02-01 15:00')
  33. end
  34. end
  35. context 'when token has no expiration date' do
  36. let(:expires_at) { nil }
  37. it 'keeps token without expiration date' do
  38. expect { migrate }
  39. .not_to change { token.reload.expires_at }
  40. end
  41. end
  42. end
  43. end