mirror of
https://github.com/internetee/registry.git
synced 2025-05-17 09:57:23 +02:00
Refactor renew xml
This commit is contained in:
parent
f970cb4b79
commit
be319509ca
3 changed files with 23 additions and 122 deletions
|
@ -45,7 +45,7 @@ describe 'EPP Domain', epp: true do
|
||||||
|
|
||||||
it 'transfers a domain' do
|
it 'transfers a domain' do
|
||||||
pw = domain.auth_info
|
pw = domain.auth_info
|
||||||
xml = domain_transfer_xml(pw: pw)
|
xml = domain_transfer_xml({ authInfo: { pw: { value: pw } } })
|
||||||
response = epp_request(xml, :xml, :elkdata)
|
response = epp_request(xml, :xml, :elkdata)
|
||||||
|
|
||||||
domain.reload
|
domain.reload
|
||||||
|
@ -66,7 +66,7 @@ describe 'EPP Domain', epp: true do
|
||||||
|
|
||||||
domain.reload
|
domain.reload
|
||||||
pw = domain.auth_info
|
pw = domain.auth_info
|
||||||
xml = domain_transfer_xml(pw: pw) # request with new password
|
xml = domain_transfer_xml({ authInfo: { pw: { value: pw } } }) # request with new password
|
||||||
|
|
||||||
response = epp_request(xml, :xml, :zone)
|
response = epp_request(xml, :xml, :zone)
|
||||||
trn_data = response[:parsed].css('trnData')
|
trn_data = response[:parsed].css('trnData')
|
||||||
|
@ -110,7 +110,7 @@ describe 'EPP Domain', epp: true do
|
||||||
transfer_from: zone
|
transfer_from: zone
|
||||||
})
|
})
|
||||||
|
|
||||||
xml = domain_transfer_xml(pw: domain.auth_info, op: 'approve')
|
xml = domain_transfer_xml({ authInfo: { pw: { value: domain.auth_info } } }, 'approve')
|
||||||
response = epp_request(xml, :xml, :elkdata)
|
response = epp_request(xml, :xml, :elkdata)
|
||||||
expect(response[:result_code]).to eq('2304')
|
expect(response[:result_code]).to eq('2304')
|
||||||
expect(response[:msg]).to eq('Transfer can be approved only by current domain registrar')
|
expect(response[:msg]).to eq('Transfer can be approved only by current domain registrar')
|
||||||
|
@ -124,7 +124,7 @@ describe 'EPP Domain', epp: true do
|
||||||
transfer_from: zone
|
transfer_from: zone
|
||||||
})
|
})
|
||||||
|
|
||||||
xml = domain_transfer_xml(pw: domain.auth_info, op: 'approve')
|
xml = domain_transfer_xml({ authInfo: { pw: { value: domain.auth_info } } }, 'approve')
|
||||||
response = epp_request(xml, :xml, :zone)
|
response = epp_request(xml, :xml, :zone)
|
||||||
domain.reload
|
domain.reload
|
||||||
dtl = domain.domain_transfers.last
|
dtl = domain.domain_transfers.last
|
||||||
|
@ -140,14 +140,15 @@ describe 'EPP Domain', epp: true do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'does not transfer with invalid pw' do
|
it 'does not transfer with invalid pw' do
|
||||||
response = epp_request(domain_transfer_xml(pw: 'test'), :xml)
|
xml = domain_transfer_xml({ authInfo: { pw: { value: 'test' } } })
|
||||||
|
response = epp_request(xml, :xml)
|
||||||
expect(response[:result_code]).to eq('2201')
|
expect(response[:result_code]).to eq('2201')
|
||||||
expect(response[:msg]).to eq('Authorization error')
|
expect(response[:msg]).to eq('Authorization error')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'ignores transfer when owner registrar requests transfer' do
|
it 'ignores transfer when owner registrar requests transfer' do
|
||||||
pw = domain.auth_info
|
pw = domain.auth_info
|
||||||
xml = domain_transfer_xml(pw: pw)
|
xml = domain_transfer_xml({ authInfo: { pw: { value: pw } } })
|
||||||
response = epp_request(xml, :xml, :zone)
|
response = epp_request(xml, :xml, :zone)
|
||||||
|
|
||||||
expect(response[:result_code]).to eq('2002')
|
expect(response[:result_code]).to eq('2002')
|
||||||
|
@ -155,7 +156,7 @@ describe 'EPP Domain', epp: true do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'returns an error for incorrect op attribute' do
|
it 'returns an error for incorrect op attribute' do
|
||||||
response = epp_request(domain_transfer_xml(op: 'bla'), :xml, :zone)
|
response = epp_request(domain_transfer_xml({}, 'bla'), :xml, :zone)
|
||||||
expect(response[:result_code]).to eq('2306')
|
expect(response[:result_code]).to eq('2306')
|
||||||
expect(response[:msg]).to eq('Attribute op is invalid')
|
expect(response[:msg]).to eq('Attribute op is invalid')
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,47 +2,6 @@ require 'rails_helper'
|
||||||
|
|
||||||
describe 'EPP Helper', epp: true do
|
describe 'EPP Helper', epp: true do
|
||||||
context 'in context of Domain' do
|
context 'in context of Domain' do
|
||||||
it 'generates valid renew xml' do
|
|
||||||
expected = Nokogiri::XML('<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
|
||||||
<command>
|
|
||||||
<renew>
|
|
||||||
<domain:renew
|
|
||||||
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
|
|
||||||
<domain:name>example.ee</domain:name>
|
|
||||||
<domain:curExpDate>2014-08-07</domain:curExpDate>
|
|
||||||
<domain:period unit="y">1</domain:period>
|
|
||||||
</domain:renew>
|
|
||||||
</renew>
|
|
||||||
<clTRID>ABC-12345</clTRID>
|
|
||||||
</command>
|
|
||||||
</epp>
|
|
||||||
').to_s.squish
|
|
||||||
|
|
||||||
generated = Nokogiri::XML(domain_renew_xml).to_s.squish
|
|
||||||
expect(generated).to eq(expected)
|
|
||||||
|
|
||||||
expected = Nokogiri::XML('<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
|
||||||
<command>
|
|
||||||
<renew>
|
|
||||||
<domain:renew
|
|
||||||
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
|
|
||||||
<domain:name>one.ee</domain:name>
|
|
||||||
<domain:curExpDate>2009-11-15</domain:curExpDate>
|
|
||||||
<domain:period unit="d">365</domain:period>
|
|
||||||
</domain:renew>
|
|
||||||
</renew>
|
|
||||||
<clTRID>ABC-12345</clTRID>
|
|
||||||
</command>
|
|
||||||
</epp>
|
|
||||||
').to_s.squish
|
|
||||||
|
|
||||||
generated = Nokogiri::XML(domain_renew_xml(name: 'one.ee', curExpDate: '2009-11-15',
|
|
||||||
period_value: '365', period_unit: 'd')).to_s.squish
|
|
||||||
expect(generated).to eq(expected)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'generates valid transfer xml' do
|
it 'generates valid transfer xml' do
|
||||||
expected = Nokogiri::XML('<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
expected = Nokogiri::XML('<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
|
||||||
|
@ -81,7 +40,12 @@ describe 'EPP Helper', epp: true do
|
||||||
</epp>
|
</epp>
|
||||||
').to_s.squish
|
').to_s.squish
|
||||||
|
|
||||||
xml = domain_transfer_xml(name: 'one.ee', op: 'approve', pw: 'test', roid: 'askdf')
|
xml = domain_transfer_xml({
|
||||||
|
name: { value: 'one.ee' },
|
||||||
|
authInfo: {
|
||||||
|
pw: { value: 'test', attrs: { roid: 'askdf' } }
|
||||||
|
}
|
||||||
|
}, 'approve')
|
||||||
|
|
||||||
generated = Nokogiri::XML(xml).to_s.squish
|
generated = Nokogiri::XML(xml).to_s.squish
|
||||||
expect(generated).to eq(expected)
|
expect(generated).to eq(expected)
|
||||||
|
|
|
@ -52,80 +52,16 @@ module Epp
|
||||||
|
|
||||||
### REQUEST TEMPLATES ###
|
### REQUEST TEMPLATES ###
|
||||||
|
|
||||||
def domain_renew_xml(xml_params = {})
|
def domain_transfer_xml(xml_params = {}, op = 'query')
|
||||||
xml = Builder::XmlMarkup.new
|
defaults = {
|
||||||
|
name: { value: 'example.ee' },
|
||||||
|
authInfo: {
|
||||||
|
pw: { value: '98oiewslkfkd', attrs: { roid: 'JD1234-REP' } }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
xml.instruct!(:xml, standalone: 'no')
|
xml_params = defaults.deep_merge(xml_params)
|
||||||
xml.epp('xmlns' => 'urn:ietf:params:xml:ns:epp-1.0') do
|
EppXml::Domain.transfer(xml_params, op)
|
||||||
xml.command do
|
|
||||||
xml.renew do
|
|
||||||
xml.tag!('domain:renew', 'xmlns:domain' => 'urn:ietf:params:xml:ns:domain-1.0') do
|
|
||||||
xml.tag!('domain:name', (xml_params[:name] || 'example.ee')) if xml_params[:name] != false
|
|
||||||
xml.tag!('domain:curExpDate', (xml_params[:curExpDate] || '2014-08-07')) if xml_params[:curExpDate] != false
|
|
||||||
|
|
||||||
if xml_params[:period] != false
|
|
||||||
xml.tag!('domain:period', (xml_params[:period_value] || 1), 'unit' => (xml_params[:period_unit] || 'y'))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
xml.clTRID 'ABC-12345'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def generate_xml_from_hash(xml_params, xml, ns = '')
|
|
||||||
xml_params.each do |k, v|
|
|
||||||
# Value is a hash which has string type value
|
|
||||||
if v.is_a?(Hash) && v[:value].is_a?(String)
|
|
||||||
xml.tag!("#{ns}#{k}", v[:value], v[:attrs])
|
|
||||||
# Value is a hash which is nested
|
|
||||||
elsif v.is_a?(Hash)
|
|
||||||
xml.tag!("#{ns}#{k}") do
|
|
||||||
generate_xml_from_hash(v, xml, ns)
|
|
||||||
end
|
|
||||||
# Value is an array
|
|
||||||
elsif v.is_a?(Array)
|
|
||||||
if k.to_s.start_with?('_')
|
|
||||||
v.each do |x|
|
|
||||||
generate_xml_from_hash(x, xml, ns)
|
|
||||||
end
|
|
||||||
else
|
|
||||||
xml.tag!("#{ns}#{k}") do
|
|
||||||
v.each do |x|
|
|
||||||
generate_xml_from_hash(x, xml, ns)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue