From 183c2bb82c6e491bc9cf8d5736989188b673ced5 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Mon, 12 Dec 2016 06:27:01 +0200 Subject: [PATCH] Generate contact code manually Generate contact's code explicitly on contact:create epp request and domain transfer. Remove callback. --- app/controllers/epp/contacts_controller.rb | 13 +++++++------ app/models/contact.rb | 3 +-- app/models/epp/domain.rb | 2 +- spec/models/contact_spec.rb | 21 +++++++++------------ 4 files changed, 18 insertions(+), 21 deletions(-) diff --git a/app/controllers/epp/contacts_controller.rb b/app/controllers/epp/contacts_controller.rb index da840ade6..800237ec7 100644 --- a/app/controllers/epp/contacts_controller.rb +++ b/app/controllers/epp/contacts_controller.rb @@ -21,14 +21,15 @@ class Epp::ContactsController < EppController @contact = Epp::Contact.new(frame, current_user.registrar) @contact.add_legal_file_to_new(frame) - - @response_code = if Contact.address_processing? - 1000 - else - frame.css('postalInfo addr').size != 0 ? 1100 : 1000 - end + @contact.generate_code if @contact.save + @response_code = if Contact.address_processing? + 1000 + else + frame.css('postalInfo addr').size != 0 ? 1100 : 1000 + end + render_epp_response '/epp/contacts/create' else handle_errors(@contact) diff --git a/app/models/contact.rb b/app/models/contact.rb index 6530cb8bb..494f6c4a4 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -45,7 +45,6 @@ class Contact < ActiveRecord::Base end before_validation :to_upcase_country_code - before_validation :prefix_code before_validation :strip_email before_create :generate_auth_info @@ -366,7 +365,7 @@ class Contact < ActiveRecord::Base end # rubocop:disable Metrics/CyclomaticComplexity - def prefix_code + def generate_code return nil unless new_record? return nil if registrar.blank? code = self[:code] diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index 55590e70f..76d6eb7b6 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -646,7 +646,7 @@ class Epp::Domain < Domain oc.code = nil oc.registrar_id = registrar_id oc.copy_from_id = c.id - oc.prefix_code + oc.generate_code oc.domain_transfer = true oc.save!(validate: false) oc diff --git a/spec/models/contact_spec.rb b/spec/models/contact_spec.rb index e1c88cd53..e35a07e63 100644 --- a/spec/models/contact_spec.rb +++ b/spec/models/contact_spec.rb @@ -164,7 +164,10 @@ RSpec.describe Contact do it 'should have code' do registrar = Fabricate.create(:registrar, code: 'registrarcode') - contact = Fabricate.create(:contact, registrar: registrar, code: 'contactcode') + + contact = Fabricate.build(:contact, registrar: registrar, code: 'contactcode') + contact.generate_code + contact.save! expect(contact.code).to eq('REGISTRARCODE:CONTACTCODE') end @@ -252,16 +255,6 @@ RSpec.describe Contact do end context 'after create' do - it 'should not generate a new code when code is present' do - @contact = Fabricate.build(:contact, - registrar: Fabricate(:registrar, code: 'FIXED'), - code: 'FIXED:new-code', - auth_info: 'qwe321') - @contact.code.should == 'FIXED:new-code' # still new record - @contact.save.should == true - @contact.code.should == 'FIXED:NEW-CODE' - end - it 'should not allow to use same code' do registrar = Fabricate.create(:registrar, code: 'FIXED') @@ -299,12 +292,15 @@ RSpec.describe Contact do end it 'should generate code if empty code is given' do - @contact = Fabricate(:contact, code: '') + @contact = Fabricate.build(:contact, code: '') + @contact.generate_code + @contact.save! @contact.code.should_not == '' end it 'should not ignore empty spaces as code and generate new one' do @contact = Fabricate.build(:contact, code: ' ', registrar: Fabricate(:registrar, code: 'FIXED')) + @contact.generate_code @contact.valid?.should == true @contact.code.should =~ /FIXED:..../ end @@ -316,6 +312,7 @@ RSpec.describe Contact do registrar: Fabricate(:registrar, code: 'FIXED'), code: '123asd', auth_info: 'qwe321') + @contact.generate_code @contact.save @contact.code.should == 'FIXED:123ASD' @auth_info = @contact.auth_info