mirror of
https://github.com/internetee/registry.git
synced 2025-08-03 00:12:03 +02:00
Init force delete on bounce creation
This commit is contained in:
parent
da3272207b
commit
4522e4427e
3 changed files with 27 additions and 1 deletions
19
app/interactions/domains/force_delete_bounce/base.rb
Normal file
19
app/interactions/domains/force_delete_bounce/base.rb
Normal file
|
@ -0,0 +1,19 @@
|
|||
module Domains
|
||||
module ForceDeleteBounce
|
||||
class Base < ActiveInteraction::Base
|
||||
object :bounced_mail_address,
|
||||
class: BouncedMailAddress,
|
||||
description: 'Bounced email to set ForceDelete from'
|
||||
|
||||
def execute
|
||||
email = bounced_mail_address.email
|
||||
domain_contacts = Contact.where(email: email).map(&:domain_contacts).flatten
|
||||
domains = domain_contacts.map(&:domain).flatten
|
||||
domains.each do |domain|
|
||||
domain.schedule_force_delete(type: :soft,
|
||||
notify_by_email: true, reason: 'invalid_email')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,6 +1,7 @@
|
|||
class BouncedMailAddress < ApplicationRecord
|
||||
validates :email, :message_id, :bounce_type, :bounce_subtype, :action, :status, presence: true
|
||||
after_destroy :destroy_aws_suppression
|
||||
after_create :force_delete_from_bounce
|
||||
|
||||
def bounce_reason
|
||||
"#{action} (#{status} #{diagnostic})"
|
||||
|
@ -42,4 +43,8 @@ class BouncedMailAddress < ApplicationRecord
|
|||
rescue Aws::Errors::MissingRegionError
|
||||
false
|
||||
end
|
||||
|
||||
def force_delete_from_bounce
|
||||
Domains::ForceDeleteBounce::Base.run(bounced_mail_address: self)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -20,6 +20,7 @@ class BouncedMailAddressTest < ActiveSupport::TestCase
|
|||
domain_contacts = Contact.where(email: @contact_email).map(&:domain_contacts).flatten
|
||||
|
||||
domain_contacts.each do |domain_contact|
|
||||
domain_contact.domain.update(valid_to: Time.zone.now + 5.years)
|
||||
assert_not domain_contact.domain.statuses.include? DomainStatus::FORCE_DELETE
|
||||
assert_not domain_contact.domain.statuses.include? DomainStatus::SERVER_RENEW_PROHIBITED
|
||||
assert_not domain_contact.domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED
|
||||
|
@ -29,7 +30,8 @@ class BouncedMailAddressTest < ActiveSupport::TestCase
|
|||
@bounced_mail.save
|
||||
|
||||
domain_contacts.each do |domain_contact|
|
||||
assert_equal domain_contact.domain.force_delete_type, 'soft'
|
||||
domain_contact.reload
|
||||
assert_equal 'soft', domain_contact.domain.force_delete_type
|
||||
assert domain_contact.domain.force_delete_scheduled?
|
||||
assert domain_contact.domain.statuses.include? DomainStatus::FORCE_DELETE
|
||||
assert domain_contact.domain.statuses.include? DomainStatus::SERVER_RENEW_PROHIBITED
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue