diff --git a/app/controllers/concerns/epp/common.rb b/app/controllers/concerns/epp/common.rb index f9b68255b..2c122d6cf 100644 --- a/app/controllers/concerns/epp/common.rb +++ b/app/controllers/concerns/epp/common.rb @@ -121,7 +121,6 @@ module Epp::Common def write_to_epp_log request_object = OBJECT_TYPES[params_hash['epp']['xmlns:ns2']] if params[:frame] - ApiLog::EppLog.create!({ request: params[:frame], request_command: params[:command], diff --git a/app/helpers/epp/contacts_helper.rb b/app/helpers/epp/contacts_helper.rb index 702efa5ee..ff277b86c 100644 --- a/app/helpers/epp/contacts_helper.rb +++ b/app/helpers/epp/contacts_helper.rb @@ -2,7 +2,7 @@ module Epp::ContactsHelper def create_contact @contact = Contact.new(contact_and_address_attributes) @contact.registrar = current_epp_user.registrar - render '/epp/contacts/create' and return if stamp(@contact) && @contact.save + render_epp_response '/epp/contacts/create' and return if stamp(@contact) && @contact.save handle_errors(@contact) end @@ -12,7 +12,7 @@ module Epp::ContactsHelper @contact = Contact.where(code: code).first # if update_rights? && stamp(@contact) && @contact.update_attributes(contact_and_address_attributes(:update)) if owner? && stamp(@contact) && @contact.update_attributes(contact_and_address_attributes(:update)) - render 'epp/contacts/update' + render_epp_response 'epp/contacts/update' else contact_exists?(code) handle_errors(@contact) and return @@ -26,14 +26,14 @@ module Epp::ContactsHelper handle_errors(@contact) and return unless @contact handle_errors(@contact) and return unless @contact.destroy_and_clean - render '/epp/contacts/delete' + render_epp_response '/epp/contacts/delete' end # rubocop:enable Metrics/CyclomaticComplexity def check_contact ph = params_hash['epp']['command']['check']['check'] @contacts = Contact.check_availability(ph[:id]) - render '/epp/contacts/check' + render_epp_response '/epp/contacts/check' end def info_contact @@ -42,7 +42,7 @@ module Epp::ContactsHelper @disclosure = ContactDisclosure.default_values.merge(@contact.disclosure.try(:as_hash) || {}) @disclosure_policy = @contact.disclosure.try(:attributes_with_flag) @owner = owner?(false) - render 'epp/contacts/info' + render_epp_response 'epp/contacts/info' end def renew_contact diff --git a/app/helpers/epp/keyrelay_helper.rb b/app/helpers/epp/keyrelay_helper.rb index d5ffbadd6..925a4876f 100644 --- a/app/helpers/epp/keyrelay_helper.rb +++ b/app/helpers/epp/keyrelay_helper.rb @@ -10,7 +10,7 @@ module Epp::KeyrelayHelper handle_errors(@domain) and return unless @domain.authenticate(parsed_frame.css('pw').text) handle_errors(@domain) and return unless @domain.keyrelay(parsed_frame, current_epp_user.registrar) - render '/epp/shared/success' + render_epp_response '/epp/shared/success' end private diff --git a/app/helpers/epp/poll_helper.rb b/app/helpers/epp/poll_helper.rb index f13fd81f8..8f0d17a22 100644 --- a/app/helpers/epp/poll_helper.rb +++ b/app/helpers/epp/poll_helper.rb @@ -6,18 +6,16 @@ module Epp::PollHelper def req_poll @message = current_epp_user.queued_messages.last - render 'epp/poll/poll_no_messages' and return unless @message + render_epp_response 'epp/poll/poll_no_messages' and return unless @message if @message.attached_obj_type && @message.attached_obj_id @object = Object.const_get(@message.attached_obj_type).find(@message.attached_obj_id) end if @message.attached_obj_type == 'Keyrelay' - @response = render_to_string('epp/poll/poll_keyrelay') - render xml: @response - # render 'epp/poll/poll_keyrelay' + render_epp_response 'epp/poll/poll_keyrelay' else - render 'epp/poll/poll_req' + render_epp_response 'epp/poll/poll_req' end end @@ -34,7 +32,7 @@ module Epp::PollHelper end handle_errors(@message) and return unless @message.dequeue - render 'epp/poll/poll_ack' + render_epp_response 'epp/poll/poll_ack' end private diff --git a/spec/epp/contact_spec.rb b/spec/epp/contact_spec.rb index 8b247aab5..84cdad784 100644 --- a/spec/epp/contact_spec.rb +++ b/spec/epp/contact_spec.rb @@ -78,6 +78,30 @@ describe 'EPP Contact', epp: true do expect(Contact.first.ident).to eq '37605030299' expect(Contact.first.address.street).to eq('123 Example') + + log = ApiLog::EppLog.all + + expect(log.length).to eq(4) + expect(log[0].request_command).to eq('hello') + expect(log[0].request_successful).to eq(true) + + expect(log[1].request_command).to eq('login') + expect(log[1].request_successful).to eq(true) + expect(log[1].api_user_name).to eq('zone') + expect(log[1].api_user_registrar).to eq('Registrar OÜ') + + expect(log[2].request_command).to eq('create') + expect(log[2].request_object).to eq('contact') + expect(log[2].request_successful).to eq(true) + expect(log[2].api_user_name).to eq('zone') + expect(log[2].api_user_registrar).to eq('Registrar OÜ') + expect(log[2].request).not_to be_blank + expect(log[2].response).not_to be_blank + + expect(log[3].request_command).to eq('logout') + expect(log[3].request_successful).to eq(true) + expect(log[3].api_user_name).to eq('zone') + expect(log[3].api_user_registrar).to eq('Registrar OÜ') end it 'successfully adds registrar' do diff --git a/spec/epp/keyrelay_spec.rb b/spec/epp/keyrelay_spec.rb index 5c883eb74..9962a19a1 100644 --- a/spec/epp/keyrelay_spec.rb +++ b/spec/epp/keyrelay_spec.rb @@ -39,6 +39,30 @@ describe 'EPP Keyrelay', epp: true do expect(response[:result_code]).to eq('1000') expect(zone.messages.queued.count).to eq(1) + + log = ApiLog::EppLog.all + + expect(log.length).to eq(4) + expect(log[0].request_command).to eq('hello') + expect(log[0].request_successful).to eq(true) + + expect(log[1].request_command).to eq('login') + expect(log[1].request_successful).to eq(true) + expect(log[1].api_user_name).to eq('elkdata') + expect(log[1].api_user_registrar).to eq('Elkdata') + + expect(log[2].request_command).to eq('keyrelay') + expect(log[2].request_object).to eq('domain') + expect(log[2].request_successful).to eq(true) + expect(log[2].api_user_name).to eq('elkdata') + expect(log[2].api_user_registrar).to eq('Elkdata') + expect(log[2].request).not_to be_blank + expect(log[2].response).not_to be_blank + + expect(log[3].request_command).to eq('logout') + expect(log[3].request_successful).to eq(true) + expect(log[3].api_user_name).to eq('elkdata') + expect(log[3].api_user_registrar).to eq('Elkdata') end it 'returns an error when parameters are missing' do diff --git a/spec/epp/poll_spec.rb b/spec/epp/poll_spec.rb index 6eed885ec..27b7b02b7 100644 --- a/spec/epp/poll_spec.rb +++ b/spec/epp/poll_spec.rb @@ -20,6 +20,30 @@ describe 'EPP Poll', epp: true do expect(response[:msg]).to eq('Command completed successfully; no messages') expect(response[:result_code]).to eq('1300') + + log = ApiLog::EppLog.all + + expect(log.length).to eq(4) + expect(log[0].request_command).to eq('hello') + expect(log[0].request_successful).to eq(true) + + expect(log[1].request_command).to eq('login') + expect(log[1].request_successful).to eq(true) + expect(log[1].api_user_name).to eq('zone') + expect(log[1].api_user_registrar).to eq('Registrar OÜ') + + expect(log[2].request_command).to eq('poll') + expect(log[2].request_object).to eq(nil) + expect(log[2].request_successful).to eq(true) + expect(log[2].api_user_name).to eq('zone') + expect(log[2].api_user_registrar).to eq('Registrar OÜ') + expect(log[2].request).not_to be_blank + expect(log[2].response).not_to be_blank + + expect(log[3].request_command).to eq('logout') + expect(log[3].request_successful).to eq(true) + expect(log[3].api_user_name).to eq('zone') + expect(log[3].api_user_registrar).to eq('Registrar OÜ') end it 'queues and dequeues messages' do diff --git a/spec/epp/session_spec.rb b/spec/epp/session_spec.rb index 70dcd2623..98ed73c2f 100644 --- a/spec/epp/session_spec.rb +++ b/spec/epp/session_spec.rb @@ -65,6 +65,22 @@ describe 'EPP Session', epp: true do response = epp_plain_request(login_xml_cache, :xml) expect(response[:result_code]).to eq('2002') expect(response[:msg]).to match(/Already logged in. Use/) + + log = ApiLog::EppLog.all + + expect(log.length).to eq(3) + expect(log[0].request_command).to eq('hello') + expect(log[0].request_successful).to eq(true) + + expect(log[1].request_command).to eq('login') + expect(log[1].request_successful).to eq(true) + expect(log[1].api_user_name).to eq('gitlab') + expect(log[1].api_user_registrar).to eq('Registrar OÜ') + + expect(log[2].request_command).to eq('login') + expect(log[2].request_successful).to eq(false) + expect(log[2].api_user_name).to eq('gitlab') + expect(log[2].api_user_registrar).to eq('Registrar OÜ') end end end