mirror of
https://github.com/internetee/registry.git
synced 2025-08-12 12:39:34 +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
|
class BouncedMailAddress < ApplicationRecord
|
||||||
validates :email, :message_id, :bounce_type, :bounce_subtype, :action, :status, presence: true
|
validates :email, :message_id, :bounce_type, :bounce_subtype, :action, :status, presence: true
|
||||||
after_destroy :destroy_aws_suppression
|
after_destroy :destroy_aws_suppression
|
||||||
|
after_create :force_delete_from_bounce
|
||||||
|
|
||||||
def bounce_reason
|
def bounce_reason
|
||||||
"#{action} (#{status} #{diagnostic})"
|
"#{action} (#{status} #{diagnostic})"
|
||||||
|
@ -42,4 +43,8 @@ class BouncedMailAddress < ApplicationRecord
|
||||||
rescue Aws::Errors::MissingRegionError
|
rescue Aws::Errors::MissingRegionError
|
||||||
false
|
false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def force_delete_from_bounce
|
||||||
|
Domains::ForceDeleteBounce::Base.run(bounced_mail_address: self)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -20,6 +20,7 @@ class BouncedMailAddressTest < ActiveSupport::TestCase
|
||||||
domain_contacts = Contact.where(email: @contact_email).map(&:domain_contacts).flatten
|
domain_contacts = Contact.where(email: @contact_email).map(&:domain_contacts).flatten
|
||||||
|
|
||||||
domain_contacts.each do |domain_contact|
|
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::FORCE_DELETE
|
||||||
assert_not domain_contact.domain.statuses.include? DomainStatus::SERVER_RENEW_PROHIBITED
|
assert_not domain_contact.domain.statuses.include? DomainStatus::SERVER_RENEW_PROHIBITED
|
||||||
assert_not domain_contact.domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED
|
assert_not domain_contact.domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED
|
||||||
|
@ -29,7 +30,8 @@ class BouncedMailAddressTest < ActiveSupport::TestCase
|
||||||
@bounced_mail.save
|
@bounced_mail.save
|
||||||
|
|
||||||
domain_contacts.each do |domain_contact|
|
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.force_delete_scheduled?
|
||||||
assert domain_contact.domain.statuses.include? DomainStatus::FORCE_DELETE
|
assert domain_contact.domain.statuses.include? DomainStatus::FORCE_DELETE
|
||||||
assert domain_contact.domain.statuses.include? DomainStatus::SERVER_RENEW_PROHIBITED
|
assert domain_contact.domain.statuses.include? DomainStatus::SERVER_RENEW_PROHIBITED
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue