]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.security.core/ext/test/org/argeo/osgi/useradmin/LdifUserAdminTest.java
Rename Commons bundles
[lgpl/argeo-commons.git] / org.argeo.security.core / ext / test / org / argeo / osgi / useradmin / LdifUserAdminTest.java
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
deleted file mode 100644 (file)
index a8a7d22..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-package org.argeo.osgi.useradmin;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.InputStream;
-import java.net.URI;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.Arrays;
-import java.util.Base64;
-import java.util.Dictionary;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.UUID;
-
-import javax.transaction.TransactionManager;
-
-import org.osgi.service.useradmin.Authorization;
-import org.osgi.service.useradmin.Group;
-import org.osgi.service.useradmin.Role;
-import org.osgi.service.useradmin.User;
-
-import bitronix.tm.BitronixTransactionManager;
-import bitronix.tm.TransactionManagerServices;
-import bitronix.tm.resource.ehcache.EhCacheXAResourceProducer;
-import junit.framework.TestCase;
-
-public class LdifUserAdminTest extends TestCase implements BasicTestConstants {
-       private BitronixTransactionManager tm;
-       private URI uri;
-       private AbstractUserDirectory userAdmin;
-
-       public void testConcurrent() throws Exception {
-       }
-
-       @SuppressWarnings("unchecked")
-       public void testEdition() throws Exception {
-               User demoUser = (User) userAdmin.getRole(DEMO_USER_DN);
-               assertNotNull(demoUser);
-
-               tm.begin();
-               String newName = "demo";
-               demoUser.getProperties().put("cn", newName);
-               assertEquals(newName, demoUser.getProperties().get("cn"));
-               tm.commit();
-               persistAndRestart();
-               assertEquals(newName, demoUser.getProperties().get("cn"));
-
-               tm.begin();
-               userAdmin.removeRole(DEMO_USER_DN);
-               tm.commit();
-               persistAndRestart();
-
-               // check data
-               Role[] search = userAdmin.getRoles("(objectclass=inetOrgPerson)");
-               assertEquals(1, search.length);
-               Group editorGroup = (Group) userAdmin.getRole(EDITORS_GROUP_DN);
-               assertNotNull(editorGroup);
-               Role[] members = editorGroup.getMembers();
-               assertEquals(1, members.length);
-       }
-
-       public void testRetrieve() throws Exception {
-               // 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();
-               assertEquals(1, members.length);
-               assertEquals(rootUser, members[0]);
-
-               Group editorGroup = (Group) userAdmin.getRole(EDITORS_GROUP_DN);
-               assertNotNull(editorGroup);
-               members = editorGroup.getMembers();
-               assertEquals(2, members.length);
-               assertEquals(adminGroup, members[0]);
-               assertEquals(demoUser, members[1]);
-
-               Authorization rootAuth = userAdmin.getAuthorization(rootUser);
-               List<String> rootRoles = Arrays.asList(rootAuth.getRoles());
-               assertEquals(3, rootRoles.size());
-               assertTrue(rootRoles.contains(ROOT_USER_DN));
-               assertTrue(rootRoles.contains(ADMIN_GROUP_DN));
-               assertTrue(rootRoles.contains(EDITORS_GROUP_DN));
-
-               // properties
-               assertEquals("root@localhost", rootUser.getProperties().get("mail"));
-
-               // credentials
-               byte[] hashedPassword = ("{SHA}" + Base64.getEncoder().encodeToString(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);
-       }
-
-       public void testReadWriteRead() throws Exception {
-               if (userAdmin instanceof LdifUserAdmin) {
-                       Dictionary<String, Object> props = userAdmin.getProperties();
-                       ByteArrayOutputStream out = new ByteArrayOutputStream();
-                       ((LdifUserAdmin) userAdmin).save(out);
-                       byte[] arr = out.toByteArray();
-                       out.close();
-                       userAdmin.destroy();
-                       // String written = new String(arr);
-                       // System.out.print(written);
-                       try (ByteArrayInputStream in = new ByteArrayInputStream(arr)) {
-                               userAdmin = new LdifUserAdmin(props);
-                               ((LdifUserAdmin) userAdmin).load(in);
-                       }
-                       Role[] search = userAdmin.getRoles(null);
-                       assertEquals(4, search.length);
-               } else {
-                       // test not relevant for LDAP
-               }
-       }
-
-       @Override
-       protected void setUp() throws Exception {
-               Path tempDir = Files.createTempDirectory(getClass().getName());
-               String uriProp = System.getProperty("argeo.userdirectory.uri");
-               if (uriProp != null)
-                       uri = new URI(uriProp);
-               else {
-                       tempDir.toFile().deleteOnExit();
-                       Path ldifPath = tempDir.resolve(BASE_DN + ".ldif");
-                       try (InputStream in = getClass().getResource("basic.ldif").openStream()) {
-                               Files.copy(in, ldifPath);
-                       }
-                       uri = ldifPath.toUri();
-               }
-
-               bitronix.tm.Configuration tmConf = TransactionManagerServices.getConfiguration();
-               tmConf.setServerId(UUID.randomUUID().toString());
-               tmConf.setLogPart1Filename(new File(tempDir.toFile(), "btm1.tlog").getAbsolutePath());
-               tmConf.setLogPart2Filename(new File(tempDir.toFile(), "btm2.tlog").getAbsolutePath());
-               tm = TransactionManagerServices.getTransactionManager();
-
-               userAdmin = initUserAdmin(uri, tm);
-       }
-
-       private AbstractUserDirectory initUserAdmin(URI uri, TransactionManager tm) {
-               Dictionary<String, Object> props = new Hashtable<>();
-               props.put(UserAdminConf.uri.name(), uri.toString());
-               props.put(UserAdminConf.baseDn.name(), BASE_DN);
-               props.put(UserAdminConf.userBase.name(), "ou=users");
-               props.put(UserAdminConf.groupBase.name(), "ou=groups");
-               AbstractUserDirectory userAdmin;
-               if (uri.getScheme().startsWith("ldap"))
-                       userAdmin = new LdapUserAdmin(props);
-               else
-                       userAdmin = new LdifUserAdmin(props);
-               userAdmin.init();
-               // JTA
-               EhCacheXAResourceProducer.registerXAResource(UserDirectory.class.getName(), userAdmin.getXaResource());
-               userAdmin.setTransactionManager(tm);
-               return userAdmin;
-       }
-
-       private void persistAndRestart() {
-               EhCacheXAResourceProducer.unregisterXAResource(UserDirectory.class.getName(), userAdmin.getXaResource());
-               if (userAdmin instanceof LdifUserAdmin)
-                       ((LdifUserAdmin) userAdmin).save();
-               userAdmin.destroy();
-               userAdmin = initUserAdmin(uri, tm);
-       }
-
-       @Override
-       protected void tearDown() throws Exception {
-               EhCacheXAResourceProducer.unregisterXAResource(UserDirectory.class.getName(), userAdmin.getXaResource());
-               tm.shutdown();
-               if (userAdmin != null)
-                       userAdmin.destroy();
-       }
-
-}