From 1cc6f2576fae44abf0cb62e70db1c207b7b92610 Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Thu, 8 Apr 2021 11:10:14 +0300 Subject: [PATCH] added tests --- app/controllers/admin/domains_controller.rb | 2 +- .../concerns/domain/registry_lockable.rb | 1 - app/models/domain.rb | 11 +++--- ...domain_statuses_to_admin_status_history.rb | 13 +++++++ db/data_schema.rb | 2 +- test/models/domain/registry_lockable_test.rb | 35 ++++++++++++++++++- 6 files changed, 55 insertions(+), 9 deletions(-) create mode 100644 db/data/20210407140317_transfer_data_from_domain_statuses_to_admin_status_history.rb diff --git a/app/controllers/admin/domains_controller.rb b/app/controllers/admin/domains_controller.rb index 17d1d5e1a..3e2d78671 100644 --- a/app/controllers/admin/domains_controller.rb +++ b/app/controllers/admin/domains_controller.rb @@ -53,7 +53,7 @@ module Admin dp = ignore_empty_statuses @domain.is_admin = true @domain.admin_status_update dp[:statuses] - + if @domain.update(dp) flash[:notice] = I18n.t('domain_updated') redirect_to [:admin, @domain] diff --git a/app/models/concerns/domain/registry_lockable.rb b/app/models/concerns/domain/registry_lockable.rb index 6d8a478fa..4f9340aaf 100644 --- a/app/models/concerns/domain/registry_lockable.rb +++ b/app/models/concerns/domain/registry_lockable.rb @@ -40,7 +40,6 @@ module Domain::RegistryLockable end self.locked_by_registrant_at = nil self.statuses = admin_store_statuses_history || [] - admin_store_statuses_history = nil alert_registrar_lock_changes!(lock: false) save! diff --git a/app/models/domain.rb b/app/models/domain.rb index 73240c8b4..e1e977761 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -12,6 +12,10 @@ class Domain < ApplicationRecord include Domain::Disputable include Domain::BulkUpdatable + LOCK_STATUSES = [DomainStatus::SERVER_UPDATE_PROHIBITED, + DomainStatus::SERVER_DELETE_PROHIBITED, + DomainStatus::SERVER_TRANSFER_PROHIBITED].freeze + attr_accessor :roles attr_accessor :legal_document_id @@ -557,17 +561,14 @@ class Domain < ApplicationRecord # special handling for admin changing status def admin_status_update(update) - lock_statuses = [DomainStatus::SERVER_UPDATE_PROHIBITED, - DomainStatus::SERVER_DELETE_PROHIBITED, - DomainStatus::SERVER_TRANSFER_PROHIBITED] # check for deleted status update(admin_store_statuses_history: update) unless locked_by_registrant? if locked_by_registrant? - result = update.reject { |status| lock_statuses.include? status } + result = update.reject { |status| LOCK_STATUSES.include? status } update(admin_store_statuses_history: result) - end + statuses.each do |s| unless update.include? s case s diff --git a/db/data/20210407140317_transfer_data_from_domain_statuses_to_admin_status_history.rb b/db/data/20210407140317_transfer_data_from_domain_statuses_to_admin_status_history.rb new file mode 100644 index 000000000..f1c390a61 --- /dev/null +++ b/db/data/20210407140317_transfer_data_from_domain_statuses_to_admin_status_history.rb @@ -0,0 +1,13 @@ +class TransferDataFromDomainStatusesToAdminStatusHistory < ActiveRecord::Migration[6.0] + def up + domains = Domain.all.select { |d| !d.locked_by_registrant?} + domains.each do |domain| + domain.admin_store_statuses_history = domain.statuses + domain.save + end + end + + def down + # raise ActiveRecord::IrreversibleMigration + end +end diff --git a/db/data_schema.rb b/db/data_schema.rb index 829a6cb26..15f126bd9 100644 --- a/db/data_schema.rb +++ b/db/data_schema.rb @@ -1,2 +1,2 @@ # encoding: UTF-8 -DataMigrate::Data.define(version: 20210406083149) +DataMigrate::Data.define(version: 20210407140317) diff --git a/test/models/domain/registry_lockable_test.rb b/test/models/domain/registry_lockable_test.rb index 32973a679..82770d0eb 100644 --- a/test/models/domain/registry_lockable_test.rb +++ b/test/models/domain/registry_lockable_test.rb @@ -3,7 +3,6 @@ require 'test_helper' class DomainRegistryLockableTest < ActiveSupport::TestCase def setup super - @domain = domains(:airport) end @@ -33,6 +32,24 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase assert_not(@domain.locked_by_registrant?) end + def test_remove_lockalable_statuses_after_admin_intervention + @domain.apply_registry_lock + assert @domain.locked_by_registrant? + assert_equal @domain.statuses.sort, Domain::RegistryLockable::LOCK_STATUSES.sort + + deleted_status = @domain.statuses - [DomainStatus::SERVER_DELETE_PROHIBITED] + @domain.update(statuses: deleted_status) + assert_not @domain.locked_by_registrant? + + @domain.apply_registry_lock + 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_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] @@ -49,6 +66,22 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase assert_not @domain.statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED end + def test_add_additinal_status_for_locked_domain + @domain.apply_registry_lock + assert @domain.locked_by_registrant? + assert_equal @domain.statuses.sort, Domain::RegistryLockable::LOCK_STATUSES.sort + + @domain.statuses += [DomainStatus::SERVER_RENEW_PROHIBITED] + @domain.admin_store_statuses_history = [DomainStatus::SERVER_RENEW_PROHIBITED] + @domain.save + + @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_TRANSFER_PROHIBITED + assert_not @domain.statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED + end + def test_registry_lock_on_lockable_domain refute(@domain.locked_by_registrant?) @domain.apply_registry_lock