;]
[askyou.git] / test / unit / auth_source_ldap_test.rb
blob885272c1103ad4d00d23fa46fc1023da3bae624d
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.
8
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.
13
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
22   
23   def setup
24   end
25   
26   def test_create
27     a = AuthSourceLdap.new(:name => 'My LDAP', :host => 'ldap.example.net', :port => 389, :base_dn => 'dc=example,dc=net', :attr_login => 'sAMAccountName')
28     assert a.save
29   end
30   
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 ')
34     assert a.save
35     assert_equal 'givenName', a.reload.attr_firstname
36   end
38   if ldap_configured?
39     context '#authenticate' do
40       setup do
41         @auth = AuthSourceLdap.find(1)
42       end
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"
54           end
55         end
56       end
58       context 'with an invalid LDAP user' do
59         should 'return nil' do
60           assert_equal nil, @auth.authenticate('nouser','123456')
61         end
62       end
64       context 'without a login' do
65         should 'return nil' do
66           assert_equal nil, @auth.authenticate('','123456')
67         end
68       end
70       context 'without a password' do
71         should 'return nil' do
72           assert_equal nil, @auth.authenticate('edavis','')
73         end
74       end
75       
76     end
77   else
78     puts '(Test LDAP server not configured)'
79   end
80 end