1 # Redmine - project management software
2 # Copyright (C) 2006-2008 Jean-Philippe Lang
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 require File.dirname(__FILE__) + '/../test_helper'
20 class AuthSourceLdapTest < ActiveSupport::TestCase
21 fixtures :auth_sources
27 a = AuthSourceLdap.new(:name => 'My LDAP', :host => 'ldap.example.net', :port => 389, :base_dn => 'dc=example,dc=net', :attr_login => 'sAMAccountName')
31 def test_should_strip_ldap_attributes
32 a = AuthSourceLdap.new(:name => 'My LDAP', :host => 'ldap.example.net', :port => 389, :base_dn => 'dc=example,dc=net', :attr_login => 'sAMAccountName',
33 :attr_firstname => 'givenName ')
35 assert_equal 'givenName', a.reload.attr_firstname
39 context '#authenticate' do
41 @auth = AuthSourceLdap.find(1)
44 context 'with a valid LDAP user' do
45 should 'return the user attributes' do
46 attributes = @auth.authenticate('example1','123456')
47 assert attributes.is_a?(Hash), "An hash was not returned"
48 assert_equal 'Example', attributes[:firstname]
49 assert_equal 'One', attributes[:lastname]
50 assert_equal 'example1@redmine.org', attributes[:mail]
51 assert_equal @auth.id, attributes[:auth_source_id]
52 attributes.keys.each do |attribute|
53 assert User.new.respond_to?("#{attribute}="), "Unexpected :#{attribute} attribute returned"
58 context 'with an invalid LDAP user' do
59 should 'return nil' do
60 assert_equal nil, @auth.authenticate('nouser','123456')
64 context 'without a login' do
65 should 'return nil' do
66 assert_equal nil, @auth.authenticate('','123456')
70 context 'without a password' do
71 should 'return nil' do
72 assert_equal nil, @auth.authenticate('edavis','')
78 puts '(Test LDAP server not configured)'