From 29f7aa19ac3e6c3f8bf2eb93c13f94d301da78f6 Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Mon, 22 Mar 2021 15:21:53 +0500 Subject: [PATCH] Make sure what expired domain emails will not be sent to non-valid addreses --- app/mailers/domain_expire_mailer.rb | 9 ++++++-- app/presenters/domain_presenter.rb | 2 +- lib/validators/email_validator.rb | 15 -------------- test/mailers/domain_expire_mailer_test.rb | 25 +++++++++++++++++++++++ 4 files changed, 33 insertions(+), 18 deletions(-) delete mode 100644 lib/validators/email_validator.rb diff --git a/app/mailers/domain_expire_mailer.rb b/app/mailers/domain_expire_mailer.rb index 229120825..958e8c1c1 100644 --- a/app/mailers/domain_expire_mailer.rb +++ b/app/mailers/domain_expire_mailer.rb @@ -43,8 +43,11 @@ class DomainExpireMailer < ApplicationMailer # Needed because there are invalid emails in the database, which have been imported from legacy app def filter_invalid_emails(emails:, domain:) - emails.select do |email| - valid = EmailValidator.new(email).valid? + old_validation_type = Truemail.configure.default_validation_type + Truemail.configure.default_validation_type = :regex + + results = emails.select do |email| + valid = Truemail.valid?(email) unless valid logger.info("Unable to send DomainExpireMailer#expired email for domain #{domain.name} (##{domain.id})" \ @@ -53,5 +56,7 @@ class DomainExpireMailer < ApplicationMailer valid end + Truemail.configure.default_validation_type = old_validation_type + results end end diff --git a/app/presenters/domain_presenter.rb b/app/presenters/domain_presenter.rb index bcbd5d600..6ded9a30b 100644 --- a/app/presenters/domain_presenter.rb +++ b/app/presenters/domain_presenter.rb @@ -1,5 +1,5 @@ class DomainPresenter - delegate :name, :transfer_code, :registrant, :registrant_id, to: :domain + delegate :name, :transfer_code, :registrant, :registrant_id, :id, to: :domain def initialize(domain:, view:) @domain = domain diff --git a/lib/validators/email_validator.rb b/lib/validators/email_validator.rb deleted file mode 100644 index 60b1b3ce1..000000000 --- a/lib/validators/email_validator.rb +++ /dev/null @@ -1,15 +0,0 @@ -class EmailValidator - def self.regexp - Devise::email_regexp - end - - def initialize(email) - @email = email - end - - def valid? - email =~ self.class.regexp - end - - attr_reader :email -end diff --git a/test/mailers/domain_expire_mailer_test.rb b/test/mailers/domain_expire_mailer_test.rb index 84e520b78..c36c3d80e 100644 --- a/test/mailers/domain_expire_mailer_test.rb +++ b/test/mailers/domain_expire_mailer_test.rb @@ -22,4 +22,29 @@ class DomainExpireMailerTest < ActionMailer::TestCase assert_equal I18n.t("domain_expire_mailer.expired_soft.subject", domain_name: domain.name), email.subject end + + def test_delivers_domain_expiration_soft_email_if_auto_fd + domain = domains(:shop) + assert_not domain.force_delete_scheduled? + travel_to Time.zone.parse('2010-07-05') + email = 'some@strangesentence@internet.ee' + + Truemail.configure.default_validation_type = :regex + + contact = domain.admin_contacts.first + contact.update_attribute(:email, email) + contact.email_verification.verify + + assert contact.email_verification_failed? + + domain.reload + + assert domain.force_delete_scheduled? + + email = DomainExpireMailer.expired_soft(domain: domain, registrar: domain.registrar).deliver_now + + assert_emails 1 + assert_equal I18n.t("domain_expire_mailer.expired_soft.subject", domain_name: domain.name), + email.subject + end end