diff --git a/app/helpers/epp/domains_helper.rb b/app/helpers/epp/domains_helper.rb index 2abf3aa27..fe7c1289c 100644 --- a/app/helpers/epp/domains_helper.rb +++ b/app/helpers/epp/domains_helper.rb @@ -38,6 +38,8 @@ module Epp::DomainsHelper @domain = find_domain handle_errors(@domain) and return unless @domain + handle_errors(@domain) and return unless @domain.attach_objects(@ph, parsed_frame.css('add')) + handle_errors(@domain) and return unless @domain.save render '/epp/domains/success' end diff --git a/app/models/domain.rb b/app/models/domain.rb index a420f19ee..ab4d4cda9 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -54,7 +54,7 @@ class Domain < ActiveRecord::Base ### CREATE ### def attach_objects(ph, parsed_frame) - attach_owner_contact(ph[:registrant]) + attach_owner_contact(ph[:registrant]) if ph[:registrant] attach_contacts(self.class.parse_contacts_from_frame(parsed_frame)) attach_nameservers(self.class.parse_nameservers_from_frame(parsed_frame)) diff --git a/spec/epp/domain_spec.rb b/spec/epp/domain_spec.rb index 87d5a5f60..3199d13cb 100644 --- a/spec/epp/domain_spec.rb +++ b/spec/epp/domain_spec.rb @@ -244,13 +244,23 @@ describe 'EPP Domain', epp: true do expect(response[:results][0][:msg]).to eq('Domain not found') end - it 'updates domain', pending: true do + it 'updates domain' do + response = epp_request('domains/update.xml') + expect(response[:results][0][:result_code]).to eq('2303') + expect(response[:results][0][:msg]).to eq('Contact was not found') + + Fabricate(:contact, code: 'mak21') + response = epp_request('domains/update.xml') expect(response[:results][0][:result_code]).to eq('1000') d = Domain.first + new_ns = d.nameservers.find_by(hostname: 'ns2.example.com') expect(new_ns).to be_truthy + + new_contact = d.tech_contacts.find_by(code: 'mak21') + expect(new_contact).to be_truthy end end