--- /dev/null
+package org.argeo.osgi.useradmin;
+
+import java.util.ArrayList;
+import java.util.Base64;
+import java.util.List;
+import java.util.SortedMap;
+
+import javax.naming.NamingEnumeration;
+import javax.naming.directory.Attribute;
+import javax.naming.directory.Attributes;
+import javax.naming.ldap.LdapName;
+
+import org.argeo.util.naming.LdifParser;
+
+import junit.framework.TestCase;
+
+public class LdifParserTest extends TestCase implements BasicTestConstants {
+ public void testBasicLdif() throws Exception {
+ LdifParser ldifParser = new LdifParser();
+ SortedMap<LdapName, Attributes> res = ldifParser.read(getClass()
+ .getResourceAsStream("basic.ldif"));
+ LdapName rootDn = new LdapName(ROOT_USER_DN);
+ Attributes rootAttributes = res.get(rootDn);
+ assertNotNull(rootAttributes);
+ assertEquals("Superuser",
+ rootAttributes.get(LdifName.description.name()).get());
+ byte[] rawPwEntry = (byte[]) rootAttributes.get(
+ LdifName.userPassword.name()).get();
+ assertEquals("{SHA}ieSV55Qc+eQOaYDRSha/AjzNTJE=",
+ new String(rawPwEntry));
+ byte[] hashedPassword = DigestUtils.sha1("demo".getBytes());
+ assertEquals("{SHA}" + Base64.getEncoder().encodeToString(hashedPassword),
+ new String(rawPwEntry));
+
+ LdapName adminDn = new LdapName(ADMIN_GROUP_DN);
+ Attributes adminAttributes = res.get(adminDn);
+ assertNotNull(adminAttributes);
+ Attribute memberAttribute = adminAttributes.get(LdifName.member.name());
+ assertNotNull(memberAttribute);
+ NamingEnumeration<?> members = memberAttribute.getAll();
+ List<String> users = new ArrayList<String>();
+ while (members.hasMore()) {
+ Object value = members.next();
+ users.add(value.toString());
+ }
+ assertEquals(1, users.size());
+ assertEquals(rootDn, new LdapName(users.get(0)));
+ }
+}