diff --git a/app/controllers/repp/v1/base_controller.rb b/app/controllers/repp/v1/base_controller.rb index 53519195c..a1ae1b0a3 100644 --- a/app/controllers/repp/v1/base_controller.rb +++ b/app/controllers/repp/v1/base_controller.rb @@ -67,7 +67,7 @@ module Repp @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 b058f4505..a4f518ba2 100644 --- a/app/controllers/repp/v1/domains_controller.rb +++ b/app/controllers/repp/v1/domains_controller.rb @@ -151,7 +151,7 @@ module Repp @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 1ff9aafe9..4da078d78 100644 --- a/app/interactions/actions/domain_transfer.rb +++ b/app/interactions/actions/domain_transfer.rb @@ -13,8 +13,8 @@ module Actions 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 d12080158..6d8ca999a 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 @@ module EppErrors 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 a86395083..5854de195 100644 --- a/test/integration/repp/v1/domains/transfer_test.rb +++ b/test/integration/repp/v1/domains/transfer_test.rb @@ -78,7 +78,7 @@ class ReppV1DomainsTransferTest < ActionDispatch::IntegrationTest 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 @@ class ReppV1DomainsTransferTest < ActionDispatch::IntegrationTest 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 @@ class ReppV1DomainsTransferTest < ActionDispatch::IntegrationTest 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 @@ class ReppV1DomainsTransferTest < ActionDispatch::IntegrationTest 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