From 719c46c9c2d3772eadd0a943088cef690710ba12 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Fri, 12 Apr 2019 15:03:55 +0300 Subject: [PATCH] Refactor domain mailer - Remove `Que::Mailer` (#895) - Add preview - DRY templates - Add tests - Extract translations --- app/jobs/domain_delete_confirm_email_job.rb | 6 +-- app/jobs/domain_delete_confirm_job.rb | 8 +++- app/mailers/domain_delete_mailer.rb | 23 +++++++++- app/mailers/domain_mailer.rb | 45 ------------------- app/models/domain.rb | 2 +- app/models/domain_cron.rb | 2 +- app/models/epp/domain.rb | 4 +- .../accepted.html.erb} | 9 +--- .../accepted.text.erb} | 7 +-- ...html.erb => confirmation_request.html.erb} | 0 ...text.erb => confirmation_request.text.erb} | 0 .../expired.html.erb} | 9 +--- .../expired.text.erb} | 7 +-- .../rejected.html.erb} | 9 +--- .../rejected.text.erb} | 7 +-- config/locales/en.yml | 3 -- config/locales/mailers/domain_delete.en.yml | 14 +++++- .../epp/domain/delete/base_test.rb | 36 +++++++++++++++ .../domain_delete_confirmations.rb | 30 +++++++++++++ test/mailers/domain_delete_mailer_test.rb | 44 ++++++++++++++++-- .../previews/domain_delete_mailer_preview.rb | 33 ++++++++++---- test/models/domain_cron_test.rb | 21 +++++++++ 22 files changed, 211 insertions(+), 108 deletions(-) delete mode 100644 app/mailers/domain_mailer.rb rename app/views/mailers/{domain_mailer/delete_confirmation.html.erb => domain_delete_mailer/accepted.html.erb} (72%) rename app/views/mailers/{domain_mailer/delete_confirmation.text.erb => domain_delete_mailer/accepted.text.erb} (73%) rename app/views/mailers/domain_delete_mailer/{confirmation.html.erb => confirmation_request.html.erb} (100%) rename app/views/mailers/domain_delete_mailer/{confirmation.text.erb => confirmation_request.text.erb} (100%) rename app/views/mailers/{domain_mailer/pending_delete_expired_notification.html.erb => domain_delete_mailer/expired.html.erb} (77%) rename app/views/mailers/{domain_mailer/pending_delete_expired_notification.text.erb => domain_delete_mailer/expired.text.erb} (78%) rename app/views/mailers/{domain_mailer/pending_delete_rejected_notification.html.erb => domain_delete_mailer/rejected.html.erb} (68%) rename app/views/mailers/{domain_mailer/pending_delete_rejected_notification.text.erb => domain_delete_mailer/rejected.text.erb} (69%) create mode 100644 test/integration/epp/domain/delete/base_test.rb create mode 100644 test/integration/registrant_area/domain_delete_confirmations.rb create mode 100644 test/models/domain_cron_test.rb diff --git a/app/jobs/domain_delete_confirm_email_job.rb b/app/jobs/domain_delete_confirm_email_job.rb index fafe143e1c..ea5a9bf490 100644 --- a/app/jobs/domain_delete_confirm_email_job.rb +++ b/app/jobs/domain_delete_confirm_email_job.rb @@ -3,9 +3,9 @@ def run(domain_id) domain = Domain.find(domain_id) log(domain) - DomainDeleteMailer.confirmation(domain: domain, - registrar: domain.registrar, - registrant: domain.registrant).deliver_now + DomainDeleteMailer.confirmation_request(domain: domain, + registrar: domain.registrar, + registrant: domain.registrant).deliver_now end private diff --git a/app/jobs/domain_delete_confirm_job.rb b/app/jobs/domain_delete_confirm_job.rb index 28a46dbbe4..a067ce1756 100644 --- a/app/jobs/domain_delete_confirm_job.rb +++ b/app/jobs/domain_delete_confirm_job.rb @@ -19,7 +19,13 @@ def run(domain_id, action, initiator = nil) domain.save(validate: false) raise_errors!(domain) - DomainMailer.pending_delete_rejected_notification(domain_id, true).deliver + if domain.registrant_verification_token.blank? + Rails.logger.warn "EMAIL NOT DELIVERED: registrant_verification_token is missing for #{domain.name}" + elsif domain.registrant_verification_asked_at.blank? + Rails.logger.warn "EMAIL NOT DELIVERED: registrant_verification_asked_at is missing for #{domain.name}" + else + DomainDeleteMailer.rejected(domain).deliver_now + end end destroy # it's best to destroy the job in the same transaction diff --git a/app/mailers/domain_delete_mailer.rb b/app/mailers/domain_delete_mailer.rb index 46ad963fb3..8c63de39e6 100644 --- a/app/mailers/domain_delete_mailer.rb +++ b/app/mailers/domain_delete_mailer.rb @@ -3,7 +3,7 @@ def self.force_delete_templates %w[private_person legal_person] end - def confirmation(domain:, registrar:, registrant:) + def confirmation_request(domain:, registrar:, registrant:) @domain = DomainPresenter.new(domain: domain, view: view_context) @registrar = RegistrarPresenter.new(registrar: registrar, view: view_context) @confirmation_url = confirmation_url(domain) @@ -12,6 +12,27 @@ def confirmation(domain:, registrar:, registrant:) mail(to: registrant.email, subject: subject) end + def accepted(domain) + @domain = domain + + subject = default_i18n_subject(domain: domain.name) + mail(to: domain.registrant.email, subject: subject) + end + + def rejected(domain) + @domain = domain + + subject = default_i18n_subject(domain: domain.name) + mail(to: domain.registrant.email, subject: subject) + end + + def expired(domain) + @domain = domain + + subject = default_i18n_subject(domain: domain.name) + mail(to: domain.registrant.email, subject: subject) + end + def forced(domain:, registrar:, registrant:, template_name:) @domain = DomainPresenter.new(domain: domain, view: view_context) @registrar = RegistrarPresenter.new(registrar: registrar, view: view_context) diff --git a/app/mailers/domain_mailer.rb b/app/mailers/domain_mailer.rb deleted file mode 100644 index 7b508df0c1..0000000000 --- a/app/mailers/domain_mailer.rb +++ /dev/null @@ -1,45 +0,0 @@ -class DomainMailer < ApplicationMailer - include Que::Mailer - - def pending_delete_rejected_notification(domain_id, should_deliver) - @domain = Domain.find_by(id: domain_id) - return unless @domain - return if delivery_off?(@domain, should_deliver) - # no delivery off control, driggered by que, no epp request - - if @domain.registrant_verification_token.blank? - logger.warn "EMAIL NOT DELIVERED: registrant_verification_token is missing for #{@domain.name}" - return - end - - if @domain.registrant_verification_asked_at.blank? - logger.warn "EMAIL NOT DELIVERED: registrant_verification_asked_at is missing for #{@domain.name}" - return - end - - mail(to: format(@domain.registrant.email), - subject: "#{I18n.t(:pending_delete_rejected_notification_subject, - name: @domain.name)} [#{@domain.name}]") - end - - def pending_delete_expired_notification(domain_id, should_deliver) - @domain = Domain.find_by(id: domain_id) - return unless @domain - return if delivery_off?(@domain, should_deliver) - # no delivery off control, driggered by cron, no epp request - - mail(to: format(@domain.registrant.email), - subject: "#{I18n.t(:pending_delete_expired_notification_subject, - name: @domain.name)} [#{@domain.name}]") - end - - def delete_confirmation(domain_id, should_deliver) - @domain = Domain.find_by(id: domain_id) - return unless @domain - return if delivery_off?(@domain, should_deliver) - - mail(to: format(@domain.registrant.email), - subject: "#{I18n.t(:delete_confirmation_subject, - name: @domain.name)} [#{@domain.name}]") - end -end \ No newline at end of file diff --git a/app/models/domain.rb b/app/models/domain.rb index 576ba479d8..e2d9d61729 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -167,7 +167,7 @@ def statuses_uniqueness errors.add(:statuses, :taken) end - attr_accessor :registrant_typeahead, :update_me, :deliver_emails, + attr_accessor :registrant_typeahead, :update_me, :epp_pending_update, :epp_pending_delete, :reserved_pw def subordinate_nameservers diff --git a/app/models/domain_cron.rb b/app/models/domain_cron.rb index 1414d4dc57..578538e17e 100644 --- a/app/models/domain_cron.rb +++ b/app/models/domain_cron.rb @@ -19,7 +19,7 @@ def self.clean_expired_pendings RegistrantChangeExpiredEmailJob.enqueue(domain.id) end if domain.pending_delete? || domain.pending_delete_confirmation? - DomainMailer.pending_delete_expired_notification(domain.id, true).deliver + DomainDeleteMailer.expired(domain).deliver_now end domain.preclean_pendings diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index bd9a1d4a3b..fcfbaf369e 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -483,8 +483,6 @@ def update(frame, current_user, verify = true) registrant_verification_asked!(frame.to_s, current_user.id) end - self.deliver_emails = true # turn on email delivery for epp - errors.empty? && super(at) end @@ -511,7 +509,7 @@ def apply_pending_delete! preclean_pendings statuses.delete(DomainStatus::PENDING_DELETE_CONFIRMATION) statuses.delete(DomainStatus::PENDING_DELETE) - DomainMailer.delete_confirmation(id, deliver_emails).deliver + DomainDeleteMailer.accepted(self).deliver_now clean_pendings! set_pending_delete! true diff --git a/app/views/mailers/domain_mailer/delete_confirmation.html.erb b/app/views/mailers/domain_delete_mailer/accepted.html.erb similarity index 72% rename from app/views/mailers/domain_mailer/delete_confirmation.html.erb rename to app/views/mailers/domain_delete_mailer/accepted.html.erb index 5a7cada60d..986f6352cd 100644 --- a/app/views/mailers/domain_mailer/delete_confirmation.html.erb +++ b/app/views/mailers/domain_delete_mailer/accepted.html.erb @@ -1,15 +1,10 @@ Tere

Domeeni <%= @domain.name %> kustutamise taotlus on registreerija poolt kinnitatud. Domeen <%= @domain.name %> on peatatud ja kustub registrist. -

-Lugupidamisega
-Eesti Interneti Sihtasutus -

+<%= render 'mailers/shared/signatures/signature.et.html' %>


Hi,

Domain <%= @domain.name %> deletion is confirmed by the registrant. Domain <%= @domain.name %> is suspended and will be deleted. -

-Best Regards,
-Estonian Internet Foundation +<%= render 'mailers/shared/signatures/signature.en.html' %> \ No newline at end of file diff --git a/app/views/mailers/domain_mailer/delete_confirmation.text.erb b/app/views/mailers/domain_delete_mailer/accepted.text.erb similarity index 73% rename from app/views/mailers/domain_mailer/delete_confirmation.text.erb rename to app/views/mailers/domain_delete_mailer/accepted.text.erb index 5d924eca73..aa6f33baf4 100644 --- a/app/views/mailers/domain_mailer/delete_confirmation.text.erb +++ b/app/views/mailers/domain_delete_mailer/accepted.text.erb @@ -2,14 +2,11 @@ Tere Domeeni <%= @domain.name %> kustutamise taotlus on registreerija poolt kinnitatud. Domeen <%= @domain.name %> on peatatud ja kustub registrist. -Lugupidamisega -Eesti Interneti Sihtasutus - +<%= render 'mailers/shared/signatures/signature.et.text' %> -------------------------------------- Hi, Domain <%= @domain.name %> deletion is confirmed by the registrant. Domain <%= @domain.name %> is suspended and will be deleted. -Best Regards, -Estonian Internet Foundation +<%= render 'mailers/shared/signatures/signature.en.text' %> \ No newline at end of file diff --git a/app/views/mailers/domain_delete_mailer/confirmation.html.erb b/app/views/mailers/domain_delete_mailer/confirmation_request.html.erb similarity index 100% rename from app/views/mailers/domain_delete_mailer/confirmation.html.erb rename to app/views/mailers/domain_delete_mailer/confirmation_request.html.erb diff --git a/app/views/mailers/domain_delete_mailer/confirmation.text.erb b/app/views/mailers/domain_delete_mailer/confirmation_request.text.erb similarity index 100% rename from app/views/mailers/domain_delete_mailer/confirmation.text.erb rename to app/views/mailers/domain_delete_mailer/confirmation_request.text.erb diff --git a/app/views/mailers/domain_mailer/pending_delete_expired_notification.html.erb b/app/views/mailers/domain_delete_mailer/expired.html.erb similarity index 77% rename from app/views/mailers/domain_mailer/pending_delete_expired_notification.html.erb rename to app/views/mailers/domain_delete_mailer/expired.html.erb index c753a89137..4bfef2e551 100644 --- a/app/views/mailers/domain_mailer/pending_delete_expired_notification.html.erb +++ b/app/views/mailers/domain_delete_mailer/expired.html.erb @@ -1,15 +1,10 @@ Tere

Domeeni <%= @domain.name %> kustutamise taotlust ei kinnitatud tähtaegselt registreerija <%= @domain.registrant.name %> poolt. Domeeni <%= @domain.name %> kustutamine on sellest tulenevalt tühistatud. -

-Lugupidamisega
-Eesti Interneti Sihtasutus -

+<%= render 'mailers/shared/signatures/signature.et.html' %>


Hi,

Domain <%= @domain.name %> deletion was not approved in time by the registrant <%= @domain.registrant.name %>. Thus the deletion of domain <%= @domain.name %> is cancelled. -

-Best Regards,
-Estonian Internet Foundation +<%= render 'mailers/shared/signatures/signature.en.html' %> \ No newline at end of file diff --git a/app/views/mailers/domain_mailer/pending_delete_expired_notification.text.erb b/app/views/mailers/domain_delete_mailer/expired.text.erb similarity index 78% rename from app/views/mailers/domain_mailer/pending_delete_expired_notification.text.erb rename to app/views/mailers/domain_delete_mailer/expired.text.erb index e5eb5393af..e948c85edf 100644 --- a/app/views/mailers/domain_mailer/pending_delete_expired_notification.text.erb +++ b/app/views/mailers/domain_delete_mailer/expired.text.erb @@ -2,14 +2,11 @@ Tere Domeeni <%= @domain.name %> kustutamise taotlust ei kinnitatud tähtaegselt registreerija <%= @domain.registrant.name %> poolt. Domeeni <%= @domain.name %> kustutamine on sellest tulenevalt tühistatud. -Lugupidamisega -Eesti Interneti Sihtasutus - +<%= render 'mailers/shared/signatures/signature.et.text' %> -------------------------------------- Hi, Domain <%= @domain.name %> deletion was not approved in time by the registrant <%= @domain.registrant.name %>. Thus the deletion of domain <%= @domain.name %> is cancelled. -Best Regards, -Estonian Internet Foundation +<%= render 'mailers/shared/signatures/signature.en.text' %> \ No newline at end of file diff --git a/app/views/mailers/domain_mailer/pending_delete_rejected_notification.html.erb b/app/views/mailers/domain_delete_mailer/rejected.html.erb similarity index 68% rename from app/views/mailers/domain_mailer/pending_delete_rejected_notification.html.erb rename to app/views/mailers/domain_delete_mailer/rejected.html.erb index 814e32c7b6..33445e6237 100644 --- a/app/views/mailers/domain_mailer/pending_delete_rejected_notification.html.erb +++ b/app/views/mailers/domain_delete_mailer/rejected.html.erb @@ -1,15 +1,10 @@ Tere

Domeeni <%= @domain.name %> kustutamise taotlus on registreerija <%= @domain.registrant.name %> poolt tagasi lükatud. -

-Lugupidamisega
-Eesti Interneti Sihtasutus -

+<%= render 'mailers/shared/signatures/signature.et.html' %>


Hi,

Domain <%= @domain.name %> deletion was rejected by the registrant <%= @domain.registrant.name %>. -

-Best Regards,
-Estonian Internet Foundation +<%= render 'mailers/shared/signatures/signature.en.html' %> \ No newline at end of file diff --git a/app/views/mailers/domain_mailer/pending_delete_rejected_notification.text.erb b/app/views/mailers/domain_delete_mailer/rejected.text.erb similarity index 69% rename from app/views/mailers/domain_mailer/pending_delete_rejected_notification.text.erb rename to app/views/mailers/domain_delete_mailer/rejected.text.erb index a24f51fde3..077d22d8eb 100644 --- a/app/views/mailers/domain_mailer/pending_delete_rejected_notification.text.erb +++ b/app/views/mailers/domain_delete_mailer/rejected.text.erb @@ -2,14 +2,11 @@ Tere Domeeni <%= @domain.name %> kustutamise taotlus on registreerija <%= @domain.registrant.name %> poolt tagasi lükatud. -Lugupidamisega -Eesti Interneti Sihtasutus - +<%= render 'mailers/shared/signatures/signature.et.text' %> -------------------------------------- Hi, Domain <%= @domain.name %> deletion was rejected by the registrant <%= @domain.registrant.name %>. -Best Regards, -Estonian Internet Foundation +<%= render 'mailers/shared/signatures/signature.en.text' %> \ No newline at end of file diff --git a/config/locales/en.yml b/config/locales/en.yml index 12cc56ab90..c3f4052a3b 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -576,9 +576,6 @@ en: unimplemented_object_service: 'Unimplemented object service' contact_email_update_subject: 'Teie domeenide kontakt epostiaadress on muutunud / Contact e-mail addresses of your domains have changed' object_status_prohibits_operation: 'Object status prohibits operation' - pending_delete_rejected_notification_subject: "Domeeni %{name} kustutamise taotlus tagasi lükatud / %{name} deletion declined" - pending_delete_expired_notification_subject: "Domeeni %{name} kustutamise taotlus on tühistatud / %{name} deletion cancelled" - delete_confirmation_subject: "Domeeni %{name} kustutatud / %{name} deleted" whois: WHOIS not_valid_domain_verification_title: Domain verification not available not_valid_domain_verification_body: This could mean your verification has been expired or done already.

Please contact us if you think something is wrong. diff --git a/config/locales/mailers/domain_delete.en.yml b/config/locales/mailers/domain_delete.en.yml index 9d709f3bbd..6b2efead15 100644 --- a/config/locales/mailers/domain_delete.en.yml +++ b/config/locales/mailers/domain_delete.en.yml @@ -1,9 +1,21 @@ en: domain_delete_mailer: - confirmation: + confirmation_request: subject: >- Kinnitustaotlus domeeni %{domain_name} kustutamiseks .ee registrist / Application for approval for deletion of %{domain_name} + accepted: + subject: >- + Domeeni %{domain} kustutatud + / %{domain} deleted + rejected: + subject: >- + Domeeni %{domain} kustutamise taotlus tagasi lükatud + / %{domain} deletion declined + expired: + subject: >- + Domeeni %{domain} kustutamise taotlus on tühistatud + / %{domain} deletion cancelled forced: subject: >- Domeen %{domain_name} on kustutusmenetluses diff --git a/test/integration/epp/domain/delete/base_test.rb b/test/integration/epp/domain/delete/base_test.rb new file mode 100644 index 0000000000..46523e9df1 --- /dev/null +++ b/test/integration/epp/domain/delete/base_test.rb @@ -0,0 +1,36 @@ +require 'test_helper' + +class EppDomainDeleteBaseTest < ApplicationIntegrationTest + include ActionMailer::TestHelper + + setup do + @domain = domains(:shop) + ActionMailer::Base.deliveries.clear + end + + def test_requests_registrant_confirmation_by_email + assert_equal 'shop.test', @domain.name + + request_xml = <<-XML + + + + + + shop.test + + + + + dGVzdCBmYWlsCg== + + + + + XML + + post '/epp/command/delete', { frame: request_xml }, 'HTTP_COOKIE' => 'session=api_bestnames' + + assert_emails 1 + end +end \ No newline at end of file diff --git a/test/integration/registrant_area/domain_delete_confirmations.rb b/test/integration/registrant_area/domain_delete_confirmations.rb new file mode 100644 index 0000000000..29bca7ed9d --- /dev/null +++ b/test/integration/registrant_area/domain_delete_confirmations.rb @@ -0,0 +1,30 @@ +require 'test_helper' + +class RegistrantAreaDomainDeleteConfirmationIntegrationTest < ActionDispatch::IntegrationTest + include ActionMailer::TestHelper + + setup do + @domain = domains(:shop) + ActionMailer::Base.deliveries.clear + end + + def test_notifies_registrant_by_email_when_accepted + @domain.update!(registrant_verification_asked_at: Time.zone.now, + registrant_verification_token: 'test', + statuses: [DomainStatus::PENDING_DELETE_CONFIRMATION]) + + patch registrant_domain_delete_confirm_path(@domain, token: 'test', confirmed: true) + + assert_emails 1 + end + + def test_notifies_registrant_by_email_when_rejected + @domain.update!(registrant_verification_asked_at: Time.zone.now, + registrant_verification_token: 'test', + statuses: [DomainStatus::PENDING_DELETE_CONFIRMATION]) + + patch registrant_domain_delete_confirm_path(@domain, token: 'test', rejected: true) + + assert_emails 1 + end +end \ No newline at end of file diff --git a/test/mailers/domain_delete_mailer_test.rb b/test/mailers/domain_delete_mailer_test.rb index 0efbea4866..1fce80042d 100644 --- a/test/mailers/domain_delete_mailer_test.rb +++ b/test/mailers/domain_delete_mailer_test.rb @@ -12,13 +12,13 @@ def test_force_delete_templates assert_equal %w[private_person legal_person], DomainDeleteMailer.force_delete_templates end - def test_delivers_domain_delete_confirmation_email + def test_delivers_confirmation_request_email assert_equal 'shop.test', @domain.name assert_equal 'john@inbox.test', @domain.registrant.email - email = DomainDeleteMailer.confirmation(domain: @domain, - registrar: @domain.registrar, - registrant: @domain.registrant).deliver_now + email = DomainDeleteMailer.confirmation_request(domain: @domain, + registrar: @domain.registrar, + registrant: @domain.registrant).deliver_now assert_emails 1 assert_equal ['john@inbox.test'], email.to @@ -26,6 +26,42 @@ def test_delivers_domain_delete_confirmation_email ' / Application for approval for deletion of shop.test', email.subject end + def test_delivers_accepted_email + assert_equal 'shop.test', @domain.name + assert_equal 'john@inbox.test', @domain.registrant.email + + email = DomainDeleteMailer.accepted(@domain).deliver_now + + assert_emails 1 + assert_equal ['john@inbox.test'], email.to + assert_equal 'Domeeni shop.test kustutatud' \ + ' / shop.test deleted', email.subject + end + + def test_delivers_rejected_email + assert_equal 'shop.test', @domain.name + assert_equal 'john@inbox.test', @domain.registrant.email + + email = DomainDeleteMailer.rejected(@domain).deliver_now + + assert_emails 1 + assert_equal ['john@inbox.test'], email.to + assert_equal 'Domeeni shop.test kustutamise taotlus tagasi lükatud' \ + ' / shop.test deletion declined', email.subject + end + + def test_delivers_expired_email + assert_equal 'shop.test', @domain.name + assert_equal 'john@inbox.test', @domain.registrant.email + + email = DomainDeleteMailer.expired(@domain).deliver_now + + assert_emails 1 + assert_equal ['john@inbox.test'], email.to + assert_equal 'Domeeni shop.test kustutamise taotlus on tühistatud' \ + ' / shop.test deletion cancelled', email.subject + end + def test_delivers_domain_force_delete_email assert_equal 'shop.test', @domain.name assert_equal 'john@inbox.test', @domain.registrant.email diff --git a/test/mailers/previews/domain_delete_mailer_preview.rb b/test/mailers/previews/domain_delete_mailer_preview.rb index f8dc0e9ee2..916b0af0e0 100644 --- a/test/mailers/previews/domain_delete_mailer_preview.rb +++ b/test/mailers/previews/domain_delete_mailer_preview.rb @@ -2,10 +2,9 @@ class DomainDeleteMailerPreview < ActionMailer::Preview def self.define_forced_templates DomainDeleteMailer.force_delete_templates.each do |template_name| define_method "forced_#{template_name}".to_sym do - domain = Domain.first - DomainDeleteMailer.forced(domain: domain, - registrar: domain.registrar, - registrant: domain.registrant, + DomainDeleteMailer.forced(domain: @domain, + registrar: @domain.registrar, + registrant: @domain.registrant, template_name: template_name) end end @@ -13,10 +12,26 @@ def self.define_forced_templates define_forced_templates - def confirmation - domain = Domain.first - DomainDeleteMailer.confirmation(domain: domain, - registrar: domain.registrar, - registrant: domain.registrant) + def initialize + @domain = Domain.first + super + end + + def confirmation_request + DomainDeleteMailer.confirmation_request(domain: @domain, + registrar: @domain.registrar, + registrant: @domain.registrant) + end + + def accepted + DomainDeleteMailer.accepted(@domain) + end + + def rejected + DomainDeleteMailer.rejected(@domain) + end + + def expired + DomainDeleteMailer.expired(@domain) end end \ No newline at end of file diff --git a/test/models/domain_cron_test.rb b/test/models/domain_cron_test.rb new file mode 100644 index 0000000000..60cebc9981 --- /dev/null +++ b/test/models/domain_cron_test.rb @@ -0,0 +1,21 @@ +require 'test_helper' + +class DomainCronTest < ActiveSupport::TestCase + include ActionMailer::TestHelper + + setup do + @domain = domains(:shop) + ActionMailer::Base.deliveries.clear + end + + def test_clean_expired_pendings_notifies_registrant_by_email + Setting.expire_pending_confirmation = 0 + @domain.update!(registrant_verification_asked_at: Time.zone.now, + registrant_verification_token: 'test', + statuses: [DomainStatus::PENDING_DELETE_CONFIRMATION]) + + DomainCron.clean_expired_pendings + + assert_emails 1 + end +end \ No newline at end of file