From 64183c1dd89cd96f1c823bda7e225c67f577b7c1 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Thu, 22 Jan 2015 15:14:55 +0200 Subject: [PATCH] Start refactoring params_hash out of domains --- app/controllers/epp/domains_controller.rb | 16 +++++++++------- app/controllers/epp_controller.rb | 6 ++++-- spec/epp/domain_spec.rb | 5 ++++- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/app/controllers/epp/domains_controller.rb b/app/controllers/epp/domains_controller.rb index 026faaf2f..8b39b63df 100644 --- a/app/controllers/epp/domains_controller.rb +++ b/app/controllers/epp/domains_controller.rb @@ -116,23 +116,25 @@ class Epp::DomainsController < EppController private def validate_info - @ph = params_hash['epp']['command']['info']['info'] - xml_attrs_present?(@ph, [['name']]) + @prefix = 'info > info >' + epp_request_valid?('name') end def validate_check + @prefix = 'check > check >' epp_request_valid?('name') end def validate_create - # TODO: Verify contact presence if registrant is juridical - ret = epp_request_valid?('name', 'ns', 'registrant', 'extension > extdata > legalDocument', 'ns > hostAttr') - if params[:parsed_frame].css('dsData').count > 0 && params[:parsed_frame].css('create > keyData').count > 0 epp_errors << { code: '2306', msg: I18n.t('ds_data_and_key_data_must_not_exists_together') } - ret = false end - ret + + @prefix = 'create > create >' + epp_request_valid?('name', 'ns', 'registrant', 'ns > hostAttr') + + @prefix = nil + epp_request_valid?('extension > extdata > legalDocument') end def validate_renew diff --git a/app/controllers/epp_controller.rb b/app/controllers/epp_controller.rb index 700d9eaed..2a7733c5e 100644 --- a/app/controllers/epp_controller.rb +++ b/app/controllers/epp_controller.rb @@ -58,12 +58,14 @@ class EppController < ApplicationController def validate_request validation_method = "validate_#{params[:action]}" return unless respond_to?(validation_method, true) - handle_errors and return unless send(validation_method) + send(validation_method) + handle_errors and return if epp_errors.any? end def epp_request_valid?(*selectors) selectors.each do |selector| - el = params[:parsed_frame].css(selector).first + full_selector = [@prefix, selector].join(' ') + el = params[:parsed_frame].css(full_selector).first epp_errors << { code: '2003', msg: I18n.t('errors.messages.required_parameter_missing', key: el.try(:name) || selector) diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index 586b9b641..8337a819a 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -80,7 +80,10 @@ describe 'EPP Domain', epp: true do expect(response[:results][1][:msg]).to eq('Required parameter missing: registrant') expect(response[:results][2][:result_code]).to eq('2003') - expect(response[:results][2][:msg]).to eq('Required parameter missing: extension > extdata > legalDocument') + expect(response[:results][2][:msg]).to eq('Required parameter missing: ns > hostAttr') + + expect(response[:results][3][:result_code]).to eq('2003') + expect(response[:results][3][:msg]).to eq('Required parameter missing: extension > extdata > legalDocument') end context 'with citizen as an owner' do