From ed6f067a8d861f130fc74b90eab2970f054cbef8 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Sun, 22 Apr 2018 16:14:17 +0300 Subject: [PATCH] Require a domain to be discarded before cancelling force delete #791 --- app/models/concerns/domain/force_delete.rb | 2 ++ test/models/domain/force_delete_test.rb | 14 +++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/models/concerns/domain/force_delete.rb b/app/models/concerns/domain/force_delete.rb index ec5c651be..bf67a33f2 100644 --- a/app/models/concerns/domain/force_delete.rb +++ b/app/models/concerns/domain/force_delete.rb @@ -23,6 +23,8 @@ module Concerns::Domain::ForceDelete end def cancel_force_delete + raise 'Domain must be discarded before cancelling force delete procedure' unless discarded? + statuses.delete(DomainStatus::FORCE_DELETE) statuses.delete(DomainStatus::SERVER_RENEW_PROHIBITED) statuses.delete(DomainStatus::SERVER_TRANSFER_PROHIBITED) diff --git a/test/models/domain/force_delete_test.rb b/test/models/domain/force_delete_test.rb index 27b792fe7..328a45658 100644 --- a/test/models/domain/force_delete_test.rb +++ b/test/models/domain/force_delete_test.rb @@ -11,6 +11,7 @@ class DomainForceDeleteTest < ActiveSupport::TestCase travel_to Time.zone.parse('2010-07-05 00:00') @domain.schedule_force_delete + @domain.reload assert @domain.force_delete_scheduled? assert_equal Time.zone.parse('2010-08-04 03:00'), @domain.force_delete_at @@ -25,14 +26,25 @@ class DomainForceDeleteTest < ActiveSupport::TestCase assert @domain.force_delete_scheduled? end - def test_cancel_force_delete + def test_cancelling_force_delete_on_discarded_domain + @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 + end + end + 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?