Refactored EppRequestable module

This commit is contained in:
Sergei Tsoganov 2022-11-23 16:09:14 +02:00
parent 1fba3a731c
commit a55a2f922a
2 changed files with 30 additions and 28 deletions

View file

@ -2,7 +2,7 @@ module EppRequestable
extend ActiveSupport::Concern extend ActiveSupport::Concern
included do included do
before_action :validate_epp_user, only: :create # before_action :validate_epp_user, only: :create
end end
def create def create
@ -14,37 +14,37 @@ module EppRequestable
private private
def validate_epp_user # def validate_epp_user
return unless handle_hello_request # return unless handle_hello_request
handle_login_request # handle_login_request
server.close_connection # server.close_connection
rescue OpenSSL::SSL::SSLError => e # rescue OpenSSL::SSL::SSLError => e
Rails.logger.error "INVALID CERT: #{e}" # Rails.logger.error "INVALID CERT: #{e}"
Rails.logger.error "INVALID CERT DEBUG INFO: epp_hostname: #{ENV['epp_hostname']}," \ # Rails.logger.error "INVALID CERT DEBUG INFO: epp_hostname: #{ENV['epp_hostname']}," \
"port: #{ENV['epp_port']}, cert_path: #{ENV['cert_path']}, key_path: #{ENV['key_path']}" # "port: #{ENV['epp_port']}, cert_path: #{ENV['cert_path']}, key_path: #{ENV['key_path']}"
handle_non_epp_errors(nil, I18n.t('errors.messages.invalid_cert')) # handle_non_epp_errors(nil, I18n.t('errors.messages.invalid_cert'))
end # end
def handle_hello_request # def handle_hello_request
res = server.open_connection # res = server.open_connection
unless Nokogiri::XML(res).css('greeting') # unless Nokogiri::XML(res).css('greeting')
server.close_connection # just in case # server.close_connection # just in case
handle_non_epp_errors(nil, I18n.t('errors.messages.failed_epp_conn')) and return false # handle_non_epp_errors(nil, I18n.t('errors.messages.failed_epp_conn')) and return false
end # end
true # true
end # end
def handle_login_request # def handle_login_request
tag = current_user.username # tag = current_user.username
ex = EppXml::Session.new(cl_trid_prefix: tag) # ex = EppXml::Session.new(cl_trid_prefix: tag)
xml = ex.login(clID: { value: tag }, pw: { value: current_user.plain_text_password }) # xml = ex.login(clID: { value: tag }, pw: { value: current_user.plain_text_password })
res = server.send_request(xml) # res = server.send_request(xml)
return if Nokogiri::XML(res).css('result').first['code'] == '1000' # return if Nokogiri::XML(res).css('result').first['code'] == '1000'
handle_non_epp_errors(nil, Nokogiri::XML(res).css('result').text) # handle_non_epp_errors(nil, Nokogiri::XML(res).css('result').text)
end # end
def server def server
client_cert = File.read(ENV['cert_path']) client_cert = File.read(ENV['cert_path'])

View file

@ -21,7 +21,9 @@ class ReppV1RegistrarXmlConsoleTest < ActionDispatch::IntegrationTest
end end
def test_check_schema_path def test_check_schema_path
post repp_v1_registrar_xml_console_path, params: { xml_console: { payload: payload } }.to_json, @auth_headers['Content-Type'] = 'application/json'
params = { xml_console: { payload: payload } }
post repp_v1_registrar_xml_console_path, params: params.to_json,
headers: @auth_headers headers: @auth_headers
assert_response :ok assert_response :ok