From 2a47e374f22fcc33ee7d30e0f7e7e370bfe337e7 Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Thu, 28 Aug 2014 13:24:23 +0300 Subject: [PATCH 1/3] Builder for transfer xml --- spec/epp/domain_spec.rb | 5 +++++ spec/epp/epp_helper_spec.rb | 45 +++++++++++++++++++++++++++++++++++++ spec/support/epp.rb | 27 ++++++++++++++++++++++ 3 files changed, 77 insertions(+) diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index a27db7384..862d1ed3a 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -82,6 +82,11 @@ describe 'EPP Domain', epp: true do expect(trn_data.css('acID').text).to eq('10577829') expect(trn_data.css('exDate').text).to eq(d.valid_to.to_time.utc.to_s) end + + it 'does not transfer with invalid pw' do + response = epp_request('domains/transfer.xml') + + end end context 'with citizen as an owner' do diff --git a/spec/epp/epp_helper_spec.rb b/spec/epp/epp_helper_spec.rb index 527a70fab..61d237688 100644 --- a/spec/epp/epp_helper_spec.rb +++ b/spec/epp/epp_helper_spec.rb @@ -275,5 +275,50 @@ describe 'EPP Helper', epp: true do generated = Nokogiri::XML(xml).to_s.squish expect(generated).to eq(expected) end + + it 'generates valid transfer xml' do + expected = Nokogiri::XML(' + + + + + example.ee + + 98oiewslkfkd + + + + ABC-12345 + + + ').to_s.squish + + generated = Nokogiri::XML(domain_transfer_xml).to_s.squish + expect(generated).to eq(expected) + + + expected = Nokogiri::XML(' + + + + + one.ee + + test + + + + ABC-12345 + + + ').to_s.squish + + xml = domain_transfer_xml(name: 'one.ee', op: 'approve', pw: 'test', roid: 'askdf') + + generated = Nokogiri::XML(xml).to_s.squish + expect(generated).to eq(expected) + end end end diff --git a/spec/support/epp.rb b/spec/support/epp.rb index e88f762e5..9ad726388 100644 --- a/spec/support/epp.rb +++ b/spec/support/epp.rb @@ -189,6 +189,33 @@ module Epp end end end + + def domain_transfer_xml(xml_params = {}) + xml_params[:name] = xml_params[:name] || 'example.ee' + xml_params[:pw] = xml_params[:pw] || '98oiewslkfkd' + xml_params[:op] = xml_params[:op] || 'query' + xml_params[:roid] = xml_params[:roid] || 'JD1234-REP' + + xml = Builder::XmlMarkup.new + + xml.instruct!(:xml, standalone: 'no') + xml.epp('xmlns' => 'urn:ietf:params:xml:ns:epp-1.0') do + xml.command do + xml.transfer('op' => xml_params[:op]) do + xml.tag!('domain:transfer', 'xmlns:domain' => 'urn:ietf:params:xml:ns:domain-1.0') do + if xml_params[:name] != false + xml.tag!('domain:name', xml_params[:name]) + end + + xml.tag!('domain:authInfo') do + xml.tag!('domain:pw', xml_params[:pw], 'roid' => xml_params[:roid]) + end if xml_params[:authInfo] != false + end + end + xml.clTRID 'ABC-12345' + end + end + end end RSpec.configure do |c| From 31ea0f9182c74d4c92d866883bbfb12611b1faab Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Thu, 28 Aug 2014 14:00:08 +0300 Subject: [PATCH 2/3] Transfer authentication test --- spec/epp/domain_spec.rb | 14 ++++++++------ spec/epp/epp_helper_spec.rb | 1 - spec/epp/requests/domains/transfer.xml | 15 --------------- spec/models/domain_spec.rb | 2 +- 4 files changed, 9 insertions(+), 23 deletions(-) delete mode 100644 spec/epp/requests/domains/transfer.xml diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index 862d1ed3a..950ec4904 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -42,7 +42,7 @@ describe 'EPP Domain', epp: true do end it 'transfers a domain' do - response = epp_request('domains/transfer.xml') + response = epp_request(domain_transfer_xml, :xml) d = Domain.first dtl = d.domain_transfers.last @@ -59,7 +59,7 @@ describe 'EPP Domain', epp: true do s = Setting.find_by(code: 'transfer_wait_time') s.update(value: 1) - response = epp_request('domains/transfer.xml') + response = epp_request(domain_transfer_xml, :xml) trn_data = response[:parsed].css('trnData') d = Domain.first @@ -67,25 +67,27 @@ describe 'EPP Domain', epp: true do expect(trn_data.css('trStatus').text).to eq('pending') expect(trn_data.css('reID').text).to eq('10577829') expect(trn_data.css('reDate').text).to eq(dtl.transfer_requested_at.to_time.utc.to_s) + req_time = dtl.transfer_requested_at.to_time.utc.to_s expect(trn_data.css('acID').text).to eq('10577829') expect(trn_data.css('exDate').text).to eq(d.valid_to.to_time.utc.to_s) # should return same data if pending already - response = epp_request('domains/transfer.xml') + response = epp_request(domain_transfer_xml, :xml) trn_data = response[:parsed].css('trnData') d = Domain.first expect(trn_data.css('name').text).to eq('example.ee') expect(trn_data.css('trStatus').text).to eq('pending') expect(trn_data.css('reID').text).to eq('10577829') - expect(trn_data.css('reDate').text).to eq(dtl.transfer_requested_at.to_time.utc.to_s) + expect(trn_data.css('reDate').text).to eq(req_time) expect(trn_data.css('acID').text).to eq('10577829') expect(trn_data.css('exDate').text).to eq(d.valid_to.to_time.utc.to_s) end it 'does not transfer with invalid pw' do - response = epp_request('domains/transfer.xml') - + response = epp_request(domain_transfer_xml(pw: 'test'), :xml) + expect(response[:result_code]).to eq('2200') + expect(response[:msg]).to eq('Authentication error') end end diff --git a/spec/epp/epp_helper_spec.rb b/spec/epp/epp_helper_spec.rb index 61d237688..f4bcbc35f 100644 --- a/spec/epp/epp_helper_spec.rb +++ b/spec/epp/epp_helper_spec.rb @@ -297,7 +297,6 @@ describe 'EPP Helper', epp: true do generated = Nokogiri::XML(domain_transfer_xml).to_s.squish expect(generated).to eq(expected) - expected = Nokogiri::XML(' diff --git a/spec/epp/requests/domains/transfer.xml b/spec/epp/requests/domains/transfer.xml deleted file mode 100644 index 45453f4e7..000000000 --- a/spec/epp/requests/domains/transfer.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - example.ee - - 98oiewslkfkd - - - - ABC-12345 - - diff --git a/spec/models/domain_spec.rb b/spec/models/domain_spec.rb index 7259d615b..1bcd65772 100644 --- a/spec/models/domain_spec.rb +++ b/spec/models/domain_spec.rb @@ -46,7 +46,7 @@ describe Domain do name: ['is missing'], period: ['is not a number'], owner_contact: ['Registrant is missing'], - admin_contacts: ['Admin contact is missing'], + admin_contacts: ['Admin contacts count must be between 1 - infinity'], nameservers: ['Nameservers count must be between 1-13'] }) From bb7286ca7b8a08e99674c230a5b92e3e9a58aaef Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Thu, 28 Aug 2014 14:37:26 +0300 Subject: [PATCH 3/3] Domain transfer approval test --- spec/epp/domain_spec.rb | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index 950ec4904..e04d7a30d 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -66,8 +66,8 @@ describe 'EPP Domain', epp: true do expect(trn_data.css('name').text).to eq('example.ee') expect(trn_data.css('trStatus').text).to eq('pending') expect(trn_data.css('reID').text).to eq('10577829') - expect(trn_data.css('reDate').text).to eq(dtl.transfer_requested_at.to_time.utc.to_s) req_time = dtl.transfer_requested_at.to_time.utc.to_s + expect(trn_data.css('reDate').text).to eq(req_time) expect(trn_data.css('acID').text).to eq('10577829') expect(trn_data.css('exDate').text).to eq(d.valid_to.to_time.utc.to_s) @@ -84,6 +84,24 @@ describe 'EPP Domain', epp: true do expect(trn_data.css('exDate').text).to eq(d.valid_to.to_time.utc.to_s) end + it 'approves the transfer request', pending: true do + s = Setting.find_by(code: 'transfer_wait_time') + s.update(value: 1) + + epp_request(domain_transfer_xml, :xml) + xml = domain_transfer_xml(op: 'approve') + response = epp_request(xml, :xml) + trn_data = response[:parsed].css('trnData') + d = Domain.first + + expect(trn_data.css('name').text).to eq('example.ee') + expect(trn_data.css('trStatus').text).to eq('serverApproved') + expect(trn_data.css('reID').text).to eq('10577829') + expect(trn_data.css('reDate').text).to eq(dtl.transfer_requested_at.to_time.utc.to_s) + expect(trn_data.css('acID').text).to eq('10577829') + expect(trn_data.css('exDate').text).to eq(d.valid_to.to_time.utc.to_s) + end + it 'does not transfer with invalid pw' do response = epp_request(domain_transfer_xml(pw: 'test'), :xml) expect(response[:result_code]).to eq('2200')