diff --git a/app/jobs/domain_delete_confirm_email_job.rb b/app/jobs/domain_delete_confirm_email_job.rb
index fafe143e1..ea5a9bf49 100644
--- a/app/jobs/domain_delete_confirm_email_job.rb
+++ b/app/jobs/domain_delete_confirm_email_job.rb
@@ -3,9 +3,9 @@ class DomainDeleteConfirmEmailJob < Que::Job
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 28a46dbbe..a067ce175 100644
--- a/app/jobs/domain_delete_confirm_job.rb
+++ b/app/jobs/domain_delete_confirm_job.rb
@@ -19,7 +19,13 @@ class DomainDeleteConfirmJob < Que::Job
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 46ad963fb..8c63de39e 100644
--- a/app/mailers/domain_delete_mailer.rb
+++ b/app/mailers/domain_delete_mailer.rb
@@ -3,7 +3,7 @@ class DomainDeleteMailer < ApplicationMailer
%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 @@ class DomainDeleteMailer < ApplicationMailer
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 7b508df0c..000000000
--- 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 576ba479d..e2d9d6172 100644
--- a/app/models/domain.rb
+++ b/app/models/domain.rb
@@ -167,7 +167,7 @@ class Domain < ActiveRecord::Base
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 1414d4dc5..578538e17 100644
--- a/app/models/domain_cron.rb
+++ b/app/models/domain_cron.rb
@@ -19,7 +19,7 @@ class DomainCron
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 bd9a1d4a3..fcfbaf369 100644
--- a/app/models/epp/domain.rb
+++ b/app/models/epp/domain.rb
@@ -483,8 +483,6 @@ class Epp::Domain < Domain
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 @@ class Epp::Domain < Domain
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 5a7cada60..986f6352c 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 5d924eca7..aa6f33baf 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 c753a8913..4bfef2e55 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 e5eb5393a..e948c85ed 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 814e32c7b..33445e623 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 a24f51fde..077d22d8e 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 4d6374ba6..5033588f6 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -575,9 +575,6 @@ en:
maximum_total: 'Maximum total'
unimplemented_object_service: 'Unimplemented object service'
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 9d709f3bb..6b2efead1 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/registrant_area/domain_delete_confirmations.rb b/test/integration/registrant_area/domain_delete_confirmations.rb
new file mode 100644
index 000000000..29bca7ed9
--- /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 0efbea486..1fce80042 100644
--- a/test/mailers/domain_delete_mailer_test.rb
+++ b/test/mailers/domain_delete_mailer_test.rb
@@ -12,13 +12,13 @@ class DomainDeleteMailerTest < ActiveSupport::TestCase
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 @@ class DomainDeleteMailerTest < ActiveSupport::TestCase
' / 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 f8dc0e9ee..916b0af0e 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 @@ class DomainDeleteMailerPreview < ActionMailer::Preview
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 000000000..60cebc998
--- /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