diff options
author | Francisco Javier López <fjlopez@gitlab.com> | 2017-12-20 17:30:29 +0100 |
---|---|---|
committer | Francisco Javier López <fjlopez@gitlab.com> | 2017-12-21 12:46:26 +0100 |
commit | 3ccfee8514c175046da33b83e077b05e2ebde45f (patch) | |
tree | fc01f998d8b4024fbcd1d6dfe0cf0ffa437d41a7 | |
parent | 7c920fead3d564a061be25d94241f276fd8b315a (diff) | |
download | gitlab-ce-fj-40279-normalize-ldap-dn-api.tar.gz |
Refactoring callback and added specsfj-40279-normalize-ldap-dn-api
-rw-r--r-- | app/models/identity.rb | 4 | ||||
-rw-r--r-- | changelogs/unreleased/fj-40279-normalize-ldap-dn-api.yml | 5 | ||||
-rw-r--r-- | spec/models/identity_spec.rb | 27 |
3 files changed, 34 insertions, 2 deletions
diff --git a/app/models/identity.rb b/app/models/identity.rb index cf2f4059ec6..b3fa7d8176a 100644 --- a/app/models/identity.rb +++ b/app/models/identity.rb @@ -8,7 +8,7 @@ class Identity < ActiveRecord::Base validates :extern_uid, allow_blank: true, uniqueness: { scope: :provider, case_sensitive: false } validates :user_id, uniqueness: { scope: :provider } - before_save :ensure_normalized_extern_uid + before_save :ensure_normalized_extern_uid, if: :extern_uid_changed? scope :with_provider, ->(provider) { where(provider: provider) } scope :with_extern_uid, ->(provider, extern_uid) do @@ -30,7 +30,7 @@ class Identity < ActiveRecord::Base private def ensure_normalized_extern_uid - return if extern_uid.nil? || !extern_uid_changed? + return if extern_uid.nil? self.extern_uid = Identity.normalize_uid(self.provider, self.extern_uid) end diff --git a/changelogs/unreleased/fj-40279-normalize-ldap-dn-api.yml b/changelogs/unreleased/fj-40279-normalize-ldap-dn-api.yml new file mode 100644 index 00000000000..3fd8b0eb988 --- /dev/null +++ b/changelogs/unreleased/fj-40279-normalize-ldap-dn-api.yml @@ -0,0 +1,5 @@ +--- +title: Normalizing Identity extern_uid when saving the record +merge_request: +author: +type: fixed diff --git a/spec/models/identity_spec.rb b/spec/models/identity_spec.rb index a45a6088831..7c66c98231b 100644 --- a/spec/models/identity_spec.rb +++ b/spec/models/identity_spec.rb @@ -44,4 +44,31 @@ describe Identity do end end end + + context 'callbacks' do + context 'before_save' do + describe 'normalizes extern uid' do + let!(:ldap_identity) { create(:identity, provider: 'ldapmain', extern_uid: 'uid=john smith,ou=people,dc=example,dc=com') } + + it 'if extern_uid changes' do + expect(ldap_identity).not_to receive(:ensure_normalized_extern_uid) + ldap_identity.save + end + + it 'if current_uid is nil' do + expect(ldap_identity).to receive(:ensure_normalized_extern_uid) + + ldap_identity.update(extern_uid: nil) + + expect(ldap_identity.extern_uid).to be_nil + end + + it 'if extern_uid changed and not nil' do + ldap_identity.update(extern_uid: 'uid=john1,ou=PEOPLE,dc=example,dc=com') + + expect(ldap_identity.extern_uid).to eq 'uid=john1,ou=people,dc=example,dc=com' + end + end + end + end end |