Merge branch 'master' of github.com:internetee/registry

This commit is contained in:
Martin Lensment 2014-08-22 12:13:50 +03:00
commit a7de74eb82
4 changed files with 35 additions and 14 deletions

View file

@ -65,6 +65,12 @@ class Contact < ActiveRecord::Base
return false return false
end end
#Find a way to use self.domains with contact
def domains_owned
Domain.find_by(owner_contact_id: id)
end
#TODO Refactor the relation methods to something more sensible
def get_relation( model = :domain_contacts ) def get_relation( model = :domain_contacts )
send(model) send(model)
rescue NoMethodError => e rescue NoMethodError => e
@ -77,21 +83,22 @@ class Contact < ActiveRecord::Base
false false
end end
#should use only in transaction #should use only in transaction
def destroy_and_clean def destroy_and_clean
clean_up_address clean_up_address
if has_relation(:domain_contacts) || domains_owned.present?
errors.add(:contact, msg: I18n.t('errors.messages.epp_obj_association_error'), value: { obj: 'contact', val: code })
return false
end
destroy destroy
rescue
errors.add(:contact, msg: I18n.t('errors.messages.epp_command_failed'), value: { obj: 'contact', val: code })
false
end end
def epp_code_map def epp_code_map
{ {
'2302' => [[:code, :epp_id_taken]], '2302' => [[:code, :epp_id_taken]],
'2303' => [:not_found, :epp_obj_does_not_exist], '2303' => [:not_found, :epp_obj_does_not_exist],
'2305' => ['Object association prohibits operation' ],
'2005' => ['Phone nr is invalid', 'Email is invalid'] '2005' => ['Phone nr is invalid', 'Email is invalid']
} }
end end

View file

@ -9,12 +9,11 @@ xml.epp_head do
xml.tag!('contact:name', @contact.name) xml.tag!('contact:name', @contact.name)
xml.tag!('contact:org', @contact.org_name) xml.tag!('contact:org', @contact.org_name)
xml.tag!('contact:addr') do xml.tag!('contact:addr') do
@contact.address do |address| address = @contact.address
xml.tag!('contact:street', address.street) if address.street xml.tag!('contact:street', address.street) if address.street
xml.tag!('contact:street', address.street2) if address.street2 xml.tag!('contact:street', address.street2) if address.street2
xml.tag!('contact:street', address.street3) if address.street3 xml.tag!('contact:street', address.street3) if address.street3
xml.tag!('contact:cc', address.try(:country).try(:iso)) unless address.try(:country).nil? xml.tag!('contact:cc', address.try(:country).try(:iso)) unless address.try(:country).nil?
end
end end
xml.tag!('contact:voice', @contact.phone) xml.tag!('contact:voice', @contact.phone)
xml.tag!('contact:fax', @contact.fax) xml.tag!('contact:fax', @contact.fax)

View file

@ -90,6 +90,7 @@ en:
epp_exp_dates_do_not_match: 'Given and current expire dates do not match' epp_exp_dates_do_not_match: 'Given and current expire dates do not match'
epp_registrant_not_found: 'Registrant not found' epp_registrant_not_found: 'Registrant not found'
required_parameter_missing: 'Required parameter missing: %{key}' required_parameter_missing: 'Required parameter missing: %{key}'
epp_obj_association_error: 'Object association prohibits operation'
setting_groups: setting_groups:
codes: codes:

View file

@ -4,8 +4,10 @@ describe 'EPP Contact', epp: true do
let(:server) { Epp::Server.new({server: 'localhost', tag: 'gitlab', password: 'ghyt9e4fu', port: 701}) } let(:server) { Epp::Server.new({server: 'localhost', tag: 'gitlab', password: 'ghyt9e4fu', port: 701}) }
context 'with valid user' do context 'with valid user' do
before(:each) { Fabricate(:epp_user) } before(:each) {
Fabricate(:epp_user)
Fabricate(:domain_validation_setting_group)
}
context 'create command' do context 'create command' do
it "fails if request is invalid" do it "fails if request is invalid" do
@ -133,7 +135,7 @@ describe 'EPP Contact', epp: true do
end end
it 'deletes contact' do it 'deletes contact' do
Fabricate(:contact, code: "dwa1234", auth_info: '2fooBAR') Fabricate(:contact, code: "dwa1234")
response = epp_request('contacts/delete.xml') response = epp_request('contacts/delete.xml')
expect(response[:result_code]).to eq('1000') expect(response[:result_code]).to eq('1000')
expect(response[:msg]).to eq('Command completed successfully') expect(response[:msg]).to eq('Command completed successfully')
@ -147,6 +149,18 @@ describe 'EPP Contact', epp: true do
expect(response[:result_code]).to eq('2303') expect(response[:result_code]).to eq('2303')
expect(response[:msg]).to eq('Object does not exist') expect(response[:msg]).to eq('Object does not exist')
end end
it 'fails if contact has associated domain' do
Fabricate(:domain, owner_contact: Fabricate(:contact, code: 'dwa1234'))
expect(Domain.first.owner_contact.address.present?).to be true
response = epp_request('contacts/delete.xml')
expect(response[:result_code]).to eq('2305')
expect(response[:msg]).to eq('Object association prohibits operation')
expect(Domain.first.owner_contact.present?).to be true
end
end end