]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.security.core/ext/test/org/argeo/osgi/useradmin/LdifUserAdminTest.java
Fix unit tests
[lgpl/argeo-commons.git] / org.argeo.security.core / ext / test / org / argeo / osgi / useradmin / LdifUserAdminTest.java
index c2d5b31f0d7b260f13e14c43e030392a0183fa98..27e3c1dfc9a6a23f98615751d9ca82d2745e2a17 100644 (file)
@@ -1,10 +1,15 @@
 package org.argeo.osgi.useradmin;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.util.Arrays;
 import java.util.List;
 
 import junit.framework.TestCase;
 
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.io.IOUtils;
 import org.osgi.service.useradmin.Authorization;
 import org.osgi.service.useradmin.Group;
 import org.osgi.service.useradmin.Role;
@@ -12,14 +17,28 @@ import org.osgi.service.useradmin.User;
 
 public class LdifUserAdminTest extends TestCase implements BasicTestConstants {
 
-       public void testBasicUserAdmin() {
-               LdifUserAdmin userAdmin = new LdifUserAdmin(getClass()
+       public void testBasicUserAdmin() throws Exception {
+               // read
+               LdifUserAdmin initialUserAdmin = new LdifUserAdmin(getClass()
                                .getResourceAsStream("basic.ldif"));
+               // write
+               ByteArrayOutputStream out = new ByteArrayOutputStream();
+               initialUserAdmin.save(out);
+               byte[] arr = out.toByteArray();
+               initialUserAdmin.destroy();
+               IOUtils.closeQuietly(out);
+               String written = new String(arr);
+               System.out.print(written);
+               ByteArrayInputStream in = new ByteArrayInputStream(arr);
+               LdifUserAdmin userAdmin = new LdifUserAdmin(in);
+
+               // users
                User rootUser = (User) userAdmin.getRole(ROOT_USER_DN);
                assertNotNull(rootUser);
                User demoUser = (User) userAdmin.getRole(DEMO_USER_DN);
                assertNotNull(demoUser);
 
+               // groups
                Group adminGroup = (Group) userAdmin.getRole(ADMIN_GROUP_DN);
                assertNotNull(adminGroup);
                Role[] members = adminGroup.getMembers();
@@ -39,5 +58,27 @@ public class LdifUserAdminTest extends TestCase implements BasicTestConstants {
                assertTrue(rootRoles.contains(ROOT_USER_DN));
                assertTrue(rootRoles.contains(ADMIN_GROUP_DN));
                assertTrue(rootRoles.contains(EDITOR_GROUP_DN));
+
+               // properties
+               assertEquals("root@localhost", rootUser.getProperties().get("mail"));
+
+               // credentials
+               byte[] hashedPassword = ("{SHA}" + Base64
+                               .encodeBase64String(DigestUtils.sha1("demo".getBytes())))
+                               .getBytes();
+               assertTrue(rootUser.hasCredential(LdifName.userPassword.name(),
+                               hashedPassword));
+               assertTrue(demoUser.hasCredential(LdifName.userPassword.name(),
+                               hashedPassword));
+
+               // search
+               Role[] search = userAdmin.getRoles(null);
+               assertEquals(4, search.length);
+               search = userAdmin.getRoles("(objectClass=groupOfNames)");
+               assertEquals(2, search.length);
+               search = userAdmin.getRoles("(objectclass=inetOrgPerson)");
+               assertEquals(2, search.length);
+               search = userAdmin.getRoles("(&(objectclass=inetOrgPerson)(uid=demo))");
+               assertEquals(1, search.length);
        }
 }