From d6ecf3558d52a600d4179a4eba1dbe7ab629768c Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Tue, 16 Mar 2021 16:44:20 +0200 Subject: [PATCH 01/12] Tests: added tests lockable behaviour if status was removed and if status will be added --- test/models/domain/registry_lockable_test.rb | 37 ++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/test/models/domain/registry_lockable_test.rb b/test/models/domain/registry_lockable_test.rb index cadef69d2..65b403795 100644 --- a/test/models/domain/registry_lockable_test.rb +++ b/test/models/domain/registry_lockable_test.rb @@ -7,6 +7,32 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase @domain = domains(:airport) end + def test_user_can_set_lock_for_domain_if_it_has_any_prohibited_status + refute(@domain.locked_by_registrant?) + @domain.update(statuses: [DomainStatus::SERVER_TRANSFER_PROHIBITED]) + + @domain.apply_registry_lock #Raise validation error + + check_statuses_lockable_domain + assert(@domain.locked_by_registrant?) + end + + def test_lockable_domain_if_remove_some_prohibited_status + refute(@domain.locked_by_registrant?) + @domain.apply_registry_lock + check_statuses_lockable_domain + assert(@domain.locked_by_registrant?) + + statuses = @domain.statuses - [DomainStatus::SERVER_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(@domain.locked_by_registrant?) + end + def test_registry_lock_on_lockable_domain refute(@domain.locked_by_registrant?) @domain.apply_registry_lock @@ -69,4 +95,15 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase refute(@domain.remove_registry_lock) end + + private + + def check_statuses_lockable_domain + assert_equal( + [DomainStatus::SERVER_UPDATE_PROHIBITED, + DomainStatus::SERVER_DELETE_PROHIBITED, + DomainStatus::SERVER_TRANSFER_PROHIBITED], + @domain.statuses + ) + end end From 1c50c73d45f912e46a0bf498ad782ea5864fbcbe Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Wed, 31 Mar 2021 15:10:31 +0300 Subject: [PATCH 02/12] fixed registry lock issue --- app/models/concerns/domain/registry_lockable.rb | 15 ++++++++++++--- test/models/domain/registry_lockable_test.rb | 14 +++++++------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/app/models/concerns/domain/registry_lockable.rb b/app/models/concerns/domain/registry_lockable.rb index 2e80b7dda..03e884bda 100644 --- a/app/models/concerns/domain/registry_lockable.rb +++ b/app/models/concerns/domain/registry_lockable.rb @@ -6,9 +6,18 @@ module Domain::RegistryLockable return if locked_by_registrant? transaction do - statuses << DomainStatus::SERVER_UPDATE_PROHIBITED - statuses << DomainStatus::SERVER_DELETE_PROHIBITED - statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED + if !statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED + statuses << DomainStatus::SERVER_UPDATE_PROHIBITED + end + + if !statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED + statuses << DomainStatus::SERVER_DELETE_PROHIBITED + end + + if !statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED + statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED + end + self.locked_by_registrant_at = Time.zone.now alert_registrar_lock_changes!(lock: true) diff --git a/test/models/domain/registry_lockable_test.rb b/test/models/domain/registry_lockable_test.rb index 65b403795..94314c592 100644 --- a/test/models/domain/registry_lockable_test.rb +++ b/test/models/domain/registry_lockable_test.rb @@ -30,7 +30,7 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase assert @domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED assert_not @domain.statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED - assert(@domain.locked_by_registrant?) + assert_not(@domain.locked_by_registrant?) end def test_registry_lock_on_lockable_domain @@ -99,11 +99,11 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase private def check_statuses_lockable_domain - assert_equal( - [DomainStatus::SERVER_UPDATE_PROHIBITED, - DomainStatus::SERVER_DELETE_PROHIBITED, - DomainStatus::SERVER_TRANSFER_PROHIBITED], - @domain.statuses - ) + lock_statuses = [DomainStatus::SERVER_UPDATE_PROHIBITED, + DomainStatus::SERVER_DELETE_PROHIBITED, + DomainStatus::SERVER_TRANSFER_PROHIBITED] + + @domain.statuses.include? lock_statuses + end end From 90e5c18c0a7b88d0ddd42d07d032231e45357185 Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Thu, 1 Apr 2021 10:24:51 +0300 Subject: [PATCH 03/12] refactoring: change if to unless, removed extra spaces --- app/models/concerns/domain/registry_lockable.rb | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/models/concerns/domain/registry_lockable.rb b/app/models/concerns/domain/registry_lockable.rb index 03e884bda..a4ffeb7ef 100644 --- a/app/models/concerns/domain/registry_lockable.rb +++ b/app/models/concerns/domain/registry_lockable.rb @@ -6,18 +6,17 @@ module Domain::RegistryLockable return if locked_by_registrant? transaction do - if !statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED + unless statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED statuses << DomainStatus::SERVER_UPDATE_PROHIBITED end - if !statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED + unless statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED statuses << DomainStatus::SERVER_DELETE_PROHIBITED end - if !statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED + unless statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED end - self.locked_by_registrant_at = Time.zone.now alert_registrar_lock_changes!(lock: true) From 35d8f7d10a6eb3406f8ab3fa7cde208467328e95 Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Thu, 1 Apr 2021 10:54:56 +0300 Subject: [PATCH 04/12] refactoring: revert --- app/models/concerns/domain/registry_lockable.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/models/concerns/domain/registry_lockable.rb b/app/models/concerns/domain/registry_lockable.rb index a4ffeb7ef..03e884bda 100644 --- a/app/models/concerns/domain/registry_lockable.rb +++ b/app/models/concerns/domain/registry_lockable.rb @@ -6,17 +6,18 @@ module Domain::RegistryLockable return if locked_by_registrant? transaction do - unless statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED + if !statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED statuses << DomainStatus::SERVER_UPDATE_PROHIBITED end - unless statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED + if !statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED statuses << DomainStatus::SERVER_DELETE_PROHIBITED end - unless statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED + if !statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED end + self.locked_by_registrant_at = Time.zone.now alert_registrar_lock_changes!(lock: true) From 98ff01b7aaa6fa4f178fca4e1ab0de9740e71482 Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Thu, 1 Apr 2021 11:01:51 +0300 Subject: [PATCH 05/12] refactoring: revert --- app/models/concerns/domain/registry_lockable.rb | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/models/concerns/domain/registry_lockable.rb b/app/models/concerns/domain/registry_lockable.rb index 03e884bda..a4ffeb7ef 100644 --- a/app/models/concerns/domain/registry_lockable.rb +++ b/app/models/concerns/domain/registry_lockable.rb @@ -6,18 +6,17 @@ module Domain::RegistryLockable return if locked_by_registrant? transaction do - if !statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED + unless statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED statuses << DomainStatus::SERVER_UPDATE_PROHIBITED end - if !statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED + unless statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED statuses << DomainStatus::SERVER_DELETE_PROHIBITED end - if !statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED + unless statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED end - self.locked_by_registrant_at = Time.zone.now alert_registrar_lock_changes!(lock: true) From ac542a1644f2f6db93880fa0de9e228f28f9f223 Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Tue, 16 Mar 2021 16:44:20 +0200 Subject: [PATCH 06/12] Tests: added tests lockable behaviour if status was removed and if status will be added --- test/models/domain/registry_lockable_test.rb | 37 ++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/test/models/domain/registry_lockable_test.rb b/test/models/domain/registry_lockable_test.rb index cadef69d2..65b403795 100644 --- a/test/models/domain/registry_lockable_test.rb +++ b/test/models/domain/registry_lockable_test.rb @@ -7,6 +7,32 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase @domain = domains(:airport) end + def test_user_can_set_lock_for_domain_if_it_has_any_prohibited_status + refute(@domain.locked_by_registrant?) + @domain.update(statuses: [DomainStatus::SERVER_TRANSFER_PROHIBITED]) + + @domain.apply_registry_lock #Raise validation error + + check_statuses_lockable_domain + assert(@domain.locked_by_registrant?) + end + + def test_lockable_domain_if_remove_some_prohibited_status + refute(@domain.locked_by_registrant?) + @domain.apply_registry_lock + check_statuses_lockable_domain + assert(@domain.locked_by_registrant?) + + statuses = @domain.statuses - [DomainStatus::SERVER_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(@domain.locked_by_registrant?) + end + def test_registry_lock_on_lockable_domain refute(@domain.locked_by_registrant?) @domain.apply_registry_lock @@ -69,4 +95,15 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase refute(@domain.remove_registry_lock) end + + private + + def check_statuses_lockable_domain + assert_equal( + [DomainStatus::SERVER_UPDATE_PROHIBITED, + DomainStatus::SERVER_DELETE_PROHIBITED, + DomainStatus::SERVER_TRANSFER_PROHIBITED], + @domain.statuses + ) + end end From 02b706097cfffc9d470d3c81fd60633943359ead Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Wed, 31 Mar 2021 15:10:31 +0300 Subject: [PATCH 07/12] fixed registry lock issue --- app/models/concerns/domain/registry_lockable.rb | 15 ++++++++++++--- test/models/domain/registry_lockable_test.rb | 14 +++++++------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/app/models/concerns/domain/registry_lockable.rb b/app/models/concerns/domain/registry_lockable.rb index 2e80b7dda..03e884bda 100644 --- a/app/models/concerns/domain/registry_lockable.rb +++ b/app/models/concerns/domain/registry_lockable.rb @@ -6,9 +6,18 @@ module Domain::RegistryLockable return if locked_by_registrant? transaction do - statuses << DomainStatus::SERVER_UPDATE_PROHIBITED - statuses << DomainStatus::SERVER_DELETE_PROHIBITED - statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED + if !statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED + statuses << DomainStatus::SERVER_UPDATE_PROHIBITED + end + + if !statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED + statuses << DomainStatus::SERVER_DELETE_PROHIBITED + end + + if !statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED + statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED + end + self.locked_by_registrant_at = Time.zone.now alert_registrar_lock_changes!(lock: true) diff --git a/test/models/domain/registry_lockable_test.rb b/test/models/domain/registry_lockable_test.rb index 65b403795..94314c592 100644 --- a/test/models/domain/registry_lockable_test.rb +++ b/test/models/domain/registry_lockable_test.rb @@ -30,7 +30,7 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase assert @domain.statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED assert_not @domain.statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED - assert(@domain.locked_by_registrant?) + assert_not(@domain.locked_by_registrant?) end def test_registry_lock_on_lockable_domain @@ -99,11 +99,11 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase private def check_statuses_lockable_domain - assert_equal( - [DomainStatus::SERVER_UPDATE_PROHIBITED, - DomainStatus::SERVER_DELETE_PROHIBITED, - DomainStatus::SERVER_TRANSFER_PROHIBITED], - @domain.statuses - ) + lock_statuses = [DomainStatus::SERVER_UPDATE_PROHIBITED, + DomainStatus::SERVER_DELETE_PROHIBITED, + DomainStatus::SERVER_TRANSFER_PROHIBITED] + + @domain.statuses.include? lock_statuses + end end From f63095a80217037ecc217db415c8a5e3a866801d Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Thu, 1 Apr 2021 10:24:51 +0300 Subject: [PATCH 08/12] refactoring: change if to unless, removed extra spaces --- app/models/concerns/domain/registry_lockable.rb | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/models/concerns/domain/registry_lockable.rb b/app/models/concerns/domain/registry_lockable.rb index 03e884bda..a4ffeb7ef 100644 --- a/app/models/concerns/domain/registry_lockable.rb +++ b/app/models/concerns/domain/registry_lockable.rb @@ -6,18 +6,17 @@ module Domain::RegistryLockable return if locked_by_registrant? transaction do - if !statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED + unless statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED statuses << DomainStatus::SERVER_UPDATE_PROHIBITED end - if !statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED + unless statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED statuses << DomainStatus::SERVER_DELETE_PROHIBITED end - if !statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED + unless statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED end - self.locked_by_registrant_at = Time.zone.now alert_registrar_lock_changes!(lock: true) From 87c16dec77a7fd4fe6ec73840ff83f2773267baa Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Thu, 1 Apr 2021 10:54:56 +0300 Subject: [PATCH 09/12] refactoring: revert --- app/models/concerns/domain/registry_lockable.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/models/concerns/domain/registry_lockable.rb b/app/models/concerns/domain/registry_lockable.rb index a4ffeb7ef..03e884bda 100644 --- a/app/models/concerns/domain/registry_lockable.rb +++ b/app/models/concerns/domain/registry_lockable.rb @@ -6,17 +6,18 @@ module Domain::RegistryLockable return if locked_by_registrant? transaction do - unless statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED + if !statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED statuses << DomainStatus::SERVER_UPDATE_PROHIBITED end - unless statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED + if !statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED statuses << DomainStatus::SERVER_DELETE_PROHIBITED end - unless statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED + if !statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED end + self.locked_by_registrant_at = Time.zone.now alert_registrar_lock_changes!(lock: true) From f9179dc3f17b28c6585610aae2e0fd7072010a08 Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Thu, 1 Apr 2021 11:01:51 +0300 Subject: [PATCH 10/12] refactoring: revert --- app/models/concerns/domain/registry_lockable.rb | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/models/concerns/domain/registry_lockable.rb b/app/models/concerns/domain/registry_lockable.rb index 03e884bda..a4ffeb7ef 100644 --- a/app/models/concerns/domain/registry_lockable.rb +++ b/app/models/concerns/domain/registry_lockable.rb @@ -6,18 +6,17 @@ module Domain::RegistryLockable return if locked_by_registrant? transaction do - if !statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED + unless statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED statuses << DomainStatus::SERVER_UPDATE_PROHIBITED end - if !statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED + unless statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED statuses << DomainStatus::SERVER_DELETE_PROHIBITED end - if !statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED + unless statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED end - self.locked_by_registrant_at = Time.zone.now alert_registrar_lock_changes!(lock: true) From 6b7c51a347cfbfeb4bab330bbf0ba0dac3ecdf72 Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Thu, 1 Apr 2021 13:43:18 +0300 Subject: [PATCH 11/12] refactoring: shortened the code --- .../concerns/domain/registry_lockable.rb | 28 ++++++------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/app/models/concerns/domain/registry_lockable.rb b/app/models/concerns/domain/registry_lockable.rb index a4ffeb7ef..450483f36 100644 --- a/app/models/concerns/domain/registry_lockable.rb +++ b/app/models/concerns/domain/registry_lockable.rb @@ -1,22 +1,16 @@ module Domain::RegistryLockable extend ActiveSupport::Concern + LOCK_STATUSES = [DomainStatus::SERVER_UPDATE_PROHIBITED, + DomainStatus::SERVER_DELETE_PROHIBITED, + DomainStatus::SERVER_TRANSFER_PROHIBITED] + def apply_registry_lock return unless registry_lockable? return if locked_by_registrant? transaction do - unless statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED - statuses << DomainStatus::SERVER_UPDATE_PROHIBITED - end - - unless statuses.include? DomainStatus::SERVER_DELETE_PROHIBITED - statuses << DomainStatus::SERVER_DELETE_PROHIBITED - end - - unless statuses.include? DomainStatus::SERVER_TRANSFER_PROHIBITED - statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED - end + self.statuses |= LOCK_STATUSES self.locked_by_registrant_at = Time.zone.now alert_registrar_lock_changes!(lock: true) @@ -34,20 +28,16 @@ module Domain::RegistryLockable def locked_by_registrant? return false unless locked_by_registrant_at - lock_statuses = [DomainStatus::SERVER_UPDATE_PROHIBITED, - DomainStatus::SERVER_DELETE_PROHIBITED, - DomainStatus::SERVER_TRANSFER_PROHIBITED] - - (statuses & lock_statuses).count == 3 + (statuses & LOCK_STATUSES).count == 3 end def remove_registry_lock return unless locked_by_registrant? transaction do - statuses.delete(DomainStatus::SERVER_UPDATE_PROHIBITED) - statuses.delete(DomainStatus::SERVER_DELETE_PROHIBITED) - statuses.delete(DomainStatus::SERVER_TRANSFER_PROHIBITED) + LOCK_STATUSES.each do |domain_status| + statuses.delete(domain_status) + end self.locked_by_registrant_at = nil alert_registrar_lock_changes!(lock: false) From 137e2a3170a4b0a90c10a0f61201ccb6d7e1526c Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Thu, 1 Apr 2021 13:47:58 +0300 Subject: [PATCH 12/12] refactoring: changed constants format --- app/models/concerns/domain/registry_lockable.rb | 4 ++-- test/models/domain/registry_lockable_test.rb | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/models/concerns/domain/registry_lockable.rb b/app/models/concerns/domain/registry_lockable.rb index 450483f36..2c0f5c0fe 100644 --- a/app/models/concerns/domain/registry_lockable.rb +++ b/app/models/concerns/domain/registry_lockable.rb @@ -2,8 +2,8 @@ module Domain::RegistryLockable extend ActiveSupport::Concern LOCK_STATUSES = [DomainStatus::SERVER_UPDATE_PROHIBITED, - DomainStatus::SERVER_DELETE_PROHIBITED, - DomainStatus::SERVER_TRANSFER_PROHIBITED] + DomainStatus::SERVER_DELETE_PROHIBITED, + DomainStatus::SERVER_TRANSFER_PROHIBITED].freeze def apply_registry_lock return unless registry_lockable? diff --git a/test/models/domain/registry_lockable_test.rb b/test/models/domain/registry_lockable_test.rb index 94314c592..6e4a1826c 100644 --- a/test/models/domain/registry_lockable_test.rb +++ b/test/models/domain/registry_lockable_test.rb @@ -104,6 +104,5 @@ class DomainRegistryLockableTest < ActiveSupport::TestCase DomainStatus::SERVER_TRANSFER_PROHIBITED] @domain.statuses.include? lock_statuses - end end