From 05ed8a45a1d0974127533a15a4d69f41d0f2ef1a Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Mon, 2 Feb 2015 19:47:59 +0200 Subject: [PATCH] Added domain crID --- app/models/concerns/versions.rb | 14 ++++++ app/views/epp/domains/info.xml.builder | 2 +- spec/models/domain_spec.rb | 62 +++++++++++++++++++++++--- 3 files changed, 70 insertions(+), 8 deletions(-) diff --git a/app/models/concerns/versions.rb b/app/models/concerns/versions.rb index 829d1b5e0..8d18a2b22 100644 --- a/app/models/concerns/versions.rb +++ b/app/models/concerns/versions.rb @@ -20,6 +20,20 @@ module Versions true end + # needs refactoring + # TODO: optimization work + # belongs_to :api_creator, class_name: 'ApiUser', foreign_key: :creator_str + # belongs_to :creator, class_name: 'User', foreign_key: :creator_str + def creator + return nil if creator_str.blank? + + if creator_str =~ /^\d-api-/ + ApiUser.find(creator_str) + else + User.find(creator_str) + end + end + # callbacks def touch_domain_version domain.try(:touch_with_version) diff --git a/app/views/epp/domains/info.xml.builder b/app/views/epp/domains/info.xml.builder index 57e2ee04f..4fdcfa41c 100644 --- a/app/views/epp/domains/info.xml.builder +++ b/app/views/epp/domains/info.xml.builder @@ -36,7 +36,7 @@ xml.epp_head do xml.tag!('domain:clID', @domain.registrar_name) - xml.tag!('domain:crID', @domain.versions.first.try(:reify).try(:registrar) || @domain.registrar) #TODO Registrar has to be specified + xml.tag!('domain:crID', @domain.creator.try(:registrar)) xml.tag!('domain:crDate', @domain.created_at) diff --git a/spec/models/domain_spec.rb b/spec/models/domain_spec.rb index 27392508d..e3c91cb1e 100644 --- a/spec/models/domain_spec.rb +++ b/spec/models/domain_spec.rb @@ -51,14 +51,62 @@ describe Domain do @domain.errors.full_messages.should match_array([]) end - it 'should not have one version' do - with_versioning do - @domain.versions.should == [] - @domain.name = 'new-test-name.ee' - @domain.save - @domain.errors.full_messages.should match_array([]) - @domain.versions.size.should == 1 + context 'with versioning' do + it 'should not have one version' do + with_versioning do + @domain.versions.size.should == 0 + @domain.name = 'new-test-name.ee' + @domain.save + @domain.errors.full_messages.should match_array([]) + @domain.versions.size.should == 1 + end end + + it 'should return api_creator when created by api user' do + with_versioning do + @user = Fabricate(:user) + @api_user = Fabricate(:api_user) + @user.id.should == 1 + @api_user.id.should == 1 + ::PaperTrail.whodunnit = '1-api-testuser' + + @domain = Fabricate(:domain) + @domain.creator_str.should == '1-api-testuser' + + @domain.creator.should == @api_user + @domain.creator.should_not == @user + end + end + + it 'should return api_creator when created by api user' do + with_versioning do + @user = Fabricate(:user) + @api_user = Fabricate(:api_user) + @user.id.should == 2 + @api_user.id.should == 2 + ::PaperTrail.whodunnit = '2-testuser' + + @domain = Fabricate(:domain) + @domain.creator_str.should == '2-testuser' + + @domain.creator.should == @user + @domain.creator.should_not == @api_user + end + end + + it 'should not find api creator when created by user' do + with_versioning do + # @api_user = Fabricate(:api_user) + # @api_user.id.should == 1 + # ::PaperTrail.whodunnit = '1-testuser' + + # @domain = Fabricate(:domain) + # @domain.creator_str.should == '1-testuser' + + # @domain.api_creator.should == nil + end + end + end end