From 6a878f840f07c62f5882756eac43c590204af418 Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Mon, 3 May 2021 14:51:13 +0500 Subject: [PATCH] Refactor epp error due to Rails 6.1 changes --- app/controllers/repp/v1/base_controller.rb | 2 +- app/controllers/repp/v1/domains_controller.rb | 2 +- app/interactions/actions/domain_transfer.rb | 4 ++-- app/models/concerns/epp_errors.rb | 7 ++++--- test/integration/repp/v1/domains/transfer_test.rb | 8 ++++---- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/app/controllers/repp/v1/base_controller.rb b/app/controllers/repp/v1/base_controller.rb index 53519195c4..a1ae1b0a3f 100644 --- a/app/controllers/repp/v1/base_controller.rb +++ b/app/controllers/repp/v1/base_controller.rb @@ -67,7 +67,7 @@ def handle_errors(obj = nil, update: false) @epp_errors ||= [] obj&.construct_epp_errors - @epp_errors += obj.errors[:epp_errors] if obj + @epp_errors += obj.errors.where(:epp_errors).map(&:options) if obj format_epp_errors if update @epp_errors.uniq! diff --git a/app/controllers/repp/v1/domains_controller.rb b/app/controllers/repp/v1/domains_controller.rb index b058f4505c..a4f518ba23 100644 --- a/app/controllers/repp/v1/domains_controller.rb +++ b/app/controllers/repp/v1/domains_controller.rb @@ -151,7 +151,7 @@ def initiate_transfer(transfer) @successful << { type: 'domain_transfer', domain_name: domain.name } else @errors << { type: 'domain_transfer', domain_name: domain.name, - errors: domain.errors[:epp_errors] } + errors: domain.errors.where(:epp_errors)[0].options } end end diff --git a/app/interactions/actions/domain_transfer.rb b/app/interactions/actions/domain_transfer.rb index 1ff9aafe9b..4da078d78d 100644 --- a/app/interactions/actions/domain_transfer.rb +++ b/app/interactions/actions/domain_transfer.rb @@ -13,8 +13,8 @@ def initialize(domain, transfer_code, user) end def call - return unless domain_exists? - return unless valid_transfer_code? + return false unless domain_exists? + return false unless valid_transfer_code? run_validations diff --git a/app/models/concerns/epp_errors.rb b/app/models/concerns/epp_errors.rb index d120801584..6d8ca999aa 100644 --- a/app/models/concerns/epp_errors.rb +++ b/app/models/concerns/epp_errors.rb @@ -1,5 +1,8 @@ module EppErrors extend ActiveSupport::Concern + included do + attr_accessor :epp_errors + end def construct_epp_errors epp_errors = [] @@ -19,9 +22,7 @@ def construct_epp_errors epp_errors << collect_parent_errors(attr, errors) end - - errors.add(:epp_errors, epp_errors) - errors[:epp_errors].flatten! + errors.add(:epp_errors, epp_errors) unless epp_errors.empty? end def collect_parent_errors(attr, errors) diff --git a/test/integration/repp/v1/domains/transfer_test.rb b/test/integration/repp/v1/domains/transfer_test.rb index a863950839..5854de1950 100644 --- a/test/integration/repp/v1/domains/transfer_test.rb +++ b/test/integration/repp/v1/domains/transfer_test.rb @@ -78,7 +78,7 @@ def test_does_not_transfer_domain_if_not_transferable assert_equal 1000, json[:code] assert_equal 'Command completed successfully', json[:message] - assert_equal 'Object status prohibits operation', json[:data][:failed][0][:errors][0][:msg] + assert_equal 'Object status prohibits operation', json[:data][:failed][0][:errors][:msg] @domain.reload @@ -100,7 +100,7 @@ def test_does_not_transfer_domain_with_invalid_auth_code assert_equal 1000, json[:code] assert_equal 'Command completed successfully', json[:message] - assert_equal "Invalid authorization information", json[:data][:failed][0][:errors][0][:msg] + assert_equal "Invalid authorization information", json[:data][:failed][0][:errors][:msg] end def test_does_not_transfer_domain_to_same_registrar @@ -121,7 +121,7 @@ def test_does_not_transfer_domain_to_same_registrar assert_equal 1000, json[:code] assert_equal 'Command completed successfully', json[:message] - assert_equal 'Domain already belongs to the querying registrar', json[:data][:failed][0][:errors][0][:msg] + assert_equal 'Domain already belongs to the querying registrar', json[:data][:failed][0][:errors][:msg] @domain.reload @@ -146,7 +146,7 @@ def test_does_not_transfer_domain_if_discarded assert_equal 1000, json[:code] assert_equal 'Command completed successfully', json[:message] - assert_equal 'Object is not eligible for transfer', json[:data][:failed][0][:errors][0][:msg] + assert_equal 'Object is not eligible for transfer', json[:data][:failed][0][:errors][:msg] @domain.reload