summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/auth_source_ldap.rb15
-rw-r--r--test/unit/auth_source_ldap_test.rb9
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