Auth::User classes refactor adds should_save?

This commit is contained in:
James Edwards-Jones 2018-04-23 16:20:33 +01:00
parent 795cd7f952
commit dd09a19ad6
4 changed files with 10 additions and 18 deletions

View file

@ -31,15 +31,11 @@ module Gitlab
self.class.find_by_uid_and_provider(auth_hash.uid, auth_hash.provider)
end
def changed?
override :should_save?
def should_save?
gl_user.changed? || gl_user.identities.any?(&:changed?)
end
override :omniauth_should_save?
def omniauth_should_save?
changed? && super
end
def block_after_signup?
ldap_config.block_auto_created_users
end

View file

@ -69,14 +69,14 @@ module Gitlab
end
def find_and_update!
save if omniauth_should_save?
save if should_save?
gl_user
end
protected
def omniauth_should_save?
def should_save?
true
end

View file

@ -29,17 +29,13 @@ module Gitlab
user
end
def changed?
override :should_save?
def should_save?
return true unless gl_user
gl_user.changed? || gl_user.identities.any?(&:changed?)
end
override :omniauth_should_save?
def omniauth_should_save?
changed? && super
end
protected
def saml_config

View file

@ -25,20 +25,20 @@ describe Gitlab::Auth::LDAP::User do
OmniAuth::AuthHash.new(uid: 'uid=John Smith,ou=People,dc=example,dc=com', provider: 'ldapmain', info: info_upper_case)
end
describe '#changed?' do
describe '#should_save?' do
it "marks existing ldap user as changed" do
create(:omniauth_user, extern_uid: 'uid=John Smith,ou=People,dc=example,dc=com', provider: 'ldapmain')
expect(ldap_user.changed?).to be_truthy
expect(ldap_user.should_save?).to be_truthy
end
it "marks existing non-ldap user if the email matches as changed" do
create(:user, email: 'john@example.com')
expect(ldap_user.changed?).to be_truthy
expect(ldap_user.should_save?).to be_truthy
end
it "does not mark existing ldap user as changed" do
create(:omniauth_user, email: 'john@example.com', extern_uid: 'uid=john smith,ou=people,dc=example,dc=com', provider: 'ldapmain')
expect(ldap_user.changed?).to be_falsey
expect(ldap_user.should_save?).to be_falsey
end
end