From 29897043b0ace80ffa438d123a8b4c97a7f7ac7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karl=20Erik=20=C3=95unapuu?= Date: Mon, 28 Sep 2020 14:57:52 +0300 Subject: [PATCH] Renew: Attach uneligibility reason --- app/models/domain.rb | 16 ++++++++++------ app/models/epp/domain.rb | 12 +++++++++++- test/integration/epp/domain/renew/base_test.rb | 2 +- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/app/models/domain.rb b/app/models/domain.rb index 41fa29144..679669728 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -306,12 +306,7 @@ class Domain < ApplicationRecord end def renewable? - disallowed = [DomainStatus::DELETE_CANDIDATE, DomainStatus::PENDING_RENEW, - DomainStatus::PENDING_TRANSFER, DomainStatus::CLIENT_RENEW_PROHIBITED, - DomainStatus::PENDING_UPDATE, DomainStatus::PENDING_DELETE, - DomainStatus::PENDING_DELETE_CONFIRMATION, DomainStatus::SERVER_RENEW_PROHIBITED] - - return false unless (statuses & disallowed).empty? + return false unless renew_blocking_statuses.empty? return true unless Setting.days_to_renew_domain_before_expire != 0 # if you can renew domain at days_to_renew before domain expiration @@ -322,6 +317,15 @@ class Domain < ApplicationRecord true end + def renew_blocking_statuses + disallowed = [DomainStatus::DELETE_CANDIDATE, DomainStatus::PENDING_RENEW, + DomainStatus::PENDING_TRANSFER, DomainStatus::CLIENT_RENEW_PROHIBITED, + DomainStatus::PENDING_UPDATE, DomainStatus::PENDING_DELETE, + DomainStatus::PENDING_DELETE_CONFIRMATION, DomainStatus::SERVER_RENEW_PROHIBITED] + + (statuses & disallowed) + end + def notify_registrar(message_key) registrar.notifications.create!( text: "#{I18n.t(message_key)}: #{name}", diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index 3ed26f0e1..530e54a0f 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -581,11 +581,14 @@ class Epp::Domain < Domain save(validate: false) end + ### RENEW ### + def renew(cur_exp_date, period, unit = 'y') @is_renewal = true validate_exp_dates(cur_exp_date) - add_epp_error('2105', nil, nil, I18n.t('object_is_not_eligible_for_renewal')) unless renewable? + add_renew_epp_errors unless renewable? + return false if errors.any? period = period.to_i @@ -613,6 +616,13 @@ class Epp::Domain < Domain save end + def add_renew_epp_errors + if renew_blocking_statuses.any? && !renewable? + add_epp_error('2304', 'status', renew_blocking_statuses, + I18n.t('object_status_prohibits_operation')) + end + end + ### TRANSFER ### def transfer(frame, action, current_user) diff --git a/test/integration/epp/domain/renew/base_test.rb b/test/integration/epp/domain/renew/base_test.rb index be53ca7a7..9a61e1470 100644 --- a/test/integration/epp/domain/renew/base_test.rb +++ b/test/integration/epp/domain/renew/base_test.rb @@ -196,7 +196,7 @@ class EppDomainRenewBaseTest < EppTestCase headers: { 'HTTP_COOKIE' => 'session=api_bestnames' } domain.reload - assert_epp_response :object_is_not_eligible_for_renewal + assert_epp_response :object_status_prohibits_operation assert_equal original_valid_to, domain.valid_to end end