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
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 )
send(model)
rescue NoMethodError => e
@ -77,21 +83,22 @@ class Contact < ActiveRecord::Base
false
end
#should use only in transaction
def destroy_and_clean
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
rescue
errors.add(:contact, msg: I18n.t('errors.messages.epp_command_failed'), value: { obj: 'contact', val: code })
false
end
def epp_code_map
{
'2302' => [[:code, :epp_id_taken]],
'2303' => [:not_found, :epp_obj_does_not_exist],
'2305' => ['Object association prohibits operation' ],
'2005' => ['Phone nr is invalid', 'Email is invalid']
}
end

View file

@ -9,12 +9,11 @@ xml.epp_head do
xml.tag!('contact:name', @contact.name)
xml.tag!('contact:org', @contact.org_name)
xml.tag!('contact:addr') do
@contact.address do |address|
xml.tag!('contact:street', address.street) if address.street
xml.tag!('contact:street', address.street2) if address.street2
xml.tag!('contact:street', address.street3) if address.street3
xml.tag!('contact:cc', address.try(:country).try(:iso)) unless address.try(:country).nil?
end
address = @contact.address
xml.tag!('contact:street', address.street) if address.street
xml.tag!('contact:street', address.street2) if address.street2
xml.tag!('contact:street', address.street3) if address.street3
xml.tag!('contact:cc', address.try(:country).try(:iso)) unless address.try(:country).nil?
end
xml.tag!('contact:voice', @contact.phone)
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_registrant_not_found: 'Registrant not found'
required_parameter_missing: 'Required parameter missing: %{key}'
epp_obj_association_error: 'Object association prohibits operation'
setting_groups:
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}) }
context 'with valid user' do
before(:each) { Fabricate(:epp_user) }
before(:each) {
Fabricate(:epp_user)
Fabricate(:domain_validation_setting_group)
}
context 'create command' do
it "fails if request is invalid" do
@ -133,7 +135,7 @@ describe 'EPP Contact', epp: true do
end
it 'deletes contact' do
Fabricate(:contact, code: "dwa1234", auth_info: '2fooBAR')
Fabricate(:contact, code: "dwa1234")
response = epp_request('contacts/delete.xml')
expect(response[:result_code]).to eq('1000')
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[:msg]).to eq('Object does not exist')
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