mirror of
https://github.com/internetee/registry.git
synced 2025-06-12 23:54:44 +02:00
Add notification on autoFD
This commit is contained in:
parent
81c21db392
commit
91093b274d
6 changed files with 42 additions and 10 deletions
|
@ -13,6 +13,9 @@ module Domains
|
||||||
string :reason,
|
string :reason,
|
||||||
default: nil,
|
default: nil,
|
||||||
description: 'Which mail template to use explicitly'
|
description: 'Which mail template to use explicitly'
|
||||||
|
string :email,
|
||||||
|
default: nil,
|
||||||
|
description: 'Possible invalid email to notify on'
|
||||||
|
|
||||||
validates :type, inclusion: { in: %i[fast_track soft] }
|
validates :type, inclusion: { in: %i[fast_track soft] }
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,11 +2,23 @@ module Domains
|
||||||
module ForceDelete
|
module ForceDelete
|
||||||
class NotifyRegistrar < Base
|
class NotifyRegistrar < Base
|
||||||
def execute
|
def execute
|
||||||
|
email.present? ? notify_with_email : notify_without_email
|
||||||
|
end
|
||||||
|
|
||||||
|
def notify_without_email
|
||||||
domain.registrar.notifications.create!(text: I18n.t('force_delete_set_on_domain',
|
domain.registrar.notifications.create!(text: I18n.t('force_delete_set_on_domain',
|
||||||
domain_name: domain.name,
|
domain_name: domain.name,
|
||||||
outzone_date: domain.outzone_date,
|
outzone_date: domain.outzone_date,
|
||||||
purge_date: domain.purge_date))
|
purge_date: domain.purge_date))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def notify_with_email
|
||||||
|
domain.registrar.notifications.create!(text: I18n.t('force_delete_auto_email',
|
||||||
|
domain_name: domain.name,
|
||||||
|
outzone_date: domain.outzone_date,
|
||||||
|
purge_date: domain.purge_date,
|
||||||
|
email: email))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -11,12 +11,16 @@ module Domains
|
||||||
domains = domain_contacts.map(&:domain).flatten +
|
domains = domain_contacts.map(&:domain).flatten +
|
||||||
Domain.where(registrant_id: registrant_ids)
|
Domain.where(registrant_id: registrant_ids)
|
||||||
|
|
||||||
domains.each do |domain|
|
domains.each { |domain| process_force_delete(domain) unless domain.force_delete_scheduled? }
|
||||||
next if domain.force_delete_scheduled?
|
end
|
||||||
|
|
||||||
domain.schedule_force_delete(type: :soft,
|
private
|
||||||
notify_by_email: true, reason: 'invalid_email')
|
|
||||||
end
|
def process_force_delete(domain)
|
||||||
|
domain.schedule_force_delete(type: :soft,
|
||||||
|
notify_by_email: true,
|
||||||
|
reason: 'invalid_email',
|
||||||
|
email: email)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -45,9 +45,9 @@ module Domain::ForceDelete # rubocop:disable Metrics/ModuleLength
|
||||||
statuses.include?(DomainStatus::FORCE_DELETE)
|
statuses.include?(DomainStatus::FORCE_DELETE)
|
||||||
end
|
end
|
||||||
|
|
||||||
def schedule_force_delete(type: :fast_track, notify_by_email: false, reason: nil)
|
def schedule_force_delete(type: :fast_track, notify_by_email: false, reason: nil, email: nil)
|
||||||
Domains::ForceDelete::SetForceDelete.run(domain: self, type: type, reason: reason,
|
Domains::ForceDelete::SetForceDelete.run(domain: self, type: type, reason: reason,
|
||||||
notify_by_email: notify_by_email)
|
notify_by_email: notify_by_email, email: email)
|
||||||
end
|
end
|
||||||
|
|
||||||
def cancel_force_delete
|
def cancel_force_delete
|
||||||
|
|
|
@ -626,6 +626,7 @@ en:
|
||||||
created_at_until: 'Created at until'
|
created_at_until: 'Created at until'
|
||||||
is_registrant: 'Is registrant'
|
is_registrant: 'Is registrant'
|
||||||
force_delete_set_on_domain: 'Force delete set on domain %{domain_name}. Outzone date: %{outzone_date}. Purge date: %{purge_date}'
|
force_delete_set_on_domain: 'Force delete set on domain %{domain_name}. Outzone date: %{outzone_date}. Purge date: %{purge_date}'
|
||||||
|
force_delete_auto_email: 'Force delete set on domain %{domain_name}. Outzone date: %{outzone_date}. Purge date: %{purge_date}. Invalid email: %{email}'
|
||||||
grace_period_started_domain: 'For domain %{domain_name} started 45-days redemption grace period, ForceDelete will be in effect from %{date}'
|
grace_period_started_domain: 'For domain %{domain_name} started 45-days redemption grace period, ForceDelete will be in effect from %{date}'
|
||||||
force_delete_cancelled: 'Force delete is cancelled on domain %{domain_name}'
|
force_delete_cancelled: 'Force delete is cancelled on domain %{domain_name}'
|
||||||
contact_is_not_valid: 'Contact %{value} is not valid, please fix the invalid contact'
|
contact_is_not_valid: 'Contact %{value} is not valid, please fix the invalid contact'
|
||||||
|
|
|
@ -325,8 +325,10 @@ class ForceDeleteTest < ActionMailer::TestCase
|
||||||
@domain.update(valid_to: Time.zone.parse('2012-08-05'))
|
@domain.update(valid_to: Time.zone.parse('2012-08-05'))
|
||||||
assert_not @domain.force_delete_scheduled?
|
assert_not @domain.force_delete_scheduled?
|
||||||
travel_to Time.zone.parse('2010-07-05')
|
travel_to Time.zone.parse('2010-07-05')
|
||||||
|
email = @domain.admin_contacts.first.email
|
||||||
|
asserted_text = "Invalid email: #{email}"
|
||||||
|
|
||||||
prepare_bounced_email_address(@domain.admin_contacts.first.email)
|
prepare_bounced_email_address(email)
|
||||||
|
|
||||||
@domain.reload
|
@domain.reload
|
||||||
|
|
||||||
|
@ -334,14 +336,18 @@ class ForceDeleteTest < ActionMailer::TestCase
|
||||||
assert_equal 'invalid_email', @domain.template_name
|
assert_equal 'invalid_email', @domain.template_name
|
||||||
assert_equal Date.parse('2010-09-19'), @domain.force_delete_date.to_date
|
assert_equal Date.parse('2010-09-19'), @domain.force_delete_date.to_date
|
||||||
assert_equal Date.parse('2010-08-05'), @domain.force_delete_start.to_date
|
assert_equal Date.parse('2010-08-05'), @domain.force_delete_start.to_date
|
||||||
|
notification = @domain.registrar.notifications.last
|
||||||
|
assert notification.text.include? asserted_text
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_schedules_force_delete_after_registrant_bounce
|
def test_schedules_force_delete_after_registrant_bounce
|
||||||
@domain.update(valid_to: Time.zone.parse('2012-08-05'))
|
@domain.update(valid_to: Time.zone.parse('2012-08-05'))
|
||||||
assert_not @domain.force_delete_scheduled?
|
assert_not @domain.force_delete_scheduled?
|
||||||
travel_to Time.zone.parse('2010-07-05')
|
travel_to Time.zone.parse('2010-07-05')
|
||||||
|
email = @domain.registrant.email
|
||||||
|
asserted_text = "Invalid email: #{email}"
|
||||||
|
|
||||||
prepare_bounced_email_address(@domain.registrant.email)
|
prepare_bounced_email_address(email)
|
||||||
|
|
||||||
@domain.reload
|
@domain.reload
|
||||||
|
|
||||||
|
@ -349,17 +355,21 @@ class ForceDeleteTest < ActionMailer::TestCase
|
||||||
assert_equal 'invalid_email', @domain.template_name
|
assert_equal 'invalid_email', @domain.template_name
|
||||||
assert_equal Date.parse('2010-09-19'), @domain.force_delete_date.to_date
|
assert_equal Date.parse('2010-09-19'), @domain.force_delete_date.to_date
|
||||||
assert_equal Date.parse('2010-08-05'), @domain.force_delete_start.to_date
|
assert_equal Date.parse('2010-08-05'), @domain.force_delete_start.to_date
|
||||||
|
notification = @domain.registrar.notifications.last
|
||||||
|
assert notification.text.include? asserted_text
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_schedules_force_delete_invalid_contact
|
def test_schedules_force_delete_invalid_contact
|
||||||
@domain.update(valid_to: Time.zone.parse('2012-08-05'))
|
@domain.update(valid_to: Time.zone.parse('2012-08-05'))
|
||||||
assert_not @domain.force_delete_scheduled?
|
assert_not @domain.force_delete_scheduled?
|
||||||
travel_to Time.zone.parse('2010-07-05')
|
travel_to Time.zone.parse('2010-07-05')
|
||||||
|
email = 'some@strangesentence@internet.ee'
|
||||||
|
asserted_text = "Invalid email: #{email}"
|
||||||
|
|
||||||
Truemail.configure.default_validation_type = :regex
|
Truemail.configure.default_validation_type = :regex
|
||||||
|
|
||||||
contact = @domain.admin_contacts.first
|
contact = @domain.admin_contacts.first
|
||||||
contact.update_attribute(:email, 'some@strangesentence@internet.ee')
|
contact.update_attribute(:email, email)
|
||||||
contact.email_verification.verify
|
contact.email_verification.verify
|
||||||
|
|
||||||
assert contact.email_verification_failed?
|
assert contact.email_verification_failed?
|
||||||
|
@ -370,6 +380,8 @@ class ForceDeleteTest < ActionMailer::TestCase
|
||||||
assert_equal 'invalid_email', @domain.template_name
|
assert_equal 'invalid_email', @domain.template_name
|
||||||
assert_equal Date.parse('2010-09-19'), @domain.force_delete_date.to_date
|
assert_equal Date.parse('2010-09-19'), @domain.force_delete_date.to_date
|
||||||
assert_equal Date.parse('2010-08-05'), @domain.force_delete_start.to_date
|
assert_equal Date.parse('2010-08-05'), @domain.force_delete_start.to_date
|
||||||
|
notification = @domain.registrar.notifications.last
|
||||||
|
assert notification.text.include? asserted_text
|
||||||
end
|
end
|
||||||
|
|
||||||
def prepare_bounced_email_address(email)
|
def prepare_bounced_email_address(email)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue