Index: app/models/auth_source_ldap.rb =================================================================== --- app/models/auth_source_ldap.rb (revisión: 14992) +++ app/models/auth_source_ldap.rb (copia de trabajo) @@ -56,11 +56,16 @@ raise AuthSourceException.new(e.message) end - # test the connection to the LDAP + # Test the connection to the LDAP def test_connection with_timeout do ldap_con = initialize_ldap_con(self.account, self.account_password) ldap_con.open { } + + if self.account.present? && 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 end rescue *NETWORK_EXCEPTIONS => e raise AuthSourceException.new(e.message) Index: config/locales/ar.yml =================================================================== --- config/locales/ar.yml (revisión: 14992) +++ config/locales/ar.yml (copia de trabajo) @@ -1182,3 +1182,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/az.yml =================================================================== --- config/locales/az.yml (revisión: 14992) +++ config/locales/az.yml (copia de trabajo) @@ -1277,3 +1277,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/bg.yml =================================================================== --- config/locales/bg.yml (revisión: 14992) +++ config/locales/bg.yml (copia de trabajo) @@ -1173,3 +1173,4 @@ description_date_to: Въведете крайна дата text_repository_identifier_info: 'Позволени са малки букви (a-z), цифри, тирета и _.
Промяна след създаването му не е възможна.' label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/bs.yml =================================================================== --- config/locales/bs.yml (revisión: 14992) +++ config/locales/bs.yml (copia de trabajo) @@ -1195,3 +1195,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/ca.yml =================================================================== --- config/locales/ca.yml (revisión: 14992) +++ config/locales/ca.yml (copia de trabajo) @@ -1184,3 +1184,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Compte/Contrasenya LDAP incorrecte Index: config/locales/cs.yml =================================================================== --- config/locales/cs.yml (revisión: 14992) +++ config/locales/cs.yml (copia de trabajo) @@ -1183,3 +1183,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/da.yml =================================================================== --- config/locales/da.yml (revisión: 14992) +++ config/locales/da.yml (copia de trabajo) @@ -1199,3 +1199,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/de.yml =================================================================== --- config/locales/de.yml (revisión: 14992) +++ config/locales/de.yml (copia de trabajo) @@ -1191,3 +1191,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/el.yml =================================================================== --- config/locales/el.yml (revisión: 14992) +++ config/locales/el.yml (copia de trabajo) @@ -1182,3 +1182,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/en-GB.yml =================================================================== --- config/locales/en-GB.yml (revisión: 14992) +++ config/locales/en-GB.yml (copia de trabajo) @@ -1184,3 +1184,4 @@ setting_attachment_extensions_allowed: Allowed extensions setting_attachment_extensions_denied: Disallowed extensions label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/en.yml =================================================================== --- config/locales/en.yml (revisión: 14992) +++ config/locales/en.yml (copia de trabajo) @@ -1169,3 +1169,4 @@ description_date_from: Enter start date description_date_to: Enter end date text_repository_identifier_info: 'Only lower case letters (a-z), numbers, dashes and underscores are allowed.
Once saved, the identifier cannot be changed.' + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/es-PA.yml =================================================================== --- config/locales/es-PA.yml (revisión: 14992) +++ config/locales/es-PA.yml (copia de trabajo) @@ -932,7 +932,7 @@ label_subtask_plural: Subtareas label_project_copy_notifications: Enviar notificaciones por correo electrónico durante la copia del proyecto error_can_not_delete_custom_field: Fue imposible eliminar el campo personalizado - error_unable_to_connect: Fue imposible conectar con (%{value}) + error_unable_to_connect: Fue imposible conectarse (%{value}) error_can_not_remove_role: Este rol está en uso y no puede ser eliminado. error_can_not_delete_tracker: Este tipo contiene incidencias y no puede ser eliminado. field_principal: Principal @@ -1216,3 +1216,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Cuenta/Contraseña LDAP incorrecta Index: config/locales/es.yml =================================================================== --- config/locales/es.yml (revisión: 14992) +++ config/locales/es.yml (copia de trabajo) @@ -930,7 +930,7 @@ label_subtask_plural: Subtareas label_project_copy_notifications: Enviar notificaciones por correo electrónico durante la copia del proyecto error_can_not_delete_custom_field: Fue imposible eliminar el campo personalizado - error_unable_to_connect: Fue imposible conectar con (%{value}) + error_unable_to_connect: Fue imposible conectarse (%{value}) error_can_not_remove_role: Este rol está en uso y no puede ser eliminado. error_can_not_delete_tracker: Este tipo contiene peticiones y no puede ser eliminado. field_principal: Principal @@ -1214,3 +1214,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Cuenta/Contraseña LDAP incorrecta Index: config/locales/et.yml =================================================================== --- config/locales/et.yml (revisión: 14992) +++ config/locales/et.yml (copia de trabajo) @@ -1195,3 +1195,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/eu.yml =================================================================== --- config/locales/eu.yml (revisión: 14992) +++ config/locales/eu.yml (copia de trabajo) @@ -1183,3 +1183,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/fa.yml =================================================================== --- config/locales/fa.yml (revisión: 14992) +++ config/locales/fa.yml (copia de trabajo) @@ -1183,3 +1183,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/fi.yml =================================================================== --- config/locales/fi.yml (revisión: 14992) +++ config/locales/fi.yml (copia de trabajo) @@ -1203,3 +1203,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/fr.yml =================================================================== --- config/locales/fr.yml (revisión: 14992) +++ config/locales/fr.yml (copia de trabajo) @@ -1189,3 +1189,4 @@ text_repository_identifier_info: 'Seuls les lettres minuscules (a-z), chiffres, tirets et tirets bas sont autorisés.
Un fois sauvegardé, l''identifiant ne pourra plus être modifié.' label_parent_task_attributes_derived: Calculated from subtasks label_parent_task_attributes_independent: Independent of subtasks + error_ldap_bind_credentials: Compte/Mot de Passe LDAP incorrect Index: config/locales/gl.yml =================================================================== --- config/locales/gl.yml (revisión: 14992) +++ config/locales/gl.yml (copia de trabajo) @@ -1190,3 +1190,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/he.yml =================================================================== --- config/locales/he.yml (revisión: 14992) +++ config/locales/he.yml (copia de trabajo) @@ -1187,3 +1187,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/hr.yml =================================================================== --- config/locales/hr.yml (revisión: 14992) +++ config/locales/hr.yml (copia de trabajo) @@ -1181,3 +1181,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/hu.yml =================================================================== --- config/locales/hu.yml (revisión: 14992) +++ config/locales/hu.yml (copia de trabajo) @@ -1201,3 +1201,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/id.yml =================================================================== --- config/locales/id.yml (revisión: 14992) +++ config/locales/id.yml (copia de trabajo) @@ -1186,3 +1186,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/it.yml =================================================================== --- config/locales/it.yml (revisión: 14992) +++ config/locales/it.yml (copia de trabajo) @@ -1177,3 +1177,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/ja.yml =================================================================== --- config/locales/ja.yml (revisión: 14992) +++ config/locales/ja.yml (copia de trabajo) @@ -1195,3 +1195,4 @@ label_any_open_issues: 未完了のチケット label_no_open_issues: なし または完了したチケット label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/ko.yml =================================================================== --- config/locales/ko.yml (revisión: 14992) +++ config/locales/ko.yml (copia de trabajo) @@ -1226,3 +1226,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/lt.yml =================================================================== --- config/locales/lt.yml (revisión: 14992) +++ config/locales/lt.yml (copia de trabajo) @@ -1241,3 +1241,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/lv.yml =================================================================== --- config/locales/lv.yml (revisión: 14992) +++ config/locales/lv.yml (copia de trabajo) @@ -1176,3 +1176,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/mk.yml =================================================================== --- config/locales/mk.yml (revisión: 14992) +++ config/locales/mk.yml (copia de trabajo) @@ -1182,3 +1182,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/mn.yml =================================================================== --- config/locales/mn.yml (revisión: 14992) +++ config/locales/mn.yml (copia de trabajo) @@ -1183,3 +1183,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/nl.yml =================================================================== --- config/locales/nl.yml (revisión: 14992) +++ config/locales/nl.yml (copia de trabajo) @@ -1161,3 +1161,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/no.yml =================================================================== --- config/locales/no.yml (revisión: 14992) +++ config/locales/no.yml (copia de trabajo) @@ -1172,3 +1172,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/pl.yml =================================================================== --- config/locales/pl.yml (revisión: 14992) +++ config/locales/pl.yml (copia de trabajo) @@ -1197,3 +1197,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/pt-BR.yml =================================================================== --- config/locales/pt-BR.yml (revisión: 14992) +++ config/locales/pt-BR.yml (copia de trabajo) @@ -1201,3 +1201,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Conta/Palavra-chave do LDAP não é válida Index: config/locales/pt.yml =================================================================== --- config/locales/pt.yml (revisión: 14992) +++ config/locales/pt.yml (copia de trabajo) @@ -1184,3 +1184,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Conta/Palavra-chave do LDAP não é válida Index: config/locales/ro.yml =================================================================== --- config/locales/ro.yml (revisión: 14992) +++ config/locales/ro.yml (copia de trabajo) @@ -1177,3 +1177,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/ru.yml =================================================================== --- config/locales/ru.yml (revisión: 14992) +++ config/locales/ru.yml (copia de trabajo) @@ -1285,3 +1285,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/sk.yml =================================================================== --- config/locales/sk.yml (revisión: 14992) +++ config/locales/sk.yml (copia de trabajo) @@ -1172,3 +1172,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/sl.yml =================================================================== --- config/locales/sl.yml (revisión: 14992) +++ config/locales/sl.yml (copia de trabajo) @@ -1182,3 +1182,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/sq.yml =================================================================== --- config/locales/sq.yml (revisión: 14992) +++ config/locales/sq.yml (copia de trabajo) @@ -1178,3 +1178,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/sr-YU.yml =================================================================== --- config/locales/sr-YU.yml (revisión: 14992) +++ config/locales/sr-YU.yml (copia de trabajo) @@ -1184,3 +1184,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/sr.yml =================================================================== --- config/locales/sr.yml (revisión: 14992) +++ config/locales/sr.yml (copia de trabajo) @@ -1183,3 +1183,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/sv.yml =================================================================== --- config/locales/sv.yml (revisión: 14992) +++ config/locales/sv.yml (copia de trabajo) @@ -1215,3 +1215,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/th.yml =================================================================== --- config/locales/th.yml (revisión: 14992) +++ config/locales/th.yml (copia de trabajo) @@ -1179,3 +1179,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/tr.yml =================================================================== --- config/locales/tr.yml (revisión: 14992) +++ config/locales/tr.yml (copia de trabajo) @@ -1191,3 +1191,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/uk.yml =================================================================== --- config/locales/uk.yml (revisión: 14992) +++ config/locales/uk.yml (copia de trabajo) @@ -1177,3 +1177,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/vi.yml =================================================================== --- config/locales/vi.yml (revisión: 14992) +++ config/locales/vi.yml (copia de trabajo) @@ -1235,3 +1235,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/zh-TW.yml =================================================================== --- config/locales/zh-TW.yml (revisión: 14992) +++ config/locales/zh-TW.yml (copia de trabajo) @@ -1256,3 +1256,4 @@ description_date_to: 輸入結束日期 text_repository_identifier_info: '僅允許使用小寫英文字母 (a-z), 阿拉伯數字, 虛線與底線。
一旦儲存之後, 代碼便無法再次被更改。' label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: config/locales/zh.yml =================================================================== --- config/locales/zh.yml (revisión: 14992) +++ config/locales/zh.yml (copia de trabajo) @@ -1179,3 +1179,4 @@ label_any_open_issues: any open issues label_no_open_issues: no open issues label_default_values_for_new_users: Default values for new users + error_ldap_bind_credentials: Invalid LDAP Account/Password Index: test/unit/auth_source_ldap_test.rb =================================================================== --- test/unit/auth_source_ldap_test.rb (revisión: 14992) +++ test/unit/auth_source_ldap_test.rb (copia de trabajo) @@ -24,6 +24,26 @@ def setup end + def test_initialize + auth_source = AuthSourceLdap.new + assert_nil auth_source.id + assert_equal "AuthSourceLdap", auth_source.type + assert_equal "", auth_source.name + assert_nil auth_source.host + assert_nil auth_source.port + assert_nil auth_source.account + assert_equal "", auth_source.account_password + assert_nil auth_source.base_dn + assert_nil auth_source.attr_login + assert_nil auth_source.attr_firstname + assert_nil auth_source.attr_lastname + assert_nil auth_source.attr_mail + assert_equal false, auth_source.onthefly_register + assert_equal false, auth_source.tls + assert_nil auth_source.filter + assert_nil auth_source.timeout + end + def test_create a = AuthSourceLdap.new(:name => 'My LDAP', :host => 'ldap.example.net', :port => 389, :base_dn => 'dc=example,dc=net', :attr_login => 'sAMAccountName') assert a.save @@ -135,6 +155,103 @@ results = AuthSource.search("exa") assert_equal [], results end + + def test_ldap_with_correct_host + auth_source = AuthSourceLdap.find(1) + + assert_equal "127.0.0.1", auth_source.host + assert_equal 389, auth_source.port + assert_nothing_raised Net::LDAP::Error do + auth_source.test_connection + end + end + + def test_ldap_with_incorrect_host + auth_source = AuthSourceLdap.find(1) + auth_source.host = "badhost" + auth_source.save! + + assert_equal "badhost", auth_source.host + assert_equal 389, auth_source.port + assert_raise Net::LDAP::Error do + auth_source.test_connection + end + end + + def test_ldap_with_correct_port + auth_source = AuthSourceLdap.find(1) + + assert_equal "127.0.0.1", auth_source.host + assert_equal 389, auth_source.port + assert_nothing_raised Net::LDAP::Error do + auth_source.test_connection + end + end + + def test_ldap_with_incorrect_port + auth_source = AuthSourceLdap.find(1) + auth_source.port = 1234 + auth_source.save! + + assert_equal "127.0.0.1", auth_source.host + assert_equal 1234, auth_source.port + assert_raise Net::LDAP::Error do + auth_source.test_connection + end + end + + def test_ldap_bind_with_account_and_password + auth_source = AuthSourceLdap.find(1) + auth_source.account = "cn=Manager,dc=redmine,dc=org" + auth_source.account_password = "secret" + auth_source.save! + + assert_equal "127.0.0.1", auth_source.host + assert_equal 389, auth_source.port + assert_equal "cn=Manager,dc=redmine,dc=org", auth_source.account + assert_equal "secret", auth_source.account_password + assert_nil auth_source.test_connection + end + + def test_ldap_bind_without_account_and_password + auth_source = AuthSourceLdap.find(1) + + assert_equal "127.0.0.1", auth_source.host + assert_equal 389, auth_source.port + assert_nil auth_source.account + assert_equal "", auth_source.account_password + assert_nil auth_source.test_connection + end + + def test_ldap_bind_with_incorrect_account + auth_source = AuthSourceLdap.find(1) + auth_source.account = "cn=baduser,dc=redmine,dc=org" + auth_source.account_password = "secret" + auth_source.save! + + assert_equal "127.0.0.1", auth_source.host + assert_equal 389, auth_source.port + assert_equal "cn=baduser,dc=redmine,dc=org", auth_source.account + assert_equal "secret", auth_source.account_password + assert_raise AuthSourceException do + auth_source.test_connection + end + end + + def test_ldap_bind_with_incorrect_password + auth_source = AuthSourceLdap.find(1) + auth_source.account = "cn=Manager,dc=redmine,dc=org" + auth_source.account_password = "badpassword" + auth_source.save! + + assert_equal "127.0.0.1", auth_source.host + assert_equal 389, auth_source.port + assert_equal "cn=Manager,dc=redmine,dc=org", auth_source.account + assert_equal "badpassword", auth_source.account_password + assert_raise AuthSourceException do + auth_source.test_connection + end + end else puts '(Test LDAP server not configured)' end