diff --git a/app/models/auth_source_ldap.rb b/app/models/auth_source_ldap.rb index 7adbf45bc..3642b3b31 100644 --- a/app/models/auth_source_ldap.rb +++ b/app/models/auth_source_ldap.rb @@ -71,10 +71,9 @@ class AuthSourceLdap < AuthSource with_timeout do ldap_con = initialize_ldap_con(self.account, self.account_password) ldap_con.open {} - if self.account.present? && !self.account.include?("$login") && self.account_password.present? - ldap_auth = authenticate_dn(self.account, self.account_password) - raise AuthSourceException.new(l(:error_ldap_bind_credentials)) if !ldap_auth - end + return if self.account.present? && self.account.include?("$login") + ldap_auth = authenticate_dn(self.account, self.account_password) + raise AuthSourceException.new(l(:error_ldap_bind_credentials)) if !ldap_auth end rescue *NETWORK_EXCEPTIONS => e raise AuthSourceException.new(e.message) diff --git a/test/unit/auth_source_ldap_test.rb b/test/unit/auth_source_ldap_test.rb index abbdbb7ce..79498b046 100644 --- a/test/unit/auth_source_ldap_test.rb +++ b/test/unit/auth_source_ldap_test.rb @@ -197,14 +197,6 @@ class AuthSourceLdapTest < ActiveSupport::TestCase assert_equal [], results end - def test_test_connection_with_correct_host_and_port - auth_source = AuthSourceLdap.find(1) - - assert_nothing_raised do - auth_source.test_connection - end - end - def test_test_connection_with_incorrect_host auth_source = AuthSourceLdap.find(1) auth_source.host = "badhost" @@ -233,7 +225,20 @@ class AuthSourceLdapTest < ActiveSupport::TestCase assert_equal "cn=admin,dc=redmine,dc=org", auth_source.account assert_equal "secret", auth_source.account_password - assert_nil auth_source.test_connection + assert_nothing_raised do + auth_source.test_connection + end + end + + def test_test_connection_bind_with_dynamic_bind_account + auth_source = AuthSourceLdap.find(1) + auth_source.account = "cn=$login,dc=redmine,dc=org" + auth_source.save! + + assert_equal "cn=$login,dc=redmine,dc=org", auth_source.account + assert_nothing_raised do + auth_source.test_connection + end end def test_test_connection_bind_without_account_and_password @@ -241,7 +246,9 @@ class AuthSourceLdapTest < ActiveSupport::TestCase assert_nil auth_source.account assert_equal "", auth_source.account_password - assert_nil auth_source.test_connection + assert_raise AuthSourceException do + auth_source.test_connection + end end def test_test_connection_bind_with_incorrect_account