X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.security.core%2Fext%2Ftest%2Forg%2Fargeo%2Fosgi%2Fuseradmin%2FLdifUserAdminTest.java;h=27e3c1dfc9a6a23f98615751d9ca82d2745e2a17;hb=4f0362bc7817d05a7c3e2c8a33c7e9eb62989257;hp=c2d5b31f0d7b260f13e14c43e030392a0183fa98;hpb=3439a3b6aba14618b06c72cf59b220e216135c96;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.core/ext/test/org/argeo/osgi/useradmin/LdifUserAdminTest.java b/org.argeo.security.core/ext/test/org/argeo/osgi/useradmin/LdifUserAdminTest.java index c2d5b31f0..27e3c1dfc 100644 --- a/org.argeo.security.core/ext/test/org/argeo/osgi/useradmin/LdifUserAdminTest.java +++ b/org.argeo.security.core/ext/test/org/argeo/osgi/useradmin/LdifUserAdminTest.java @@ -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); } }