issue_2401_convert_user_login_email_to_unicode_spec.rb 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
  2. require 'rails_helper'
  3. RSpec.describe Issue2401ConvertUserLoginEmailToUnicode, db_strategy: :reset, type: :db_migration do
  4. describe 'when user login/email has punycode formatted domain' do
  5. def create_user
  6. now = DateTime.now.strftime('%Y-%m-%d %H:%M:%S.000')
  7. ActiveRecord::Base.connection.execute(
  8. <<~SQL.squish
  9. INSERT INTO users (login, email, updated_by_id, created_by_id, created_at, updated_at)
  10. VALUES ('john.doe@xn--cme-pla.corp', 'john.doe@xn--cme-pla.corp', 1, 1, '#{now}', '#{now}')
  11. SQL
  12. )
  13. User.find_by(login: 'john.doe@xn--cme-pla.corp')
  14. end
  15. it 'converts login/email' do
  16. user = create_user
  17. expect { migrate }.to change { user.reload.login }
  18. .and change { user.reload.email }
  19. end
  20. it 'allows to lookup user with converted login/email' do
  21. create_user
  22. migrate
  23. expect(User).to exist(login: 'john.doe@äcme.corp')
  24. .and(exist(email: 'john.doe@äcme.corp'))
  25. end
  26. end
  27. describe 'when user login/email has unicode formatted domain' do
  28. let!(:user) { create(:user, login: 'john.doe@äcme.corp', email: 'john.doe@äcme.corp') }
  29. it 'does not convert login/email', :aggregate_failures do
  30. expect { migrate }.not_to change { user.reload.login }
  31. expect { migrate }.not_to change { user.reload.email }
  32. expect { migrate }.not_to change { user.reload.updated_at }
  33. end
  34. it 'still allows to lookup user with origin login/email', :aggregate_failures do
  35. migrate
  36. expect(User).to exist(login: 'john.doe@äcme.corp')
  37. .and(exist(email: 'john.doe@äcme.corp'))
  38. end
  39. end
  40. end