From b066b144e09e3e761c7ee68dc18ca611796e77dd Mon Sep 17 00:00:00 2001 From: olegphenomenon Date: Wed, 20 Oct 2021 15:49:00 +0300 Subject: [PATCH 1/3] added condition for remove hold status if domain are renew --- app/models/epp/domain.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index d434c843c..397a55f7a 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -187,7 +187,7 @@ class Epp::Domain < Domain self.period = period self.period_unit = unit - statuses.delete(DomainStatus::SERVER_HOLD) + statuses.delete(DomainStatus::SERVER_HOLD) if self.status_notes["serverHold"].empty? statuses.delete(DomainStatus::EXPIRED) cancel_pending_delete From b2a830981b85acc496635e55cbdc081deaa7f9ad Mon Sep 17 00:00:00 2001 From: olegphenomenon Date: Wed, 20 Oct 2021 16:01:41 +0300 Subject: [PATCH 2/3] refactored --- app/models/epp/domain.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index 397a55f7a..8e1da51b8 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -187,7 +187,7 @@ class Epp::Domain < Domain self.period = period self.period_unit = unit - statuses.delete(DomainStatus::SERVER_HOLD) if self.status_notes["serverHold"].empty? + statuses.delete(DomainStatus::SERVER_HOLD) if self.status_notes["serverHold"].nil? || self.status_notes["serverHold"].empty? statuses.delete(DomainStatus::EXPIRED) cancel_pending_delete From 9c90fd4b918a5bd0328ff6dc1969bc1f20974a56 Mon Sep 17 00:00:00 2001 From: olegphenomenon Date: Thu, 21 Oct 2021 10:30:19 +0300 Subject: [PATCH 3/3] refactored condition and added tests --- app/models/epp/domain.rb | 2 +- .../integration/epp/domain/renew/base_test.rb | 72 +++++++++++++++++++ 2 files changed, 73 insertions(+), 1 deletion(-) diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index 8e1da51b8..c6589b63d 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -187,7 +187,7 @@ class Epp::Domain < Domain self.period = period self.period_unit = unit - statuses.delete(DomainStatus::SERVER_HOLD) if self.status_notes["serverHold"].nil? || self.status_notes["serverHold"].empty? + statuses.delete(DomainStatus::SERVER_HOLD) if self.status_notes["serverHold"].blank? statuses.delete(DomainStatus::EXPIRED) cancel_pending_delete diff --git a/test/integration/epp/domain/renew/base_test.rb b/test/integration/epp/domain/renew/base_test.rb index 68d4f7d2a..0c573bc8d 100644 --- a/test/integration/epp/domain/renew/base_test.rb +++ b/test/integration/epp/domain/renew/base_test.rb @@ -70,6 +70,78 @@ class EppDomainRenewBaseTest < EppTestCase assert domain.statuses.include? DomainStatus::SERVER_UPDATE_PROHIBITED end + def test_domain_renew_if_hold_status_has_notes + travel_to Time.zone.parse('2010-07-05') + domain = domains(:shop) + original_valid_to = domain.valid_to + default_renewal_period = 1.year + domain.statuses << DomainStatus::SERVER_HOLD + domain.status_notes["serverHold"] = "test" + domain.save + + request_xml = <<-XML + + + + + + #{domain.name} + #{domain.expire_time.to_date} + 1 + + + + + XML + + post epp_renew_path, params: { frame: request_xml }, + headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } + response_xml = Nokogiri::XML(response.body) + assert_correct_against_schema response_xml + + domain.reload + + assert_epp_response :completed_successfully + assert_equal original_valid_to + default_renewal_period, domain.valid_to + assert domain.statuses.include? DomainStatus::SERVER_HOLD + end + + def test_domain_renew_if_hold_status_do_not_has_notes + travel_to Time.zone.parse('2010-07-05') + domain = domains(:shop) + original_valid_to = domain.valid_to + default_renewal_period = 1.year + domain.statuses << DomainStatus::SERVER_HOLD + domain.status_notes["serverHold"] = "" + domain.save + + request_xml = <<-XML + + + + + + #{domain.name} + #{domain.expire_time.to_date} + 1 + + + + + XML + + post epp_renew_path, params: { frame: request_xml }, + headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } + response_xml = Nokogiri::XML(response.body) + assert_correct_against_schema response_xml + + domain.reload + + assert_epp_response :completed_successfully + assert_equal original_valid_to + default_renewal_period, domain.valid_to + assert_not domain.statuses.include? DomainStatus::SERVER_HOLD + end + def test_domain_cannot_be_renewed_when_invalid domain = domains(:invalid)