r195 - in trunk: faxtomail-persistence/src/main/java/com/franciaflex/faxtomail faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ldap faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service
Author: echatellier Date: 2014-06-11 19:03:55 +0200 (Wed, 11 Jun 2014) New Revision: 195 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/195 Log: Import des utilisateurs et groupe du ldap (tous !!!) Removed: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ldap/LdapUser.java trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/LdapServiceTest.java Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapService.java Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java 2014-06-11 16:00:34 UTC (rev 194) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfiguration.java 2014-06-11 17:03:55 UTC (rev 195) @@ -251,6 +251,14 @@ public String getLdapPassword() { return applicationConfig.getOption(FaxToMailConfigurationOption.LDAP_PASSWORD.getKey()); } + + public String getLdapBaseDn() { + return applicationConfig.getOption(FaxToMailConfigurationOption.LDAP_BASEDN.getKey()); + } + + public String getLdapPrincipalDomain() { + return applicationConfig.getOption(FaxToMailConfigurationOption.LDAP_PRINCIPAL_DOMAIN.getKey()); + } public String getLdapTestPrincipal() { return applicationConfig.getOption(FaxToMailConfigurationOption.LDAP_TEST_PRINCIPAL.getKey()); Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java =================================================================== --- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java 2014-06-11 16:00:34 UTC (rev 194) +++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/FaxToMailConfigurationOption.java 2014-06-11 17:03:55 UTC (rev 195) @@ -103,6 +103,14 @@ "faxtomail.ldap.password", "Mot de passe pour la connexion au serveur LDAP", null, String.class), + LDAP_BASEDN( + "faxtomail.ldap.basedn", + "Mot de passe pour la connexion au serveur LDAP", "DC=mac-groupe,DC=net", String.class), + + LDAP_PRINCIPAL_DOMAIN( + "faxtomail.ldap.principal.domain", + "Mot de passe pour la connexion au serveur LDAP", "mac-groupe.net", String.class), + LDAP_TEST_PRINCIPAL( "faxtomail.ldap.test.principal", "Principal de test pour forcer un utilsateur particulier", null, String.class), Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java 2014-06-11 16:00:34 UTC (rev 194) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java 2014-06-11 17:03:55 UTC (rev 195) @@ -211,7 +211,7 @@ public List<FaxToMailUser> getAllUsers() { FaxToMailUserTopiaDao faxToMailUserDao = getPersistenceContext().getFaxToMailUserDao(); - return faxToMailUserDao.forAll().setOrderByArguments(FaxToMailUser.PROPERTY_FIRST_NAME, FaxToMailUser.PROPERTY_LAST_NAME).find(0, 50); + return faxToMailUserDao.forAll().setOrderByArguments(FaxToMailUser.PROPERTY_FIRST_NAME, FaxToMailUser.PROPERTY_LAST_NAME).findAll(); } public void saveUserFolders(Map<String, Collection<MailFolder>> userFolders) { Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapService.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapService.java 2014-06-11 16:00:34 UTC (rev 194) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapService.java 2014-06-11 17:03:55 UTC (rev 195) @@ -42,7 +42,6 @@ import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserTopiaDao; import com.franciaflex.faxtomail.services.FaxToMailServiceSupport; import com.franciaflex.faxtomail.services.service.ldap.AuthenticationException; -import com.franciaflex.faxtomail.services.service.ldap.LdapUser; import com.unboundid.ldap.sdk.LDAPConnection; import com.unboundid.ldap.sdk.LDAPException; import com.unboundid.ldap.sdk.LDAPSearchException; @@ -55,82 +54,42 @@ private static final Log log = LogFactory.getLog(LdapService.class); /** - * Get ldap connection. - * - * @return - * @throws LDAPException + * Update all user and group from ldap. */ - protected LDAPConnection getLDAPConnection() throws LDAPException { - // host, port, username and password - return new LDAPConnection(getApplicationConfig().getLdapHost(), - getApplicationConfig().getLdapPort(), - getApplicationConfig().getLdapUser(), - getApplicationConfig().getLdapPassword()); - } + public void updateLdapData() { - /** - * Get all user from ldap. - * - * @return ldap users with group infos - */ - public Collection<LdapUser> getAllLdapUsers() { - Collection<LdapUser> results = new ArrayList<>(); - - // ldapsearch -h ldap.codelutin.home -b "ou=People,DC=codelutin,DC=home" "objectClass=posixGroup" - // ldapsearch -h ldap.codelutin.home -b "ou=People,DC=codelutin,DC=home" "objectClass=account" - String[] baseDNs = { - "OU=Utilisateurs,OU=Faber,OU=Utilisateurs,OU=Mac-Groupe,DC=mac-groupe,DC=net", - "OU=OU Informatique,OU=France-Fermetures,OU=Utilisateurs,OU=Mac-Groupe,DC=mac-groupe,DC=net", - - // OU=Franciaflex,OU=Utilisateurs,OU=Mac-Groupe,DC=mac-groupe,DC=net - "OU=Utilisateurs,OU=Carros,OU=Franciaflex,OU=Utilisateurs,OU=Mac-Groupe,DC=mac-groupe,DC=net", - "OU=Utilisateurs,OU=Checy,OU=Franciaflex,OU=Utilisateurs,OU=Mac-Groupe,DC=mac-groupe,DC=net", - "OU=Utilisateurs,OU=Guipry,OU=Franciaflex,OU=Utilisateurs,OU=Mac-Groupe,DC=mac-groupe,DC=net", - "OU=Utilisateurs,OU=LeRheu,OU=Franciaflex,OU=Utilisateurs,OU=Mac-Groupe,DC=mac-groupe,DC=net", - "OU=Utilisateurs,OU=Luzech,OU=Franciaflex,OU=Utilisateurs,OU=Mac-Groupe,DC=mac-groupe,DC=net", - "OU=Utilisateurs,OU=MaisonAlfort,OU=Franciaflex,OU=Utilisateurs,OU=Mac-Groupe,DC=mac-groupe,DC=net", - "OU=Utilisateurs,OU=Mauguio,OU=Franciaflex,OU=Utilisateurs,OU=Mac-Groupe,DC=mac-groupe,DC=net", - "OU=Utilisateurs,OU=Migennes,OU=Franciaflex,OU=Utilisateurs,OU=Mac-Groupe,DC=mac-groupe,DC=net", - "OU=Utilisateurs,OU=Nomades,OU=Franciaflex,OU=Utilisateurs,OU=Mac-Groupe,DC=mac-groupe,DC=net", - "OU=Utilisateurs,OU=RocheToirin,OU=Franciaflex,OU=Utilisateurs,OU=Mac-Groupe,DC=mac-groupe,DC=net" - }; - String filter = "(objectClass=user)"; - LDAPConnection connection = null; try { - connection = getLDAPConnection(); + connection = new LDAPConnection(getApplicationConfig().getLdapHost(), + getApplicationConfig().getLdapPort(), + getApplicationConfig().getLdapUser(), + getApplicationConfig().getLdapPassword()); if (connection.isConnected()) { - for (String baseDN : baseDNs) { - SearchResult searchResult = connection.search(baseDN, SearchScope.ONE, filter); + String baseDN = "OU=Utilisateurs,OU=Mac-Groupe,DC=mac-groupe,DC=net"; + // on recupere d'abord les organisationUnit + SearchResult unitResult = connection.search(baseDN, SearchScope.SUB, "(objectClass=organizationalUnit)"); + List<SearchResultEntry> unitEntries = unitResult.getSearchEntries(); + for (SearchResultEntry unitEntry : unitEntries) { + if (log.isDebugEnabled()) { + log.debug("Search for unit " + unitEntry.getDN()); + } + SearchResult userResult = connection.search(unitEntry.getDN(), SearchScope.ONE, "(objectClass=user)"); - List<SearchResultEntry> searchEntries = searchResult.getSearchEntries(); - for (SearchResultEntry searchEntry : searchEntries) { - LdapUser user = new LdapUser(); - user.setLogin(searchEntry.getAttributeValue("sn")); + List<SearchResultEntry> userEntries = userResult.getSearchEntries(); + for (SearchResultEntry userEntry : userEntries) { - // Parse name - String fullName = searchEntry.getAttributeValue("name"); - if (fullName.indexOf(' ') != -1) { - String lastName = fullName.substring(0, fullName.indexOf(' ')); - String firstName = fullName.substring(fullName.indexOf(' ') + 1); - user.setFirstName(firstName); - user.setLastName(lastName); + String login = userEntry.getAttributeValue("sn"); + if (login == null) { + if (log.isWarnEnabled()) { + log.warn("Null sn for DN " + userEntry.getDN()); + } } else { - user.setFirstName(""); - user.setLastName(fullName); + updateUserFormLdap(userEntry, login); } - - // parse groups - String[] groups = searchEntry.getAttributeValues("memberOf"); - if (ArrayUtils.isNotEmpty(groups)) { - for (String group : groups) { - user.addGroup(group); - } - } - - results.add(user); } } + + getPersistenceContext().commit(); } } catch (LDAPException ex) { throw new RuntimeException("Can't connect to ldap", ex); @@ -139,72 +98,9 @@ connection.close(); } } - - return results; } /** - * Recupere les utilisateurs/groupes du ldap et met à jour la base locale. - */ - public void updateLdapData() { - if (StringUtils.isBlank(getApplicationConfig().getLdapHost())) { - if (log.isDebugEnabled()) { - log.debug("Ldap service not configured !"); - } - return; - } else { - if (log.isDebugEnabled()) { - log.debug("Updating user data from ldap"); - } - } - - Collection<LdapUser> ldapUsers = getAllLdapUsers(); - - FaxToMailUserTopiaDao faxtomailUserDao = getPersistenceContext().getFaxToMailUserDao(); - FaxToMailUserGroupTopiaDao faxToMailUserGroupDao = getPersistenceContext().getFaxToMailUserGroupDao(); - Binder<FaxToMailUser, FaxToMailUser> userBinder = BinderFactory.newBinder(FaxToMailUser.class); - for (LdapUser ldapUser : ldapUsers) { - - // manage user from login - FaxToMailUser user = faxtomailUserDao.forLoginEquals(ldapUser.getLogin()).findUniqueOrNull(); - if (user == null) { - user = new FaxToMailUserImpl(); - } - - // FIXME echatellier 20140601 : it's not necessary to save user in database if information didn't change - userBinder.copyExcluding(ldapUser, user, - FaxToMailUser.PROPERTY_TOPIA_ID, - FaxToMailUser.PROPERTY_TOPIA_CREATE_DATE, - FaxToMailUser.PROPERTY_TOPIA_VERSION, - FaxToMailUser.PROPERTY_USER_GROUPS); - - // manage user group - Collection<String> groups = ldapUser.getGroups(); - user.clearUserGroups(); - for (String group : groups) { - String groupPath = getGroupFullPath(group); - String groupName = StringUtils.substringAfterLast(groupPath, "/"); - FaxToMailUserGroup userGroup = faxToMailUserGroupDao.forNameEquals(groupName).findUniqueOrNull(); - if (userGroup == null) { - userGroup = faxToMailUserGroupDao.create( - FaxToMailUserGroup.PROPERTY_NAME, groupName, - FaxToMailUserGroup.PROPERTY_FULL_PATH, groupPath); - } - user.addUserGroups(userGroup); - } - - // persist user - if (user.isPersisted()) { - faxtomailUserDao.update(user); - } else { - faxtomailUserDao.create(user); - } - } - - getPersistenceContext().commit(); - } - - /** * Transform group CN to group path. * * Example: @@ -215,10 +111,18 @@ * @return */ protected String getGroupFullPath(String groupCN) { - String[] part = groupCN.split(","); - ArrayUtils.reverse(part); - String result = StringUtils.join(part, '/'); - return result; + String[] parts = groupCN.split(","); + ArrayUtils.reverse(parts); + + // join tab + String separator = ""; + StringBuilder result = new StringBuilder(); + for (String part : parts) { + result.append(separator); + result.append(StringUtils.substringAfter(part, "=")); + separator = "/"; + } + return result.toString(); } /** @@ -241,7 +145,7 @@ } /** - * Authenticate user. + * Authenticate and update ldap user. * * @param login login * @param password password @@ -262,34 +166,36 @@ String userDN = null; SearchResultEntry searchEntry = null; if (adminConnect.isConnected()) { + // sn est le login interne à franciaflex String filter = String.format("(sn=%s)", login); - SearchResult searchResult = adminConnect.search("DC=mac-groupe,DC=net", SearchScope.SUB, filter); + SearchResult searchResult = adminConnect.search(getApplicationConfig().getLdapBaseDn(), SearchScope.SUB, filter); if (!searchResult.getSearchEntries().isEmpty()) { searchEntry = searchResult.getSearchEntries().get(0); userDN = searchEntry.getDN(); } adminConnect.close(); + } else { + throw new AuthenticationException("Utilisateur inconnu : " + login); } - if (searchEntry != null) { - // ouvre une connexion avec l'identification de l'utilisateur qui essaye de se connecter - // à l'application (ca permet de vérifier l'authentification) - LDAPConnection userConnect = new LDAPConnection(); - userConnect.connect(getApplicationConfig().getLdapHost(), getApplicationConfig().getLdapPort()); - userConnect.bind(userDN, password); - - if (userConnect.isConnected()) { - FaxToMailUser user = updateUserFormLdap(searchEntry, login); - - Binder<FaxToMailUser, FaxToMailUser> faxToMailUserBinder = BinderFactory.newBinder(FaxToMailUser.class); - result = new FaxToMailUserImpl(); - faxToMailUserBinder.copyExcluding(user, result); - userConnect.close(); - } else { - throw new AuthenticationException("Not connected"); - } + // ouvre une connexion avec l'identification de l'utilisateur qui essaye de se connecter + // à l'application (ca permet de vérifier l'authentification) + LDAPConnection userConnect = new LDAPConnection(); + userConnect.connect(getApplicationConfig().getLdapHost(), getApplicationConfig().getLdapPort()); + userConnect.bind(userDN, password); + + if (userConnect.isConnected()) { + // update in database + FaxToMailUser user = updateUserFormLdap(searchEntry, login); + getPersistenceContext().commit(); + + // return copy without sensible informations + Binder<FaxToMailUser, FaxToMailUser> faxToMailUserBinder = BinderFactory.newBinder(FaxToMailUser.class); + result = new FaxToMailUserImpl(); + faxToMailUserBinder.copyExcluding(user, result); + userConnect.close(); } else { - throw new AuthenticationException("Utilisateur inconnu : " + login); + throw new AuthenticationException("Not connected"); } } catch (LDAPException ex) { @@ -300,42 +206,16 @@ } return result; } - - protected FaxToMailUser updateUserFormLdap(SearchResultEntry searchEntry, String login) throws LDAPSearchException { - FaxToMailUser result = null; - - // create or - FaxToMailUserTopiaDao faxtomailUserDao = getPersistenceContext().getFaxToMailUserDao(); - result = faxtomailUserDao.forLoginEquals(login).findUniqueOrNull(); - - if (result == null) { - result = new FaxToMailUserImpl(); - result.setLogin(login); - } - - // update other ldap fields - String fullName = searchEntry.getAttributeValue("name"); - if (fullName.indexOf(' ') != -1) { - String lastName = fullName.substring(0, fullName.indexOf(' ')); - String firstName = fullName.substring(fullName.indexOf(' ') + 1); - result.setFirstName(firstName); - result.setLastName(lastName); - } else { - result.setFirstName(""); - result.setLastName(fullName); - } - - if (result.isPersisted()) { - result = faxtomailUserDao.update(result); - } else { - result = faxtomailUserDao.create(result); - } - getPersistenceContext().commit(); - - return result; - } - + /** + * Retreive user from principal and updated user database instance. + * + * This method doesn't require any password. + * + * @param principal user principal (without domain) + * @return user instance + * @throws AuthenticationException is user can't be found in ldap + */ public FaxToMailUser getUserFromPrincipal(String principal) throws AuthenticationException { FaxToMailUser result = null; @@ -350,25 +230,29 @@ String login = null; SearchResultEntry searchEntry = null; if (adminConnect.isConnected()) { - String filter = String.format("(userPrincipalName=%s@%s)", principal, "mac-groupe.net"); - SearchResult searchResult = adminConnect.search("DC=mac-groupe,DC=net", SearchScope.SUB, filter); + // userPrincipalName est l'identifiant kerberos + // xxx@mac-groupe.net + String filter = String.format("(userPrincipalName=%s@%s)", principal, getApplicationConfig().getLdapPrincipalDomain()); + SearchResult searchResult = adminConnect.search(getApplicationConfig().getLdapBaseDn(), SearchScope.SUB, filter); if (!searchResult.getSearchEntries().isEmpty()) { searchEntry = searchResult.getSearchEntries().get(0); + // sn est le 'login' interne a franciaflex login = searchEntry.getAttributeValue("sn"); } adminConnect.close(); - } - - if (searchEntry != null) { - FaxToMailUser user = updateUserFormLdap(searchEntry, login); - - Binder<FaxToMailUser, FaxToMailUser> faxToMailUserBinder = BinderFactory.newBinder(FaxToMailUser.class); - result = new FaxToMailUserImpl(); - faxToMailUserBinder.copyExcluding(user, result); } else { throw new AuthenticationException("Utilisateur inconnu : " + principal); } + // update in database + FaxToMailUser user = updateUserFormLdap(searchEntry, login); + getPersistenceContext().commit(); + + // return copy without sensible informations + Binder<FaxToMailUser, FaxToMailUser> faxToMailUserBinder = BinderFactory.newBinder(FaxToMailUser.class); + result = new FaxToMailUserImpl(); + faxToMailUserBinder.copyExcluding(user, result); + } catch (LDAPException ex) { if (log.isWarnEnabled()) { log.warn("Can't login to ldap", ex); @@ -377,4 +261,64 @@ } return result; } + + /** + * Update user (or create) in database from ldap search result entry. + * + * @param searchEntry entry containing data + * @param login login + * @return updated user + * @throws LDAPSearchException + */ + protected FaxToMailUser updateUserFormLdap(SearchResultEntry searchEntry, String login) throws LDAPSearchException { + + FaxToMailUser user = null; + + // create or + FaxToMailUserTopiaDao faxtomailUserDao = getPersistenceContext().getFaxToMailUserDao(); + FaxToMailUserGroupTopiaDao faxtomailUserGroupDao = getPersistenceContext().getFaxToMailUserGroupDao(); + user = faxtomailUserDao.forLoginEquals(login).findUniqueOrNull(); + + if (user == null) { + user = new FaxToMailUserImpl(); + user.setLogin(login); + } + + // update other ldap fields + String fullName = searchEntry.getAttributeValue("name"); + if (fullName.indexOf(' ') != -1) { + String lastName = fullName.substring(0, fullName.indexOf(' ')); + String firstName = fullName.substring(fullName.indexOf(' ') + 1); + user.setFirstName(firstName); + user.setLastName(lastName); + } else { + user.setFirstName(""); + user.setLastName(fullName); + } + + // manage user groups + user.clearUserGroups(); + String[] groups = searchEntry.getAttributeValues("memberOf"); + if (ArrayUtils.isNotEmpty(groups)) { + for (String group : groups) { + String groupPath = getGroupFullPath(group); + String groupName = StringUtils.substringAfterLast(groupPath, "/"); + FaxToMailUserGroup userGroup = faxtomailUserGroupDao.forNameEquals(groupName).findUniqueOrNull(); + if (userGroup == null) { + userGroup = faxtomailUserGroupDao.create( + FaxToMailUserGroup.PROPERTY_NAME, groupName, + FaxToMailUserGroup.PROPERTY_FULL_PATH, groupPath); + } + user.addUserGroups(userGroup); + } + } + + if (user.isPersisted()) { + user = faxtomailUserDao.update(user); + } else { + user = faxtomailUserDao.create(user); + } + + return user; + } } Deleted: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ldap/LdapUser.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ldap/LdapUser.java 2014-06-11 16:00:34 UTC (rev 194) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ldap/LdapUser.java 2014-06-11 17:03:55 UTC (rev 195) @@ -1,47 +0,0 @@ -package com.franciaflex.faxtomail.services.service.ldap; - -/* - * #%L - * FaxToMail :: Service - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2014 Franciaflex, Code Lutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import java.util.ArrayList; -import java.util.Collection; - -import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserImpl; - -public class LdapUser extends FaxToMailUserImpl { - - protected Collection<String> groups = new ArrayList<>(); - - public Collection<String> getGroups() { - return groups; - } - - public void setGroups(Collection<String> groups) { - this.groups = groups; - } - - public void addGroup(String group) { - this.groups.add(group); - } -} Deleted: trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/LdapServiceTest.java =================================================================== --- trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/LdapServiceTest.java 2014-06-11 16:00:34 UTC (rev 194) +++ trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/LdapServiceTest.java 2014-06-11 17:03:55 UTC (rev 195) @@ -1,66 +0,0 @@ -package com.franciaflex.faxtomail.services.service; - -/* - * #%L - * FaxToMail :: Service - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2014 Franciaflex, Code Lutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import java.io.IOException; -import java.util.Collection; -import java.util.HashSet; - -import org.apache.commons.lang3.StringUtils; -import org.junit.Assume; -import org.junit.Before; -import org.junit.Test; - -import com.franciaflex.faxtomail.FaxToMailConfigurationOption; -import com.franciaflex.faxtomail.services.service.ldap.LdapUser; - -public class LdapServiceTest extends AbstractFaxToMailServiceTest { - - protected LdapService ldapService; - - @Before - public void setUp() throws IOException { - ldapService = newService(LdapService.class); - - // n'effectue pas les tests si la connexion n'est pas possible - Assume.assumeTrue(StringUtils.isNotBlank(getApplicationConfig().getLdapHost())); - } - - @Test - public void testGetUsers() { - - Collection<LdapUser> ldapUsers = ldapService.getAllLdapUsers(); - Collection<String> groups = new HashSet<>(); - int user = 0; - for (LdapUser ldapUser : ldapUsers) { - System.out.println("User : " + ldapUser.getLogin()); - for (String group : ldapUser.getGroups()) { - groups.add(group); - } - user++; - } - System.out.println(String.format("%d users, %d groups", user, groups.size())); - } -}
participants (1)
-
echatellier@users.forge.codelutin.com