From 19d4ddf2f2158c5210a0b10cdd9934cbf93885c2 Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Thu, 25 Feb 2010 16:19:55 +0000 Subject: [PATCH] Fix LDAP on the fly creation. The User object doesn't have a :dn attribute. Fixes #4918 and adds a test for the behavior. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3485 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/user.rb | 3 ++- test/unit/user_test.rb | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 8a69fda00..496ca2137 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -111,7 +111,8 @@ class User < Principal # user is not yet registered, try to authenticate with available sources attrs = AuthSource.authenticate(login, password) if attrs - user = new(*attrs) + attributes = *attrs + user = new(attributes.symbolize_keys.except(:dn)) user.login = login user.language = Setting.default_language if user.save diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb index a94870dbc..8d5ce9742 100644 --- a/test/unit/user_test.rb +++ b/test/unit/user_test.rb @@ -120,6 +120,36 @@ class UserTest < ActiveSupport::TestCase assert_equal nil, user end + if ldap_configured? + context "#try_to_login using LDAP" do + context "on the fly registration" do + setup do + @auth_source = AuthSourceLdap.generate!(:name => 'localhost', + :host => '127.0.0.1', + :port => 389, + :base_dn => 'OU=Person,DC=redmine,DC=org', + :attr_login => 'uid', + :attr_firstname => 'givenName', + :attr_lastname => 'sn', + :attr_mail => 'mail', + :onthefly_register => true) + + end + + context "with a successful authentication" do + should "create a new user account" do + assert_difference('User.count') do + User.try_to_login('edavis', '123456') + end + end + end + end + end + + else + puts "Skipping LDAP tests." + end + def test_create_anonymous AnonymousUser.delete_all anon = User.anonymous