use of org.pentaho.platform.plugin.services.security.userrole.ldap.search.GenericLdapSearch in project pentaho-platform by pentaho.
the class DefaultLdapUserRoleListServiceTest method testGetUsernamesInRole2.
/**
* Search for all users starting at <code>ou=roles</code>, looking for objects with
* <code>(&(objectClass=organizationalRole)(cn={0}))</code>, and extracting the <code>uid</code> token of the
* <code>roleOccupant</code> attribute. This search implies that the schema is setup such that a user's roles come
* from that user's DN being present in the <code>roleOccupant</code> attribute of a child object under the
* <code>ou=roles</code> object.
*/
@Test
public void testGetUsernamesInRole2() {
SearchControls con1 = new SearchControls();
// $NON-NLS-1$
con1.setReturningAttributes(new String[] { "roleOccupant" });
LdapSearchParamsFactory paramFactory = // $NON-NLS-1$//$NON-NLS-2$
new LdapSearchParamsFactoryImpl("ou=roles", "(&(objectClass=organizationalRole)(cn={0}))", con1);
// $NON-NLS-1$ //$NON-NLS-2$
Transformer transformer1 = new SearchResultToAttrValueList("roleOccupant", "uid");
GrantedAuthorityToString transformer2 = new GrantedAuthorityToString();
LdapSearch usernamesInRoleSearch = new GenericLdapSearch(getContextSource(), paramFactory, transformer1, transformer2);
Map<String, String> roleMap = new HashMap<>();
roleMap.put("DEV", "dev");
DefaultLdapUserRoleListService userRoleListService = getDefaultLdapUserRoleListService(roleMap);
userRoleListService.setUsernamesInRoleSearch(usernamesInRoleSearch);
// $NON-NLS-1$
List<String> res = userRoleListService.getUsersInRole(null, "DEV");
// $NON-NLS-1$
assertTrue(res.contains("pat"));
// $NON-NLS-1$
assertTrue(res.contains("tiffany"));
if (logger.isDebugEnabled()) {
// $NON-NLS-1$
logger.debug("results of getUsernamesInRole2(): " + res);
}
}
Aggregations