Skip to content

Commit

Permalink
Merge pull request #420 from internetee/registry-328
Browse files Browse the repository at this point in the history
Registry 328
  • Loading branch information
vohmar authored Mar 10, 2017
2 parents 0091f4f + a9e8d5e commit d4696cb
Show file tree
Hide file tree
Showing 4 changed files with 264 additions and 12 deletions.
14 changes: 3 additions & 11 deletions app/models/epp/domain.rb
Original file line number Diff line number Diff line change
Expand Up @@ -492,28 +492,20 @@ def update(frame, current_user, verify = true)
at[:statuses] =
statuses - domain_statuses_attrs(frame.css('rem'), 'rem') + domain_statuses_attrs(frame.css('add'), 'add')

# at[:statuses] += at_add[:domain_statuses_attributes]

if errors.empty? && verify
self.upid = current_user.registrar.id if current_user.registrar
self.up_date = Time.zone.now
end

if registrant_id && registrant.code == frame.css('registrant')

throw :epp_error, {
code: '2305',
msg: I18n.t(:contact_already_associated_with_the_domain)
}
same_registrant_as_current = (registrant.code == frame.css('registrant').text)

end

if errors.empty? && verify &&
if !same_registrant_as_current && errors.empty? && verify &&
Setting.request_confrimation_on_registrant_change_enabled &&
frame.css('registrant').present? &&
frame.css('registrant').attr('verified').to_s.downcase != 'yes'
registrant_verification_asked!(frame.to_s, current_user.id)
end

self.deliver_emails = true # turn on email delivery for epp

errors.empty? && super(at)
Expand Down
1 change: 0 additions & 1 deletion config/locales/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -922,7 +922,6 @@ en:
previous: 'Previous'
personal_domain_verification_url: 'Personal domain verification url'
available_verification_url_not_found: 'Available verification url not found, for domain.'
contact_already_associated_with_the_domain: 'Object association prohibits operation, contact already associated with the domain'
add_reserved_domain: 'Add domain to reserved list'
add_blocked_domain: 'Add domain to blocked list'
edit_pw: 'Edit Pw'
Expand Down
49 changes: 49 additions & 0 deletions spec/requests/epp/contact/delete/used_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
require 'rails_helper'

RSpec.describe 'EPP contact:delete' do
let(:user) { create(:api_user, registrar: registrar) }
let(:registrar) { create(:registrar) }
let!(:registrant) { create(:registrant, registrar: registrar, code: 'TEST') }
let(:request) { post '/epp/command/delete', frame: request_xml }
let(:request_xml) { <<-XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
<command>
<delete>
<contact:delete xmlns:contact="https://epp.tld.ee/schema/contact-ee-1.1.xsd">
<contact:id>test</contact:id>
</contact:delete>
</delete>
</command>
</epp>
XML
}

before do
sign_in_to_epp_area(user: user)
end

context 'when contact is used' do
let!(:domain) { create(:domain, registrant: registrant) }

specify do
request
expect(response).to have_code_of(2305)
end

it 'does not delete contact' do
expect { request }.to_not change { Contact.count }
end
end

context 'when contact is not used' do
specify do
request
expect(response).to have_code_of(1000)
end

it 'deletes contact' do
expect { request }.to change { Contact.count }.from(1).to(0)
end
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,212 @@
require 'rails_helper'

RSpec.describe 'EPP domain:update' do
let(:request) { post '/epp/command/update', frame: request_xml }
let!(:domain) { create(:domain, name: 'test.com', registrant: registrant) }

before :example do
sign_in_to_epp_area
end

context 'when registrant change confirmation is enabled' do
before :example do
Setting.request_confrimation_on_registrant_change_enabled = true
end

context 'when given registrant is the same as current one' do
let!(:registrant) { create(:registrant, code: 'TEST') }
let(:request_xml) { <<-XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
<command>
<update>
<domain:update xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd">
<domain:name>test.com</domain:name>
<domain:chg>
<domain:registrant>TEST</domain:registrant>
</domain:chg>
</domain:update>
</update>
<extension>
<eis:extdata xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd">
<eis:legalDocument type="pdf">#{valid_legal_document}</eis:legalDocument>
</eis:extdata>
</extension>
</command>
</epp>
XML
}

specify do
request
expect(response).to have_code_of(1000)
end

it 'keeps same registrant' do
expect { request; domain.reload }.to_not change { domain.registrant_code }
end

it 'does not ask for confirmation' do
request
domain.reload
expect(domain.registrant_verification_asked?).to be false
end

it 'does not send confirmation and notice emails' do
expect { request }.to_not change { ActionMailer::Base.deliveries.count }
end
end

context 'when given registrant is different than current one' do
let!(:registrant) { create(:registrant, code: 'OLD-CODE') }
let!(:new_registrant) { create(:registrant, code: 'NEW-CODE') }
let(:request_xml) { <<-XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
<command>
<update>
<domain:update xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd">
<domain:name>test.com</domain:name>
<domain:chg>
<domain:registrant>NEW-CODE</domain:registrant>
</domain:chg>
</domain:update>
</update>
<extension>
<eis:extdata xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd">
<eis:legalDocument type="pdf">#{valid_legal_document}</eis:legalDocument>
</eis:extdata>
</extension>
</command>
</epp>
XML
}

specify do
request
expect(response).to have_code_of(1001)
end

it 'does not change registrant without confirmation' do
expect { request; domain.reload }.to_not change { domain.registrant_code }
end

it 'asks for confirmation' do
request
domain.reload
expect(domain.registrant_verification_asked?).to be true
end

it 'sets PENDING_UPDATE status' do
request
domain.reload
expect(domain.statuses).to include(DomainStatus::PENDING_UPDATE)
end

it 'sends confirmation and notice emails' do
expect { request }.to change { ActionMailer::Base.deliveries.count }.by(2)
end
end
end

context 'when registrant change confirmation is disabled' do
before :example do
Setting.request_confrimation_on_registrant_change_enabled = false
end

context 'when given registrant is the same as current one' do
let!(:registrant) { create(:registrant, code: 'TEST') }
let(:request_xml) { <<-XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
<command>
<update>
<domain:update xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd">
<domain:name>test.com</domain:name>
<domain:chg>
<domain:registrant>TEST</domain:registrant>
</domain:chg>
</domain:update>
</update>
<extension>
<eis:extdata xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd">
<eis:legalDocument type="pdf">#{valid_legal_document}</eis:legalDocument>
</eis:extdata>
</extension>
</command>
</epp>
XML
}

specify do
request
expect(response).to have_code_of(1000)
end

it 'keeps same registrant' do
expect { request; domain.reload }.to_not change { domain.registrant_code }
end

it 'does not ask for confirmation' do
request
domain.reload
expect(domain.registrant_verification_asked?).to be false
end

it 'does not send confirmation and notice emails' do
expect { request }.to_not change { ActionMailer::Base.deliveries.count }
end
end

context 'when given registrant is different than current one' do
let!(:registrant) { create(:registrant, code: 'OLD-CODE') }
let!(:new_registrant) { create(:registrant, code: 'NEW-CODE') }
let(:request_xml) { <<-XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="https://epp.tld.ee/schema/epp-ee-1.0.xsd">
<command>
<update>
<domain:update xmlns:domain="https://epp.tld.ee/schema/domain-eis-1.0.xsd">
<domain:name>test.com</domain:name>
<domain:chg>
<domain:registrant>NEW-CODE</domain:registrant>
</domain:chg>
</domain:update>
</update>
<extension>
<eis:extdata xmlns:eis="https://epp.tld.ee/schema/eis-1.0.xsd">
<eis:legalDocument type="pdf">#{valid_legal_document}</eis:legalDocument>
</eis:extdata>
</extension>
</command>
</epp>
XML
}

specify do
request
expect(response).to have_code_of(1000)
end

it 'changes registrant without confirmation' do
expect { request; domain.reload }.to change { domain.registrant_code }.from('OLD-CODE').to('NEW-CODE')
end

it 'does not ask for confirmation' do
request
domain.reload
expect(domain.registrant_verification_asked?).to be false
end

it 'does not set PENDING_UPDATE status' do
request
domain.reload
expect(domain.statuses).to_not include(DomainStatus::PENDING_UPDATE)
end

it 'does not send confirmation and notice emails' do
expect { request }.to_not change { ActionMailer::Base.deliveries.count }
end
end
end
end

0 comments on commit d4696cb

Please sign in to comment.