From 70a6a44525e41e0b25905e13b44d696c0406cca1 Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Tue, 6 Jul 2021 14:45:11 +0500 Subject: [PATCH] Fix deprecated email_notification usage in tests --- app/interactions/actions/email_check.rb | 3 +- app/models/email_address_verification.rb | 36 ------------ app/models/validation_event.rb | 4 +- config/initializers/libs.rb | 1 - lib/email_address_converter.rb | 31 ---------- lib/tasks/verify_email.rake | 2 +- test/mailers/domain_expire_mailer_test.rb | 4 +- test/models/contact_test.rb | 28 --------- test/models/domain/force_delete_test.rb | 3 +- test/models/registrar_test.rb | 57 ------------------- test/models/validation_event_test.rb | 2 +- .../admin_area/domains/force_delete_test.rb | 8 ++- 12 files changed, 15 insertions(+), 164 deletions(-) delete mode 100644 app/models/email_address_verification.rb delete mode 100644 lib/email_address_converter.rb diff --git a/app/interactions/actions/email_check.rb b/app/interactions/actions/email_check.rb index bfd721d96..d336f314a 100644 --- a/app/interactions/actions/email_check.rb +++ b/app/interactions/actions/email_check.rb @@ -9,8 +9,7 @@ module Actions end def call - parsed_email = EmailAddressConverter.punycode_to_unicode(email) - result = check_email(parsed_email) + result = check_email(email) save_result(result) result.success ? log_success : log_failure(result) result.success diff --git a/app/models/email_address_verification.rb b/app/models/email_address_verification.rb deleted file mode 100644 index d962216f2..000000000 --- a/app/models/email_address_verification.rb +++ /dev/null @@ -1,36 +0,0 @@ -class EmailAddressVerification < ApplicationRecord - RECENTLY_VERIFIED_PERIOD = 1.month - # after_save :check_force_delete - - def failed? - bounce_present? || (verified_at.present? && !success) - end - - def verified? - success - end - - def bounce_present? - BouncedMailAddress.find_by(email: email).present? - end - - def check_force_delete - return unless failed? - - Domains::ForceDeleteEmail::Base.run(email: email) - end - - def verify - validation_request = Truemail.validate(email) - - if validation_request.result.success - update(verified_at: Time.zone.now, - success: true) - else - update(verified_at: Time.zone.now, - success: false) - end - - validation_request.result - end -end diff --git a/app/models/validation_event.rb b/app/models/validation_event.rb index 9237e12ab..aff5582bc 100644 --- a/app/models/validation_event.rb +++ b/app/models/validation_event.rb @@ -6,7 +6,7 @@ # For email_validation event kind also check_level (regex/mx/smtp) is stored in the event_data class ValidationEvent < ApplicationRecord enum event_type: ValidationEvent::EventType::TYPES, _suffix: true - VALIDATION_PERIOD = 1.month.ago.freeze + VALIDATION_PERIOD = 1.month.freeze VALID_CHECK_LEVELS = %w[regex mx smtp].freeze VALID_EVENTS_COUNT_THRESHOLD = 5 @@ -26,7 +26,7 @@ class ValidationEvent < ApplicationRecord belongs_to :validation_eventable, polymorphic: true - scope :recent, -> { where('created_at > ?', VALIDATION_PERIOD) } + scope :recent, -> { where('created_at > ?', Time.zone.now - VALIDATION_PERIOD) } scope :successful, -> { where(success: true) } scope :failed, -> { where(success: false) } scope :regex, -> { where('event_data @> ?', { 'check_level': 'regex' }.to_json) } diff --git a/config/initializers/libs.rb b/config/initializers/libs.rb index c140f21ba..12a8af78a 100644 --- a/config/initializers/libs.rb +++ b/config/initializers/libs.rb @@ -1,3 +1,2 @@ require 'application_service' -require 'email_address_converter' require 'xsd/schema' diff --git a/lib/email_address_converter.rb b/lib/email_address_converter.rb deleted file mode 100644 index b578a061b..000000000 --- a/lib/email_address_converter.rb +++ /dev/null @@ -1,31 +0,0 @@ -module EmailAddressConverter - module_function - - def punycode_to_unicode(email) - return email if domain(email) == 'not_found' - - local = local(email) - domain = SimpleIDN.to_unicode(domain(email)) - "#{local}@#{domain}"&.downcase - end - - def unicode_to_punycode(email) - return email if domain(email) == 'not_found' - - local = local(email) - domain = SimpleIDN.to_ascii(domain(email)) - "#{local}@#{domain}"&.downcase - end - - def domain(email) - Mail::Address.new(email).domain&.downcase || 'not_found' - rescue Mail::Field::IncompleteParseError - 'not_found' - end - - def local(email) - Mail::Address.new(email).local&.downcase || email - rescue Mail::Field::IncompleteParseError - email - end -end diff --git a/lib/tasks/verify_email.rake b/lib/tasks/verify_email.rake index 00cd6ef4b..92a4de97f 100644 --- a/lib/tasks/verify_email.rake +++ b/lib/tasks/verify_email.rake @@ -3,7 +3,7 @@ require 'rake_option_parser_boilerplate' require 'syslog/logger' namespace :verify_email do - # bundle exec rake verify_email:check_all -- -d=shop.test --check_level=mx --spam_protect=true + # bundle exec rake verify_email:check_all -- --domain_name=shop.test --check_level=mx --spam_protect=true # bundle exec rake verify_email:check_all -- -dshop.test -cmx -strue desc 'Starts verifying email jobs with optional check level and spam protection' task check_all: :environment do diff --git a/test/mailers/domain_expire_mailer_test.rb b/test/mailers/domain_expire_mailer_test.rb index 729dd523d..febe089c2 100644 --- a/test/mailers/domain_expire_mailer_test.rb +++ b/test/mailers/domain_expire_mailer_test.rb @@ -40,9 +40,9 @@ class DomainExpireMailerTest < ActionMailer::TestCase contact = domain.admin_contacts.first contact.update_attribute(:email, email) - # contact.email_verification.verify + contact.verify_email - # assert contact.email_verification_failed? + assert contact.email_verification_failed? domain.reload diff --git a/test/models/contact_test.rb b/test/models/contact_test.rb index 69f17da15..bd4e1c0c1 100644 --- a/test/models/contact_test.rb +++ b/test/models/contact_test.rb @@ -87,24 +87,6 @@ class ContactTest < ActiveJob::TestCase assert contact.valid? end - def test_email_verification_smtp_error - Truemail.configure.default_validation_type = :smtp - - contact = valid_contact - contact.email = 'somecrude1337joke@internet.ee' - assert contact.invalid? - assert_equal I18n.t('activerecord.errors.models.contact.attributes.email.email_smtp_check_error'), contact.errors.messages[:email].first - end - - def test_email_verification_mx_error - Truemail.configure.default_validation_type = :mx - - contact = valid_contact - contact.email = 'somecrude31337joke@somestrange31337domain.ee' - assert contact.invalid? - assert_equal I18n.t('activerecord.errors.models.contact.attributes.email.email_mx_check_error'), contact.errors.messages[:email].first - end - def test_email_verification_regex_error Truemail.configure.default_validation_type = :regex @@ -358,16 +340,6 @@ class ContactTest < ActiveJob::TestCase assert_equal domain.whois_record.try(:json).try(:[], 'registrant'), @contact.name end - def test_creates_email_verification_in_unicode - unicode_email = 'suur@äri.ee' - punycode_email = Contact.unicode_to_punycode(unicode_email) - - @contact.email = punycode_email - @contact.save - - assert_equal @contact.email_verification.email, unicode_email - end - private def make_contact_free_of_domains_where_it_acts_as_a_registrant(contact) diff --git a/test/models/domain/force_delete_test.rb b/test/models/domain/force_delete_test.rb index 046fbaecb..184c606ef 100644 --- a/test/models/domain/force_delete_test.rb +++ b/test/models/domain/force_delete_test.rb @@ -6,6 +6,7 @@ class ForceDeleteTest < ActionMailer::TestCase Setting.redemption_grace_period = 30 ActionMailer::Base.deliveries.clear @old_validation_type = Truemail.configure.default_validation_type + ValidationEvent.destroy_all end teardown do @@ -441,9 +442,9 @@ class ForceDeleteTest < ActionMailer::TestCase end def test_lifts_force_delete_if_contact_fixed + travel_to Time.zone.parse('2010-07-05') @domain.update(valid_to: Time.zone.parse('2012-08-05')) assert_not @domain.force_delete_scheduled? - travel_to Time.zone.parse('2010-07-05') email = '`@internet.ee' Truemail.configure.default_validation_type = :regex diff --git a/test/models/registrar_test.rb b/test/models/registrar_test.rb index 6c49b9099..a6b818d35 100644 --- a/test/models/registrar_test.rb +++ b/test/models/registrar_test.rb @@ -48,28 +48,6 @@ class RegistrarTest < ActiveJob::TestCase assert registrar.valid? end - def test_email_verification_smtp_error - Truemail.configure.default_validation_type = :smtp - - registrar = valid_registrar - registrar.email = 'somecrude1337joke@internet.ee' - registrar.billing_email = nil - - assert registrar.invalid? - assert_equal I18n.t('activerecord.errors.models.contact.attributes.email.email_smtp_check_error'), registrar.errors.messages[:email].first - end - - def test_email_verification_mx_error - Truemail.configure.default_validation_type = :mx - - registrar = valid_registrar - registrar.email = 'somecrude31337joke@somestrange31337domain.ee' - registrar.billing_email = nil - - assert registrar.invalid? - assert_equal I18n.t('activerecord.errors.models.contact.attributes.email.email_mx_check_error'), registrar.errors.messages[:email].first - end - def test_email_verification_regex_error Truemail.configure.default_validation_type = :regex @@ -88,26 +66,6 @@ class RegistrarTest < ActiveJob::TestCase assert registrar.valid? end - def test_billing_email_verification_smtp_error - Truemail.configure.default_validation_type = :smtp - - registrar = valid_registrar - registrar.billing_email = 'somecrude1337joke@internet.ee' - - assert registrar.invalid? - assert_equal I18n.t('activerecord.errors.models.contact.attributes.email.email_smtp_check_error'), registrar.errors.messages[:billing_email].first - end - - def test_billing_email_verification_mx_error - Truemail.configure.default_validation_type = :mx - - registrar = valid_registrar - registrar.billing_email = 'somecrude31337joke@somestrange31337domain.ee' - - assert registrar.invalid? - assert_equal I18n.t('activerecord.errors.models.contact.attributes.email.email_mx_check_error'), registrar.errors.messages[:billing_email].first - end - def test_billing_email_verification_regex_error Truemail.configure.default_validation_type = :regex @@ -118,21 +76,6 @@ class RegistrarTest < ActiveJob::TestCase assert_equal I18n.t('activerecord.errors.models.contact.attributes.email.email_regex_check_error'), registrar.errors.messages[:billing_email].first end - def test_creates_email_verification_in_unicode - unicode_email = 'suur@äri.ee' - punycode_email = Registrar.unicode_to_punycode(unicode_email) - unicode_billing_email = 'billing@äri.ee' - punycode_billing_email = Registrar.unicode_to_punycode(unicode_billing_email) - - registrar = valid_registrar - registrar.email = punycode_email - registrar.billing_email = punycode_billing_email - registrar.save - - assert_equal registrar.email_verification.email, unicode_email - assert_equal registrar.billing_email_verification.email, unicode_billing_email - end - def test_invalid_without_accounting_customer_code registrar = valid_registrar registrar.accounting_customer_code = '' diff --git a/test/models/validation_event_test.rb b/test/models/validation_event_test.rb index ccee49c81..722a35340 100644 --- a/test/models/validation_event_test.rb +++ b/test/models/validation_event_test.rb @@ -16,7 +16,7 @@ class ValidationEventTest < ActiveSupport::TestCase @domain.update(valid_to: Time.zone.parse('2012-08-05')) assert_not @domain.force_delete_scheduled? travel_to Time.zone.parse('2010-07-05') - email = 'some@strangesentence@internet.ee' + email = '~@internet.ee' contact = @domain.admin_contacts.first contact.update_attribute(:email, email) diff --git a/test/system/admin_area/domains/force_delete_test.rb b/test/system/admin_area/domains/force_delete_test.rb index e17695fcc..3ddd0b267 100644 --- a/test/system/admin_area/domains/force_delete_test.rb +++ b/test/system/admin_area/domains/force_delete_test.rb @@ -61,8 +61,12 @@ class AdminAreaDomainForceDeleteTest < ApplicationSystemTestCase end def test_uses_legal_template_if_invalid_email - verification = @domain.contacts.first.email_verification - verification.update(verified_at: Time.zone.now - 1.day, success: false) + contact = @domain.contacts.first + contact.update(email: '`@domain.com`') + action = Actions::EmailCheck.new(email: contact.email, validation_eventable: contact) + action.call + + @domain.reload assert_equal @domain.notification_template, 'invalid_email'