/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
// www.projectforge.org
//
// Copyright (C) 2001-2014 Kai Reinhard (k.reinhard@micromata.de)
//
// ProjectForge is dual-licensed.
//
// This community edition 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; version 3 of the License.
//
// This community edition 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/.
//
/////////////////////////////////////////////////////////////////////////////
package org.projectforge.ldap;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
public class LdapUtilsTest
{
@Test
public void escapeUserGroupNames()
{
assertNull(LdapUtils.escapeCommonName(null));
assertEquals("", LdapUtils.escapeCommonName(""));
assertEquals("\\,", LdapUtils.escapeCommonName(","));
assertEquals("\\,\\=\\+\\<\\>\\#\\;\\\\\\\"", LdapUtils.escapeCommonName(",=+<>#;\\\""));
}
@Test
public void getOu()
{
assertEquals("", LdapUtils.getOu());
assertEquals("", LdapUtils.getOu(new String[0]));
assertEquals("ou=users", LdapUtils.getOu("ou=users"));
assertEquals("ou=users", LdapUtils.getOu("users"));
assertEquals("ou=users,ou=pf", LdapUtils.getOu("ou=users,ou=pf"));
assertEquals("ou=users,ou=pf", LdapUtils.getOu("users", "pf"));
assertEquals("ou=users,ou=pf", LdapUtils.getOu("ou=users", "pf"));
assertEquals("ou=users,ou=pf", LdapUtils.getOu("ou=users", "ou=pf"));
assertEquals("ou=users,ou=pf", LdapUtils.getOu("users", "ou=pf"));
assertEquals("", LdapUtils.getOu(null, null));
assertEquals("", LdapUtils.getOu(null, new String[] {}));
assertEquals("ou=pf", LdapUtils.getOu(null, new String[] { "ou=pf"}));
assertEquals("ou=pf,ou=pf-users", LdapUtils.getOu(null, new String[] { "ou=pf", "pf-users"}));
assertEquals("ou=deactivated,ou=pf,ou=pf-users", LdapUtils.getOu("ou=deactivated", new String[] { "ou=pf", "pf-users"}));
}
@Test
public void organizationalUnit()
{
assertNull(LdapUtils.getOrganizationalUnit(null));
assertNull(LdapUtils.getOrganizationalUnit(null, null));
assertNull(LdapUtils.getOrganizationalUnit(null, ""));
assertNull(LdapUtils.getOrganizationalUnit("cn=hurzel"));
assertNull(LdapUtils.getOrganizationalUnit("cn=hurzel", null));
assertNull(LdapUtils.getOrganizationalUnit("cn=hurzel", ""));
assertEquals("ou=users", LdapUtils.getOrganizationalUnit("cn=hurzel,ou=users", ""));
assertEquals("ou=users", LdapUtils.getOrganizationalUnit("cn=hurzel", "ou=users"));
assertEquals("ou=intern,ou=users", LdapUtils.getOrganizationalUnit("cn=hurzel,ou=intern,ou=users", ""));
assertEquals("ou=intern,ou=users", LdapUtils.getOrganizationalUnit("cn=hurzel,ou=intern", "ou=users"));
assertEquals("ou=intern,ou=users", LdapUtils.getOrganizationalUnit("cn=hurzel", "ou=intern,ou=users"));
}
@Test
public void getMissedObjectClasses()
{
assertList(LdapUtils.getMissedObjectClasses(null, null, new String[] { "class"}), (String[]) null);
assertList(LdapUtils.getMissedObjectClasses(null, "person", new String[] { "class"}), "person");
assertList(LdapUtils.getMissedObjectClasses(new String[] { "inetOrgPerson"}, "person", new String[] { "class"}), "person",
"inetOrgPerson");
assertList(LdapUtils.getMissedObjectClasses(new String[] { "inetOrgPerson", "posixAccount"}, "person", new String[] { "class"}),
"person", "inetOrgPerson", "posixAccount");
assertList(LdapUtils.getMissedObjectClasses(new String[] { "inetOrgPerson", "posixAccount"}, null, new String[] { "class"}),
"inetOrgPerson", "posixAccount");
assertList(LdapUtils.getMissedObjectClasses(new String[] { "inetOrgPerson", "posixAccount"}, "person", null), "person",
"inetOrgPerson", "posixAccount");
assertList(LdapUtils.getMissedObjectClasses(new String[] { "inetOrgPerson", "posixAccount"}, "person", new String[] { "person"}),
"inetOrgPerson", "posixAccount");
assertList(
LdapUtils.getMissedObjectClasses(new String[] { "inetOrgPerson", "posixAccount"}, "person", new String[] { "person",
"inetOrgPerson"}), "posixAccount");
}
private void assertList(final List<String> list, final String... expected)
{
if (expected == null) {
Assert.assertNull(list);
return;
}
Assert.assertNotNull(list);
Assert.assertEquals(expected.length, list.size());
for (int i = 0; i < expected.length; i++) {
Assert.assertEquals(expected[i], list.get(i));
}
}
}