diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb
index a27db7384..e04d7a30d 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,29 +59,54 @@ 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
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)
# 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(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 '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')
+ expect(response[:msg]).to eq('Authentication error')
+ 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..f4bcbc35f 100644
--- a/spec/epp/epp_helper_spec.rb
+++ b/spec/epp/epp_helper_spec.rb
@@ -275,5 +275,49 @@ 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/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']
})
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|