diff --git a/app/interactions/domains/cancel_force_delete/remove_force_delete_statuses.rb b/app/interactions/domains/cancel_force_delete/remove_force_delete_statuses.rb index adb310e51..4f4f1645c 100644 --- a/app/interactions/domains/cancel_force_delete/remove_force_delete_statuses.rb +++ b/app/interactions/domains/cancel_force_delete/remove_force_delete_statuses.rb @@ -6,6 +6,11 @@ module Domains DomainStatus::SERVER_RENEW_PROHIBITED, DomainStatus::SERVER_TRANSFER_PROHIBITED, DomainStatus::CLIENT_HOLD] + domain.force_delete_domain_statuses_history += [ DomainStatus::SERVER_TRANSFER_PROHIBITED, + DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED, + DomainStatus::SERVER_DELETE_PROHIBITED + ] if domain.locked_by_registrant? + domain.admin_store_statuses_history -= domain_statuses unless domain.admin_store_statuses_history.nil? rejected_statuses = domain.statuses.reject { |a| domain_statuses.include? a } domain.statuses = rejected_statuses domain.save(validate: false) diff --git a/app/interactions/domains/cancel_force_delete/restore_statuses_before_force_delete.rb b/app/interactions/domains/cancel_force_delete/restore_statuses_before_force_delete.rb index d521bfcba..3c2579890 100644 --- a/app/interactions/domains/cancel_force_delete/restore_statuses_before_force_delete.rb +++ b/app/interactions/domains/cancel_force_delete/restore_statuses_before_force_delete.rb @@ -2,9 +2,13 @@ module Domains module CancelForceDelete class RestoreStatusesBeforeForceDelete < Base def execute - domain.statuses = domain.force_delete_domain_statuses_history || [] + domain.statuses += domain.force_delete_domain_statuses_history || [] + domain.statuses += domain.admin_store_statuses_history || [] + domain.statuses.uniq! + domain.statuses_before_force_delete = nil domain.force_delete_domain_statuses_history = nil + domain.admin_store_statuses_history = nil domain.save(validate: false) end end diff --git a/app/models/concerns/domain/registry_lockable.rb b/app/models/concerns/domain/registry_lockable.rb index db41e763a..d61e7cf91 100644 --- a/app/models/concerns/domain/registry_lockable.rb +++ b/app/models/concerns/domain/registry_lockable.rb @@ -23,6 +23,7 @@ module Domain::RegistryLockable end def apply_statuses_locked_statuses(extensions_prohibited:) + self.admin_store_statuses_history = self.statuses self.statuses |= LOCK_STATUSES self.statuses |= EXTENSIONS_STATUS if Feature.obj_and_extensions_statuses_enabled? && extensions_prohibited self.locked_by_registrant_at = Time.zone.now @@ -35,7 +36,7 @@ module Domain::RegistryLockable (statuses & [DomainStatus::PENDING_DELETE_CONFIRMATION, DomainStatus::PENDING_CREATE, DomainStatus::PENDING_UPDATE, DomainStatus::PENDING_DELETE, DomainStatus::PENDING_RENEW, - DomainStatus::PENDING_TRANSFER, DomainStatus::FORCE_DELETE]).empty? + DomainStatus::PENDING_TRANSFER]).empty? end def locked_by_registrant? diff --git a/app/models/domain.rb b/app/models/domain.rb index 703bfadcf..5e8a284d5 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -122,7 +122,7 @@ class Domain < ApplicationRecord def status_is_consistant has_error = (hold_status? && statuses.include?(DomainStatus::SERVER_MANUAL_INZONE)) if !has_error && (statuses & DELETE_STATUSES).any? - has_error = statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED + has_error = statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED unless locked_by_registrant? end errors.add(:domains, I18n.t(:object_status_prohibits_operation)) if has_error end diff --git a/app/models/registrant_user.rb b/app/models/registrant_user.rb index 57a2f58ab..f7e85c5af 100644 --- a/app/models/registrant_user.rb +++ b/app/models/registrant_user.rb @@ -23,7 +23,7 @@ class RegistrantUser < User company_register.representation_rights(citizen_personal_code: ident, citizen_country_code: country.alpha3) end - + def contacts(representable: true) Contact.registrant_user_contacts(self, representable: representable) end diff --git a/config/application.yml.sample b/config/application.yml.sample index 1da894b5f..aa86325f1 100644 --- a/config/application.yml.sample +++ b/config/application.yml.sample @@ -59,8 +59,8 @@ contact_org_enabled: 'false' # System default for legal document types is: pdf,asice,sce,asics,scs,adoc,edoc,bdoc,ddoc,zip,rar,gz,tar,7z,odt,doc,docx # legal_document_types: "pdf,asice,sce,asics,scs,adoc,edoc,bdoc,ddoc,zip,rar,gz,tar,7z,odt,doc,docx" -# obj_and_extensions_prohibited: 'true' -# enable_lock_domain_with_new_statuses: 'true' +obj_and_extensions_prohibited: 'true' +enable_lock_domain_with_new_statuses: 'true' # # REGISTRAR configuration (DEPP) diff --git a/test/integration/api/registrant/registrant_api_registry_locks_test.rb b/test/integration/api/registrant/registrant_api_registry_locks_test.rb index 3499711a7..20d64f32b 100644 --- a/test/integration/api/registrant/registrant_api_registry_locks_test.rb +++ b/test/integration/api/registrant/registrant_api_registry_locks_test.rb @@ -18,7 +18,7 @@ class RegistrantApiRegistryLocksTest < ApplicationIntegrationTest assert(response_json[:statuses].include?(DomainStatus::SERVER_DELETE_PROHIBITED)) assert(response_json[:statuses].include?(DomainStatus::SERVER_TRANSFER_PROHIBITED)) - assert(response_json[:statuses].include?(DomainStatus::SERVER_UPDATE_PROHIBITED)) + assert(response_json[:statuses].include?(DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED)) @domain.reload assert(@domain.locked_by_registrant?) @@ -115,7 +115,7 @@ class RegistrantApiRegistryLocksTest < ApplicationIntegrationTest assert(response_json[:statuses].include?(DomainStatus::SERVER_DELETE_PROHIBITED)) assert(response_json[:statuses].include?(DomainStatus::SERVER_TRANSFER_PROHIBITED)) - assert(response_json[:statuses].include?(DomainStatus::SERVER_UPDATE_PROHIBITED)) + assert(response_json[:statuses].include?(DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED)) end def test_locking_domains_returns_serialized_domain_object diff --git a/test/jobs/replace_upd_to_obj_upd_prohibited_job_test.rb b/test/jobs/replace_upd_to_obj_upd_prohibited_job_test.rb index 16d6ed367..a49f55380 100644 --- a/test/jobs/replace_upd_to_obj_upd_prohibited_job_test.rb +++ b/test/jobs/replace_upd_to_obj_upd_prohibited_job_test.rb @@ -23,7 +23,7 @@ class ReplaceUpdToObjUpdProhibitedJobTest < ActiveSupport::TestCase def test_start_adding_new_status_for_locked_domains @domain.apply_registry_lock(extensions_prohibited: false) assert @domain.locked_by_registrant? - assert @domain.statuses.include? "serverUpdateProhibited" + assert @domain.statuses.include? "serverObjUpdateProhibited" # @domain.statuses += ["serverObjUpdateProhibited"] # @domain.save diff --git a/test/models/domain/registry_lockable_test.rb b/test/models/domain/registry_lockable_test.rb index 136c05fba..bfd6d9192 100644 --- a/test/models/domain/registry_lockable_test.rb +++ b/test/models/domain/registry_lockable_test.rb @@ -30,23 +30,23 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase assert @domain.locked_by_registrant? @domain.remove_registry_lock - assert_not @domain.statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED - assert_not @domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED + assert @domain.statuses.include? DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED + assert @domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED assert_not @domain.statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED end def test_restore_domain_statuses_after_unlock - @domain.statuses = [DomainStatus::SERVER_UPDATE_PROHIBITED] - @domain.admin_store_statuses_history = [DomainStatus::SERVER_UPDATE_PROHIBITED] + @domain.statuses = [DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED] + @domain.admin_store_statuses_history = [DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED] @domain.save - assert @domain.admin_store_statuses_history.include? DomainStatus::SERVER_UPDATE_PROHIBITED + assert @domain.admin_store_statuses_history.include? DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED @domain.apply_registry_lock(extensions_prohibited: false) assert @domain.locked_by_registrant? assert_equal @domain.statuses.sort, Domain::RegistryLockable::LOCK_STATUSES.sort @domain.remove_registry_lock - assert @domain.statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED + assert @domain.statuses.include? DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED assert_not @domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED assert_not @domain.statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED end @@ -62,7 +62,7 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase @domain.remove_registry_lock assert @domain.statuses.include? DomainStatus::SERVER_RENEW_PROHIBITED - assert_not @domain.statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED + assert_not @domain.statuses.include? DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED assert_not @domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED assert_not @domain.statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED end @@ -73,12 +73,12 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase check_statuses_lockable_domain assert(@domain.locked_by_registrant?) - statuses = @domain.statuses - [DomainStatus::SERVER_UPDATE_PROHIBITED] + statuses = @domain.statuses - [DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED] @domain.update(statuses: statuses) assert @domain.statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED assert @domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED - assert_not @domain.statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED + assert_not @domain.statuses.include? DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED assert_not(@domain.locked_by_registrant?) end @@ -88,7 +88,7 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase @domain.apply_registry_lock(extensions_prohibited: false) assert_equal( - [DomainStatus::SERVER_UPDATE_PROHIBITED, + [DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED, DomainStatus::SERVER_DELETE_PROHIBITED, DomainStatus::SERVER_TRANSFER_PROHIBITED], @domain.statuses @@ -116,7 +116,7 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase @domain.apply_registry_lock(extensions_prohibited: false) assert_equal( - [DomainStatus::SERVER_UPDATE_PROHIBITED, + [DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED, DomainStatus::SERVER_DELETE_PROHIBITED, DomainStatus::SERVER_TRANSFER_PROHIBITED], @domain.statuses @@ -139,17 +139,91 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase end def test_registry_lock_cannot_be_removed_if_statuses_were_set_by_admin - @domain.statuses << DomainStatus::SERVER_UPDATE_PROHIBITED + @domain.statuses << DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED @domain.statuses << DomainStatus::SERVER_DELETE_PROHIBITED @domain.statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED refute(@domain.remove_registry_lock) end + def test_set_lock_for_domain_with_force_delete_status + @domain.schedule_force_delete(type: :soft) + @domain.reload + + assert @domain.force_delete_scheduled? + + assert @domain.statuses.include? DomainStatus::FORCE_DELETE + assert @domain.statuses.include? DomainStatus::SERVER_RENEW_PROHIBITED + assert @domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED + + assert @domain.apply_registry_lock(extensions_prohibited: false) + + assert @domain.statuses.include? DomainStatus::FORCE_DELETE + assert @domain.statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED + assert @domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED + assert @domain.statuses.include? DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED + assert @domain.statuses.include? DomainStatus::SERVER_RENEW_PROHIBITED + + @domain.remove_registry_lock + + assert @domain.statuses.include? DomainStatus::FORCE_DELETE + assert @domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED + assert @domain.statuses.include? DomainStatus::SERVER_RENEW_PROHIBITED + end + + def test_set_lock_for_domain_with_fd_status_and_remov_fd + @domain.schedule_force_delete(type: :soft) + @domain.reload + + assert @domain.force_delete_scheduled? + + assert @domain.statuses.include? DomainStatus::FORCE_DELETE + assert @domain.statuses.include? DomainStatus::SERVER_RENEW_PROHIBITED + assert @domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED + + assert @domain.apply_registry_lock(extensions_prohibited: false) + + assert @domain.statuses.include? DomainStatus::FORCE_DELETE + assert @domain.statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED + assert @domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED + assert @domain.statuses.include? DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED + assert @domain.statuses.include? DomainStatus::SERVER_RENEW_PROHIBITED + + @domain.cancel_force_delete + + assert @domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED + assert @domain.statuses.include? DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED + assert @domain.statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED + end + + def test_set_force_delete_for_locked_domain__and_remove_fc + assert @domain.apply_registry_lock(extensions_prohibited: false) + + assert @domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED + assert @domain.statuses.include? DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED + assert @domain.statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED + + @domain.schedule_force_delete(type: :soft) + @domain.reload + + assert @domain.force_delete_scheduled? + + assert @domain.statuses.include? DomainStatus::FORCE_DELETE + assert @domain.statuses.include? DomainStatus::SERVER_RENEW_PROHIBITED + assert @domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED + assert @domain.statuses.include? DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED + + @domain.cancel_force_delete + + assert @domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED + assert @domain.statuses.include? DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED + assert @domain.statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED + end + private def check_statuses_lockable_domain - lock_statuses = [DomainStatus::SERVER_UPDATE_PROHIBITED, + lock_statuses = [DomainStatus::SERVER_OBJ_UPDATE_PROHIBITED, DomainStatus::SERVER_DELETE_PROHIBITED, DomainStatus::SERVER_TRANSFER_PROHIBITED] diff --git a/test/models/feature_test.rb b/test/models/feature_test.rb index d910ac140..dd338b3c3 100644 --- a/test/models/feature_test.rb +++ b/test/models/feature_test.rb @@ -38,7 +38,7 @@ class FeatureTest < ActiveSupport::TestCase assert_not Feature.enable_lock_domain_with_new_statuses? - assert_equal @domain.statuses, ["serverUpdateProhibited", "serverDeleteProhibited", "serverTransferProhibited"] + assert_equal @domain.statuses, ["serverObjUpdateProhibited", "serverDeleteProhibited", "serverTransferProhibited"] assert @domain.locked_by_registrant? end @@ -47,7 +47,7 @@ class FeatureTest < ActiveSupport::TestCase assert_not Feature.enable_lock_domain_with_new_statuses? - assert_equal @domain.statuses, ["serverUpdateProhibited", "serverDeleteProhibited", "serverTransferProhibited"] + assert_equal @domain.statuses, ["serverObjUpdateProhibited", "serverDeleteProhibited", "serverTransferProhibited"] assert @domain.locked_by_registrant? end end