mirror of
https://github.com/internetee/registry.git
synced 2025-07-28 05:26:17 +02:00
send expire email for multiyear domains
This commit is contained in:
parent
f2cd7cb20a
commit
17b9cf0ffc
4 changed files with 66 additions and 2 deletions
|
@ -0,0 +1,46 @@
|
||||||
|
module Domains
|
||||||
|
module ForceDelete
|
||||||
|
class NotifyMultiyearsExpirationDomain < Base
|
||||||
|
SCHEDULED_DATA = 2.days
|
||||||
|
|
||||||
|
def execute
|
||||||
|
return unless multiyear_registrations?
|
||||||
|
|
||||||
|
recipients.each do |recipient|
|
||||||
|
DomainExpireEmailJob.set(wait_until: send_time).perform_later(domain.id, recipient)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def send_time
|
||||||
|
domain.force_delete_start + SCHEDULED_DATA
|
||||||
|
end
|
||||||
|
|
||||||
|
def multiyear_registrations?
|
||||||
|
domain_expire = domain.valid_to.to_i
|
||||||
|
current_time = Time.zone.now.to_i
|
||||||
|
|
||||||
|
(domain_expire - current_time) >= 1.year.to_i
|
||||||
|
end
|
||||||
|
|
||||||
|
def recipients
|
||||||
|
filter_invalid_emails(domain.expired_domain_contact_emails)
|
||||||
|
end
|
||||||
|
|
||||||
|
def filter_invalid_emails(emails)
|
||||||
|
emails.select do |email|
|
||||||
|
valid = Truemail.valid?(email)
|
||||||
|
|
||||||
|
unless valid
|
||||||
|
Rails.logger.info('Unable to send DomainExpireMailer#expired email for '\
|
||||||
|
"domain #{domain.name} (##{domain.id}) to invalid recipient #{email}")
|
||||||
|
end
|
||||||
|
|
||||||
|
valid
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ module Domains
|
||||||
compose(PostSetProcess, inputs.to_h)
|
compose(PostSetProcess, inputs.to_h)
|
||||||
compose(NotifyRegistrar, inputs.to_h)
|
compose(NotifyRegistrar, inputs.to_h)
|
||||||
compose(NotifyByEmail, inputs.to_h)
|
compose(NotifyByEmail, inputs.to_h)
|
||||||
|
compose(NotifyMultiyearsExpirationDomain, inputs.to_h)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -516,6 +516,21 @@ class ForceDeleteTest < ActionMailer::TestCase
|
||||||
assert_not @domain.force_delete_scheduled?
|
assert_not @domain.force_delete_scheduled?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_notification_multiyear_expiration_domain
|
||||||
|
@domain.update(valid_to: Time.zone.parse('2014-08-05'))
|
||||||
|
assert_not @domain.force_delete_scheduled?
|
||||||
|
travel_to Time.zone.parse('2010-07-05')
|
||||||
|
|
||||||
|
@domain.schedule_force_delete(type: :soft)
|
||||||
|
@domain.reload
|
||||||
|
|
||||||
|
assert @domain.force_delete_scheduled?
|
||||||
|
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_enqueued_jobs 4
|
||||||
|
end
|
||||||
|
|
||||||
def prepare_bounced_email_address(email)
|
def prepare_bounced_email_address(email)
|
||||||
@bounced_mail = BouncedMailAddress.new
|
@bounced_mail = BouncedMailAddress.new
|
||||||
@bounced_mail.email = email
|
@bounced_mail.email = email
|
||||||
|
|
|
@ -64,6 +64,8 @@ class EppResponseResultCodeTest < ActiveSupport::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_returns_default_descriptions
|
def test_returns_default_descriptions
|
||||||
|
ENV["shunter_default_threshold"] = '100'
|
||||||
|
|
||||||
descriptions = {
|
descriptions = {
|
||||||
1000 => 'Command completed successfully',
|
1000 => 'Command completed successfully',
|
||||||
1001 => 'Command completed successfully; action pending',
|
1001 => 'Command completed successfully; action pending',
|
||||||
|
@ -92,8 +94,8 @@ class EppResponseResultCodeTest < ActiveSupport::TestCase
|
||||||
2400 => 'Command failed',
|
2400 => 'Command failed',
|
||||||
2501 => 'Authentication error; server closing connection'
|
2501 => 'Authentication error; server closing connection'
|
||||||
}
|
}
|
||||||
|
assert_equal descriptions, Epp::Response::Result::Code.default_descriptions
|
||||||
assert Epp::Response::Result::Code.default_descriptions.contain? descriptions
|
ENV["shunter_default_threshold"] = '10000'
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_equality
|
def test_equality
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue