diff --git a/app/controllers/concerns/epp/common.rb b/app/controllers/concerns/epp/common.rb index 429c0100c..ea217a7ce 100644 --- a/app/controllers/concerns/epp/common.rb +++ b/app/controllers/concerns/epp/common.rb @@ -11,12 +11,8 @@ module Epp::Common send(params[:command]) end - def parsed_frame - Nokogiri::XML(params[:frame]).remove_namespaces! - end - - def get_params_hash(path) - Hash.from_xml(parsed_frame.css(path).to_xml).with_indifferent_access + def params_hash + @params_hash ||= Hash.from_xml(params[:frame]).with_indifferent_access end def epp_session @@ -28,13 +24,13 @@ module Epp::Common end def validate_request - xsd = Nokogiri::XML::Schema(File.read('doc/schemas/epp-1.0.xsd')) - doc = Nokogiri::XML(params[:frame]) - @extValues = xsd.validate(doc) - if @extValues.any? - @code = '2001' - @msg = 'Command syntax error' - render '/epp/error' and return - end + # xsd = Nokogiri::XML::Schema(File.read('doc/schemas/contact-1.0.xsd')) + # doc = Nokogiri::XML(params[:frame]) + # @extValues = xsd.validate(doc) + # if @extValues.any? + # @code = '2001' + # @msg = 'Command syntax error' + # render '/epp/error' and return + # end end end diff --git a/app/controllers/epp/commands_controller.rb b/app/controllers/epp/commands_controller.rb index 38b88e98d..602950a3d 100644 --- a/app/controllers/epp/commands_controller.rb +++ b/app/controllers/epp/commands_controller.rb @@ -4,20 +4,16 @@ class Epp::CommandsController < ApplicationController include Epp::ContactsHelper OBJECT_TYPES = { - 'http://www.nic.cz/xml/epp/domain-1.4 domain-1.4.xsd' => 'domain', - 'http://www.nic.cz/xml/epp/contact-1.6 contact-1.6.xsd' => 'contact' + 'urn:ietf:params:xml:ns:contact-1.0' => 'contact', + 'urn:ietf:params:xml:ns:domain-1.0' => 'domain' } private def create - ph = get_params_hash('create create')[:create] - type = OBJECT_TYPES[ph[:schemaLocation]] - send("create_#{type}") + send("create_#{OBJECT_TYPES[params_hash['epp']['xmlns:ns2']]}") end def check - ph = get_params_hash('check check')[:check] - type = OBJECT_TYPES[ph[:schemaLocation]] - send("check_#{type}") + send("check_#{OBJECT_TYPES[params_hash['epp']['xmlns:ns2']]}") end end diff --git a/app/controllers/epp/sessions_controller.rb b/app/controllers/epp/sessions_controller.rb index 6ebcbbbbe..ab29bef23 100644 --- a/app/controllers/epp/sessions_controller.rb +++ b/app/controllers/epp/sessions_controller.rb @@ -27,7 +27,7 @@ class Epp::SessionsController < ApplicationController ### HELPER METHODS ### def login_params - ph = get_params_hash('epp command login')[:login] + ph = params_hash['epp']['command']['login'] { username: ph[:clID], password: ph[:pw] } end end diff --git a/app/helpers/epp/contacts_helper.rb b/app/helpers/epp/contacts_helper.rb index 31af049e1..036c4386f 100644 --- a/app/helpers/epp/contacts_helper.rb +++ b/app/helpers/epp/contacts_helper.rb @@ -1,6 +1,6 @@ module Epp::ContactsHelper def create_contact - ph = get_params_hash('epp command create create')[:create] + ph = params_hash @contact = Contact.new( code: ph[:id], diff --git a/app/helpers/epp/domains_helper.rb b/app/helpers/epp/domains_helper.rb index 9f1820b60..7792c796c 100644 --- a/app/helpers/epp/domains_helper.rb +++ b/app/helpers/epp/domains_helper.rb @@ -5,7 +5,7 @@ module Epp::DomainsHelper end def check_domain - ph = get_params_hash('epp command check check')[:check] + ph = params_hash['epp']['command']['check']['check'] @domains = Domain.check_availability(ph[:name]) render '/epp/domains/check' end @@ -13,7 +13,7 @@ module Epp::DomainsHelper ### HELPER METHODS ### def domain_create_params - ph = get_params_hash('epp command create create')[:create] + ph = params_hash['epp']['command']['create']['create'] { name: ph[:name], @@ -21,7 +21,7 @@ module Epp::DomainsHelper registered_at: Time.now, valid_from: Date.today, valid_to: Date.today + ph[:period].to_i.years, - auth_info: ph[:authInfo] + auth_info: ph[:authInfo][:pw] } end end diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index 59a2f949f..93e00424f 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -1,7 +1,7 @@ require 'rails_helper' describe 'EPP Domain', epp: true do - let(:server) { server = Epp::Server.new({server: 'localhost', tag: 'test', password: 'test', port: 701}) } + let(:server) { server = Epp::Server.new({server: 'localhost', tag: 'gitlab', password: 'ghyt9e4fu', port: 701}) } context 'with valid user' do before(:each) { Fabricate(:epp_user) } @@ -11,28 +11,27 @@ describe 'EPP Domain', epp: true do response = epp_request('domains/create.xml') expect(response[:result_code]).to eq('1000') expect(response[:msg]).to eq('Command completed successfully') - expect(response[:clTRID]).to eq('dpbx005#10-01-29at19:21:47') + expect(response[:clTRID]).to eq('ABC-12345') expect(Domain.first.registrar.name).to eq('Zone Media OÜ') end - # incomplete it 'checks a domain' do response = epp_request('domains/check.xml') expect(response[:result_code]).to eq('1000') expect(response[:msg]).to eq('Command completed successfully') domain = response[:parsed].css('resData chkData cd name').first - expect(domain.text).to eq('test.ee') + expect(domain.text).to eq('one.ee') expect(domain[:avail]).to eq('1') - Fabricate(:domain, name: 'test.ee') + Fabricate(:domain, name: 'one.ee') response = epp_request('domains/check.xml') domain = response[:parsed].css('resData chkData cd').first name = domain.css('name').first reason = domain.css('reason').first - expect(name.text).to eq('test.ee') + expect(name.text).to eq('one.ee') expect(name[:avail]).to eq('0') expect(reason.text).to eq('in use') #confirm this with current API end @@ -43,11 +42,11 @@ describe 'EPP Domain', epp: true do expect(response[:msg]).to eq('Command completed successfully') domain = response[:parsed].css('resData chkData cd name').first - expect(domain.text).to eq('test.ee') + expect(domain.text).to eq('one.ee') expect(domain[:avail]).to eq('1') domain = response[:parsed].css('resData chkData cd name').last - expect(domain.text).to eq('bla.ee') + expect(domain.text).to eq('three.ee') expect(domain[:avail]).to eq('1') end @@ -57,14 +56,14 @@ describe 'EPP Domain', epp: true do expect(response[:msg]).to eq('Command completed successfully') domain = response[:parsed].css('resData chkData cd name').first - expect(domain.text).to eq('test.ee') + expect(domain.text).to eq('one.ee') expect(domain[:avail]).to eq('1') domain = response[:parsed].css('resData chkData cd').last name = domain.css('name').first reason = domain.css('reason').first - expect(name.text).to eq('asdasd') + expect(name.text).to eq('notcorrectdomain') expect(name[:avail]).to eq('0') expect(reason.text).to eq('invalid format') end diff --git a/spec/epp/requests/domains/check.xml b/spec/epp/requests/domains/check.xml index 2de9b73fc..bc6fa17e3 100644 --- a/spec/epp/requests/domains/check.xml +++ b/spec/epp/requests/domains/check.xml @@ -1,6 +1,12 @@ -test.ee - - -imkt004#14-06-27at16:13:33 - + + + + + + one.ee + + + ABC-12345 + diff --git a/spec/epp/requests/domains/check_multiple.xml b/spec/epp/requests/domains/check_multiple.xml index 9d48a55e0..5791da8e4 100644 --- a/spec/epp/requests/domains/check_multiple.xml +++ b/spec/epp/requests/domains/check_multiple.xml @@ -1,7 +1,14 @@ -test.ee -bla.ee - - -naug002#14-06-30at10:45:27 - + + + + + + one.ee + two.ee + three.ee + + + ABC-12345 + diff --git a/spec/epp/requests/domains/check_multiple_with_invalid.xml b/spec/epp/requests/domains/check_multiple_with_invalid.xml index 569aded3e..b7f086738 100644 --- a/spec/epp/requests/domains/check_multiple_with_invalid.xml +++ b/spec/epp/requests/domains/check_multiple_with_invalid.xml @@ -1,8 +1,13 @@ -test.ee -bla.ee -asdasd - - -ixsz002#14-06-30at11:43:32 - + + + + + + one.ee + notcorrectdomain + + + ABC-12345 + diff --git a/spec/epp/requests/domains/create.xml b/spec/epp/requests/domains/create.xml index d66398932..f82d25059 100644 --- a/spec/epp/requests/domains/create.xml +++ b/spec/epp/requests/domains/create.xml @@ -1,21 +1,23 @@ - - + + - - testing.ee + + example.ee 1 - name_server_set1 - domain_registrator1 - administrative_contact1 - password + + ns1.example.net + ns2.example.net + + jd1234 + sh8013 + sh8013 + + 2fooBAR + - - - .... base64 encoded document .... - - - dpbx005#10-01-29at19:21:47 + ABC-12345 diff --git a/spec/epp/session_spec.rb b/spec/epp/session_spec.rb index 9c7b05818..9f848c0cf 100644 --- a/spec/epp/session_spec.rb +++ b/spec/epp/session_spec.rb @@ -1,7 +1,7 @@ require 'rails_helper' describe 'EPP Session', epp: true do - let(:server) { server = Epp::Server.new({server: 'localhost', tag: 'test', password: 'test', port: 701}) } + let(:server) { server = Epp::Server.new({server: 'localhost', tag: 'gitlab', password: 'ghyt9e4fu', port: 701}) } context 'when not connected' do it 'greets client upon connection' do