diff options
-rw-r--r-- | app/models/auth_source_ldap.rb | 15 | ||||
-rw-r--r-- | test/unit/auth_source_ldap_test.rb | 9 |
2 files changed, 17 insertions, 7 deletions
diff --git a/app/models/auth_source_ldap.rb b/app/models/auth_source_ldap.rb index a619b2f85..04f4c89b3 100644 --- a/app/models/auth_source_ldap.rb +++ b/app/models/auth_source_ldap.rb @@ -44,10 +44,8 @@ class AuthSourceLdap < AuthSource # only ask for the DN if on-the-fly registration is disabled :attributes=> (onthefly_register? ? ['dn', self.attr_firstname, self.attr_lastname, self.attr_mail] : ['dn'])) do |entry| dn = entry.dn - attrs = [:firstname => AuthSourceLdap.get_attr(entry, self.attr_firstname), - :lastname => AuthSourceLdap.get_attr(entry, self.attr_lastname), - :mail => AuthSourceLdap.get_attr(entry, self.attr_mail), - :auth_source_id => self.id ] if onthefly_register? + attrs = get_user_attributes_from_ldap_entry(entry) if onthefly_register? + end return nil if dn.empty? logger.debug "DN found for #{login}: #{dn}" if logger && logger.debug? @@ -89,6 +87,15 @@ class AuthSourceLdap < AuthSource options.merge!(:auth => { :method => :simple, :username => ldap_user, :password => ldap_password }) unless ldap_user.blank? && ldap_password.blank? Net::LDAP.new options end + + def get_user_attributes_from_ldap_entry(entry) + [ + :firstname => AuthSourceLdap.get_attr(entry, self.attr_firstname), + :lastname => AuthSourceLdap.get_attr(entry, self.attr_lastname), + :mail => AuthSourceLdap.get_attr(entry, self.attr_mail), + :auth_source_id => self.id + ] + end def self.get_attr(entry, attr_name) if !attr_name.blank? diff --git a/test/unit/auth_source_ldap_test.rb b/test/unit/auth_source_ldap_test.rb index 16cc614fb..d9f13ac82 100644 --- a/test/unit/auth_source_ldap_test.rb +++ b/test/unit/auth_source_ldap_test.rb @@ -52,19 +52,22 @@ class AuthSourceLdapTest < ActiveSupport::TestCase context 'with a valid LDAP user' do should 'return the firstname user attributes' do response = @auth.authenticate('example1','123456') - assert response + assert response.is_a?(Array), "An array was not returned" + assert response.first.present?, "No user data returned" assert_equal 'Example', response.first[:firstname] end should 'return the lastname user attributes' do response = @auth.authenticate('example1','123456') - assert response + assert response.is_a?(Array), "An array was not returned" + assert response.first.present?, "No user data returned" assert_equal 'One', response.first[:lastname] end should 'return mail user attributes' do response = @auth.authenticate('example1','123456') - assert response + assert response.is_a?(Array), "An array was not returned" + assert response.first.present?, "No user data returned" assert_equal 'example1@redmine.org', response.first[:mail] end end |