X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.security.core%2Fext%2Ftest%2Forg%2Fargeo%2Fosgi%2Fuseradmin%2FLdifUserAdminTest.java;h=a8a7d226a1aa124c135d038882782af8e93bf291;hb=8260f4470f514ea347ca53f5b4dfc632c4a4de66;hp=d2e3f6290894cd4decf674b3ce9c3b128b48baa4;hpb=0aeba3e5420ae8502e8f02fcfd2138bcaab4a7f6;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 d2e3f6290..a8a7d226a 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 @@ -8,14 +8,14 @@ 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 org.apache.commons.codec.binary.Base64; -import org.apache.commons.codec.digest.DigestUtils; -import org.apache.commons.io.IOUtils; +import javax.transaction.TransactionManager; + import org.osgi.service.useradmin.Authorization; import org.osgi.service.useradmin.Group; import org.osgi.service.useradmin.Role; @@ -27,8 +27,12 @@ import bitronix.tm.resource.ehcache.EhCacheXAResourceProducer; import junit.framework.TestCase; public class LdifUserAdminTest extends TestCase implements BasicTestConstants { - private AbstractUserDirectory userAdmin; private BitronixTransactionManager tm; + private URI uri; + private AbstractUserDirectory userAdmin; + + public void testConcurrent() throws Exception { + } @SuppressWarnings("unchecked") public void testEdition() throws Exception { @@ -40,11 +44,13 @@ public class LdifUserAdminTest extends TestCase implements BasicTestConstants { 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)"); @@ -87,7 +93,8 @@ public class LdifUserAdminTest extends TestCase implements BasicTestConstants { assertEquals("root@localhost", rootUser.getProperties().get("mail")); // credentials - byte[] hashedPassword = ("{SHA}" + Base64.encodeBase64String(DigestUtils.sha1("demo".getBytes()))).getBytes(); + 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)); @@ -108,10 +115,10 @@ public class LdifUserAdminTest extends TestCase implements BasicTestConstants { ByteArrayOutputStream out = new ByteArrayOutputStream(); ((LdifUserAdmin) userAdmin).save(out); byte[] arr = out.toByteArray(); - IOUtils.closeQuietly(out); + out.close(); userAdmin.destroy(); - String written = new String(arr); - System.out.print(written); + // String written = new String(arr); + // System.out.print(written); try (ByteArrayInputStream in = new ByteArrayInputStream(arr)) { userAdmin = new LdifUserAdmin(props); ((LdifUserAdmin) userAdmin).load(in); @@ -126,8 +133,7 @@ public class LdifUserAdminTest extends TestCase implements BasicTestConstants { @Override protected void setUp() throws Exception { Path tempDir = Files.createTempDirectory(getClass().getName()); - URI uri; - String uriProp = System.getProperty("argeo.useradmin.uri"); + String uriProp = System.getProperty("argeo.userdirectory.uri"); if (uriProp != null) uri = new URI(uriProp); else { @@ -139,25 +145,39 @@ public class LdifUserAdminTest extends TestCase implements BasicTestConstants { 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 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(); - - 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(); + // 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