Forbid cancelling force delete procedure when a domain is discarded

This commit is contained in:
Artur Beljajev 2018-07-29 20:42:29 +03:00
parent 024a993547
commit cc36e3ccea
5 changed files with 22 additions and 16 deletions

View file

@ -16,7 +16,9 @@ module Concerns::Domain::ForceDelete
end
def cancel_force_delete
raise 'Domain must be discarded before cancelling force delete procedure' unless discarded?
if discarded?
raise StandardError, 'Force delete procedure cannot be cancelled while a domain is discarded'
end
restore_statuses_before_force_delete
remove_force_delete_statuses

View file

@ -58,12 +58,17 @@ class DomainPresenter
target: '.domain-edit-force-delete-dialog',
}
)
else
elsif !domain.discarded?
view.link_to(view.t('admin.domains.force_delete_toggle_btn.cancel'),
view.admin_domain_force_delete_path(domain),
method: :delete,
data: { confirm: view.t('admin.domains.force_delete_toggle_btn.cancel_confirm') },
class: 'btn btn-primary')
else
view.content_tag(:button, view.t('admin.domains.force_delete_toggle_btn.cancel'),
class: 'btn btn-default ',
title: view.t('admin.domains.force_delete_toggle_btn.unable_to_cancel'),
disabled: true)
end
end

View file

@ -47,3 +47,5 @@ en:
schedule: Schedule force delete
cancel: Cancel force delete
cancel_confirm: Are you sure you want cancel force delete procedure?
unable_to_cancel: >
Force delete procedure cannot be cancelled while a domain has deleteCandidate status

View file

@ -44,7 +44,6 @@ class AdminAreaDomainForceDeleteTest < ActionDispatch::IntegrationTest
end
def test_cancels_scheduled_domain_force_delete
@domain.discard
@domain.schedule_force_delete
visit edit_admin_domain_url(@domain)
@ -55,4 +54,13 @@ class AdminAreaDomainForceDeleteTest < ActionDispatch::IntegrationTest
assert_current_path edit_admin_domain_path(@domain)
assert_text 'Force delete procedure has been cancelled'
end
end
def test_force_delete_cannot_be_cancelled_when_a_domain_is_discarded
@domain.discard
@domain.schedule_force_delete
visit edit_admin_domain_url(@domain)
assert_no_button 'Cancel force delete'
assert_no_link 'Cancel force delete'
end
end

View file

@ -73,16 +73,8 @@ class DomainForceDeleteTest < ActiveSupport::TestCase
assert @domain.force_delete_scheduled?
end
def test_cancelling_force_delete_on_a_discarded_domain
def test_force_delete_cannot_be_cancelled_when_a_domain_is_discarded
@domain.discard
@domain.schedule_force_delete
@domain.cancel_force_delete
@domain.reload
assert_not @domain.force_delete_scheduled?
assert_nil @domain.force_delete_at
end
def test_cancelling_force_delete_requires_a_domain_to_be_discarded
@domain.schedule_force_delete
assert_raises StandardError do
@domain.cancel_force_delete
@ -91,7 +83,6 @@ class DomainForceDeleteTest < ActiveSupport::TestCase
def test_cancelling_force_delete_bypasses_validation
@domain = domains(:invalid)
@domain.discard
@domain.schedule_force_delete
@domain.cancel_force_delete
assert_not @domain.force_delete_scheduled?
@ -106,7 +97,6 @@ class DomainForceDeleteTest < ActiveSupport::TestCase
DomainStatus::PENDING_DELETE,
DomainStatus::SERVER_MANUAL_INZONE
]
@domain.discard
@domain.statuses = @domain.statuses + statuses
@domain.schedule_force_delete
@ -117,7 +107,6 @@ class DomainForceDeleteTest < ActiveSupport::TestCase
end
def test_cancelling_force_delete_restores_statuses_that_a_domain_had_before_force_delete
@domain.discard
@domain.statuses_before_force_delete = ['test1', DomainStatus::DELETE_CANDIDATE]
@domain.cancel_force_delete