mirror of
https://github.com/internetee/registry.git
synced 2025-07-01 16:53:37 +02:00
create#contacts refactor
This commit is contained in:
parent
2adbd915f7
commit
813674c965
4 changed files with 28 additions and 6 deletions
|
@ -1,11 +1,13 @@
|
||||||
module Epp::ContactsHelper
|
module Epp::ContactsHelper
|
||||||
def create_contact
|
def create_contact
|
||||||
|
|
||||||
@contact = Contact.new( contact_and_address_attributes )
|
@contact = Contact.new( contact_and_address_attributes )
|
||||||
stamp @contact
|
stamp @contact
|
||||||
@contact.save
|
if @contact.save
|
||||||
|
render '/epp/contacts/create'
|
||||||
render '/epp/contacts/create'
|
else
|
||||||
|
handle_contact_errors
|
||||||
|
render '/epp/error'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def delete_contact
|
def delete_contact
|
||||||
|
@ -45,7 +47,7 @@ module Epp::ContactsHelper
|
||||||
@contact = Contact.where(code: ph[:id]).first
|
@contact = Contact.where(code: ph[:id]).first
|
||||||
case has_rights
|
case has_rights
|
||||||
when true
|
when true
|
||||||
render '/epp/contacts/info'
|
render 'epp/contacts/info'
|
||||||
when false
|
when false
|
||||||
epp_errors << { code: '2201', msg: t('errors.messages.epp_authorization_error') }
|
epp_errors << { code: '2201', msg: t('errors.messages.epp_authorization_error') }
|
||||||
render 'epp/error'
|
render 'epp/error'
|
||||||
|
@ -98,4 +100,13 @@ module Epp::ContactsHelper
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def handle_contact_errors # handle_errors conflicted with domain logic
|
||||||
|
handle_epp_errors({
|
||||||
|
'2302' => [:epp_id_taken],
|
||||||
|
'2303' => [:not_found, :epp_obj_does_not_exist]
|
||||||
|
}, @contact
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -15,6 +15,7 @@ class Contact < ActiveRecord::Base
|
||||||
|
|
||||||
validate :ident_must_be_valid
|
validate :ident_must_be_valid
|
||||||
validates :phone, format: { with: /\+\d{3}\.\d+/, message: "bad format" }
|
validates :phone, format: { with: /\+\d{3}\.\d+/, message: "bad format" }
|
||||||
|
validates_uniqueness_of :code, message: :epp_id_taken
|
||||||
|
|
||||||
IDENT_TYPE_ICO = 'ico'
|
IDENT_TYPE_ICO = 'ico'
|
||||||
IDENT_TYPES = [
|
IDENT_TYPES = [
|
||||||
|
|
|
@ -66,3 +66,4 @@ en:
|
||||||
epp_command_failed: 'Command failed'
|
epp_command_failed: 'Command failed'
|
||||||
epp_nameservers_range_fail: 'Domain must have %{min}-%{max} nameservers'
|
epp_nameservers_range_fail: 'Domain must have %{min}-%{max} nameservers'
|
||||||
epp_authorization_error: 'Authorization error'
|
epp_authorization_error: 'Authorization error'
|
||||||
|
epp_id_taken: 'Contact id already exists'
|
||||||
|
|
|
@ -19,6 +19,16 @@ describe 'EPP Contact', epp: true do
|
||||||
expect(Contact.first.org_name).to eq('Example Inc.')
|
expect(Contact.first.org_name).to eq('Example Inc.')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'does not create duplicate contact' do
|
||||||
|
Fabricate(:contact, code: 'sh8013')
|
||||||
|
|
||||||
|
response = epp_request('contacts/create.xml')
|
||||||
|
expect(response[:result_code]).to eq('2302')
|
||||||
|
expect(response[:msg]).to eq('Contact id already exists')
|
||||||
|
|
||||||
|
expect(Contact.count).to eq(1)
|
||||||
|
end
|
||||||
|
|
||||||
it 'updates a contact with same ident', pending: true do
|
it 'updates a contact with same ident', pending: true do
|
||||||
pending 'fixing this as soon as contact#update is done'
|
pending 'fixing this as soon as contact#update is done'
|
||||||
Fabricate(:contact)
|
Fabricate(:contact)
|
||||||
|
@ -56,7 +66,6 @@ describe 'EPP Contact', epp: true do
|
||||||
|
|
||||||
it 'checks contacts' do
|
it 'checks contacts' do
|
||||||
Fabricate(:contact)
|
Fabricate(:contact)
|
||||||
Fabricate(:contact, id:'sh8914')
|
|
||||||
|
|
||||||
response = epp_request('contacts/check.xml')
|
response = epp_request('contacts/check.xml')
|
||||||
expect(response[:result_code]).to eq('1000')
|
expect(response[:result_code]).to eq('1000')
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue