1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
/*
* SonarQube
* Copyright (C) 2009-2025 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.sonar.auth.ldap;
import org.junit.Test;
import org.sonar.api.config.Configuration;
import org.sonar.api.config.internal.MapSettings;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
public class LdapUserMappingTest {
@Test
public void defaults() {
MapSettings mapSettings = new MapSettings().setProperty("ldap.user.baseDn", "cn=users");
LdapUserMapping userMapping = new LdapUserMapping(mapSettings.asConfig(), "ldap");
assertThat(userMapping.getBaseDn()).isEqualTo("cn=users");
assertThat(userMapping.getRequest()).isEqualTo("(&(objectClass=inetOrgPerson)(uid={0}))");
assertThat(userMapping.getRealNameAttribute()).isEqualTo("cn");
assertThat(userMapping.getEmailAttribute()).isEqualTo("mail");
assertThat(userMapping).hasToString("LdapUserMapping{" +
"baseDn=cn=users," +
" request=(&(objectClass=inetOrgPerson)(uid={0}))," +
" realNameAttribute=cn," +
" emailAttribute=mail}");
}
@Test
public void activeDirectory() {
MapSettings settings = new MapSettings()
.setProperty("ldap.user.baseDn", "cn=users")
.setProperty("ldap.user.request", "(&(objectClass=user)(sAMAccountName={0}))");
LdapUserMapping userMapping = new LdapUserMapping(settings.asConfig(), "ldap");
LdapSearch search = userMapping.createSearch(null, "tester");
assertThat(search.getBaseDn()).isEqualTo("cn=users");
assertThat(search.getRequest()).isEqualTo("(&(objectClass=user)(sAMAccountName={0}))");
assertThat(search.getParameters()).isEqualTo(new String[] {"tester"});
assertThat(search.getReturningAttributes()).isNull();
assertThat(userMapping).hasToString("LdapUserMapping{" +
"baseDn=cn=users," +
" request=(&(objectClass=user)(sAMAccountName={0}))," +
" realNameAttribute=cn," +
" emailAttribute=mail}");
}
@Test
public void ldapUserMapping_shouldThrowException_whenUserBaseDnIsNotSet() {
Configuration config = new MapSettings()
.setProperty("ldap.realm", "example.org")
.setProperty("ldap.userObjectClass", "user")
.setProperty("ldap.loginAttribute", "sAMAccountName")
.asConfig();
assertThatThrownBy(() -> new LdapUserMapping(config, "ldap"))
.isInstanceOf(LdapException.class)
.hasMessage("The property 'ldap.user.baseDn' property is empty while it is mandatory.");
}
}
|