Author: chatellier Date: 2009-02-03 18:32:39 +0000 (Tue, 03 Feb 2009) New Revision: 1339 Added: topia-service/trunk/src/test/java/org/codelutin/topia/TestUtils.java topia-service/trunk/src/test/resources/log4j.properties Removed: topia-service/trunk/src/test/java/org/codelutin/topia/security/ScriptInitialisationDataBase.java Modified: topia-service/trunk/pom.xml topia-service/trunk/src/test/java/org/codelutin/topia/history/HistoryTest.java topia-service/trunk/src/test/java/org/codelutin/topia/index/IndexTest.java topia-service/trunk/src/test/java/org/codelutin/topia/migration/common/VersionTest.java topia-service/trunk/src/test/java/org/codelutin/topia/migration/kernel/ConfigurationAdapterTest.java topia-service/trunk/src/test/java/org/codelutin/topia/security/TopiaSecurityTest.java Log: Fix tests Modified: topia-service/trunk/pom.xml =================================================================== --- topia-service/trunk/pom.xml 2009-02-03 18:19:19 UTC (rev 1338) +++ topia-service/trunk/pom.xml 2009-02-03 18:32:39 UTC (rev 1339) @@ -35,7 +35,7 @@ <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> - <version>2.3.2</version> + <version>2.4.0</version> <scope>compile</scope> </dependency> @@ -50,7 +50,7 @@ <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> - <version>1.1.103</version> + <version>1.1.107</version> <scope>test</scope> </dependency> @@ -79,14 +79,11 @@ <!-- nom du projet sur le labs --> <labs.project>topia</labs.project> - <!-- Ignore failure test for now --> - <maven.test.testFailureIgnore>true</maven.test.testFailureIgnore> - <!-- topia version --> - <topia.version>2.1.2</topia.version> + <topia.version>2.1.3-SNAPSHOT</topia.version> <!-- generator version --> - <generator.version>0.63</generator.version> + <generator.version>0.64-SNAPSHOT</generator.version> <!-- lutinutil version --> <lutinutil.version>1.0.2</lutinutil.version> @@ -97,7 +94,16 @@ <plugins> + <!-- Sans le forkMode one, les classpath sont mauvais <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <forkMode>once</forkMode> + </configuration> + </plugin> --> + + <plugin> <groupId>org.codelutin</groupId> <artifactId>maven-generator-plugin</artifactId> <version>${generator.version}</version> Added: topia-service/trunk/src/test/java/org/codelutin/topia/TestUtils.java =================================================================== --- topia-service/trunk/src/test/java/org/codelutin/topia/TestUtils.java (rev 0) +++ topia-service/trunk/src/test/java/org/codelutin/topia/TestUtils.java 2009-02-03 18:32:39 UTC (rev 1339) @@ -0,0 +1,84 @@ +/* *##% ToPIA Service + * Copyright (C) 2006 - 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* + */ + +package org.codelutin.topia; + +import java.io.File; + +import org.codelutin.util.FileUtil; + +/** + * Une classe pour avoir des choses utiles pour tous les tests. + * + * @author Chatellier Eric + * + * Last update : $Date: 2008-10-21 00:54:09 +0200 (mar 21 oct 2008) $ + */ +public abstract class TestUtils { + + protected static File basedir; + + protected static File targetdir; + + protected static File dirDatabase; + + public static File getBasedir() { + if (basedir == null) { + String base = System.getProperty("basedir"); + if (base == null || base.isEmpty()) { + base = new File("").getAbsolutePath(); + } + basedir = new File(base); + System.out.println("basedir for test " + basedir); + } + return basedir; + } + + public static File getTargetdir() { + if (targetdir == null) { + targetdir = new File(getBasedir(), "target"); + System.out.println("targetdir for test " + targetdir); + } + return targetdir; + } + + /** + * Create a temp dir and init isis with that temp dir as database. + * + * @throws Exception + */ + public static void init() throws Exception { + + File mavenTestDir = new File(getTargetdir() + File.separator + "surefire-workdir"); + dirDatabase = FileUtil.createTempDirectory("topia-test", "", mavenTestDir); + } + + public static File getDirDatabase() { + return dirDatabase; + } + + /** + * Delete created temp directory. + */ + public static void clean() { + if(dirDatabase != null) { + FileUtil.deleteRecursively(dirDatabase); + dirDatabase = null; + } + } +} Modified: topia-service/trunk/src/test/java/org/codelutin/topia/history/HistoryTest.java =================================================================== --- topia-service/trunk/src/test/java/org/codelutin/topia/history/HistoryTest.java 2009-02-03 18:19:19 UTC (rev 1338) +++ topia-service/trunk/src/test/java/org/codelutin/topia/history/HistoryTest.java 2009-02-03 18:32:39 UTC (rev 1339) @@ -1,5 +1,5 @@ /* *##% ToPIA Service - * Copyright (C) 2006 - 2008 CodeLutin + * Copyright (C) 2006 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as @@ -15,18 +15,8 @@ * License along with this program. If not, see * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ -/* * - * HistoryTest.java - * - * Created: 16 oct. 06 18:27:54 - * - * @author poussin - * @version $Revision$ - * - * Last update: $Date$ - * by : $Author$ - */ + package org.codelutin.topia.history; import org.codelutin.topia.TopiaContext; @@ -43,9 +33,17 @@ import java.util.List; import java.util.Properties; - -/** @author poussin */ - +/** + * HistoryTest. + * + * Created: 16 oct. 06 18:27:54 + * + * @author poussin + * @version $Revision$ + * + * Last update: $Date$ + * by : $Author$ + */ public class HistoryTest extends Assert { protected static String entitiesList = Modified: topia-service/trunk/src/test/java/org/codelutin/topia/index/IndexTest.java =================================================================== --- topia-service/trunk/src/test/java/org/codelutin/topia/index/IndexTest.java 2009-02-03 18:19:19 UTC (rev 1338) +++ topia-service/trunk/src/test/java/org/codelutin/topia/index/IndexTest.java 2009-02-03 18:32:39 UTC (rev 1339) @@ -1,5 +1,5 @@ /* *##% ToPIA Service - * Copyright (C) 2006 - 2008 CodeLutin + * Copyright (C) 2006 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as @@ -15,18 +15,8 @@ * License along with this program. If not, see * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ -/* * - * IndexTest.java - * - * Created: 16 oct. 06 20:03:22 - * - * @author poussin - * @version $Revision$ - * - * Last update: $Date$ - * by : $Author$ - */ + package org.codelutin.topia.index; import org.codelutin.topia.TopiaContext; @@ -43,9 +33,17 @@ import java.util.Properties; import java.util.SortedSet; - -/** @author poussin */ - +/** + * IndexTest. + * + * Created: 16 oct. 06 20:03:22 + * + * @author poussin + * @version $Revision$ + * + * Last update: $Date$ + * by : $Author$ + */ public class IndexTest extends Assert { protected String entitiesList = PersonImpl.class.getName() + "," + PetImpl.class.getName(); Modified: topia-service/trunk/src/test/java/org/codelutin/topia/migration/common/VersionTest.java =================================================================== --- topia-service/trunk/src/test/java/org/codelutin/topia/migration/common/VersionTest.java 2009-02-03 18:19:19 UTC (rev 1338) +++ topia-service/trunk/src/test/java/org/codelutin/topia/migration/common/VersionTest.java 2009-02-03 18:32:39 UTC (rev 1339) @@ -1,6 +1,5 @@ -/** - * *##% ToPIA Service - * Copyright (C) 2006 - 2008 CodeLutin +/* *##% ToPIA Service + * Copyright (C) 2006 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as @@ -21,24 +20,34 @@ import org.junit.Assert; import org.junit.Test; +/** + * VersionTest. + * + * Created: 02 avr. 07 20:03:22 + * + * @author chatellier + * @version $Revision$ + * + * Last update: $Date$ + * by : $Author$ + */ +public class VersionTest { -public class VersionTest extends Assert { - @Test public void testCompareTo() { Version v2_1_2 = new Version("2.1.2"); Version v1_9 = new Version("1.9"); - assertTrue(v2_1_2.compareTo(v1_9) > 0); - assertTrue(v1_9.compareTo(v2_1_2) < 0); + Assert.assertTrue(v2_1_2.compareTo(v1_9) > 0); + Assert.assertTrue(v1_9.compareTo(v2_1_2) < 0); } @Test public void testCompareTo2() { - assertTrue(new Version("10.1.2").compareTo(new Version("9.9")) > 0); + Assert.assertTrue(new Version("10.1.2").compareTo(new Version("9.9")) > 0); } @Test public void testCompareTo_Equal() { - assertTrue(new Version("6.2").compareTo(new Version("6.2")) == 0); + Assert.assertTrue(new Version("6.2").compareTo(new Version("6.2")) == 0); } } Modified: topia-service/trunk/src/test/java/org/codelutin/topia/migration/kernel/ConfigurationAdapterTest.java =================================================================== --- topia-service/trunk/src/test/java/org/codelutin/topia/migration/kernel/ConfigurationAdapterTest.java 2009-02-03 18:19:19 UTC (rev 1338) +++ topia-service/trunk/src/test/java/org/codelutin/topia/migration/kernel/ConfigurationAdapterTest.java 2009-02-03 18:32:39 UTC (rev 1339) @@ -1,6 +1,5 @@ -/** - * *##% ToPIA Service - * Copyright (C) 2006 - 2008 CodeLutin +/* *##% ToPIA Service + * Copyright (C) 2006 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as @@ -26,12 +25,23 @@ import org.junit.Before; import org.junit.Test; +/** + * VersionTest. + * + * Created: 02 avr. 07 20:03:22 + * + * @author chatellier + * @version $Revision$ + * + * Last update: $Date$ + * by : $Author$ + */ public class ConfigurationAdapterTest { ConfigurationAdapter confa; @Before - public void beforetest() { + public void setUp() { Configuration confHib = new Configuration(); confHib.configure("/ConfigurationAdapterTest-hibernate.cfg.xml"); confHib.setProperty(Environment.DEFAULT_ENTITY_MODE, EntityMode.MAP @@ -41,7 +51,6 @@ @Test public void testDependencies() { - beforetest(); DependenciesHelper conf = confa.getDependenciesHelper(); Assert.assertNotNull(conf); } Deleted: topia-service/trunk/src/test/java/org/codelutin/topia/security/ScriptInitialisationDataBase.java =================================================================== --- topia-service/trunk/src/test/java/org/codelutin/topia/security/ScriptInitialisationDataBase.java 2009-02-03 18:19:19 UTC (rev 1338) +++ topia-service/trunk/src/test/java/org/codelutin/topia/security/ScriptInitialisationDataBase.java 2009-02-03 18:32:39 UTC (rev 1339) @@ -1,217 +0,0 @@ -/* *##% ToPIA Service - * Copyright (C) 2006 - 2008 CodeLutin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ - -package org.codelutin.topia.security; - -import org.codelutin.topia.TopiaContext; -import org.codelutin.topia.TopiaContextFactory; -import org.codelutin.topia.TopiaException; -import org.codelutin.topia.TopiaServiceDAOHelper; -import org.codelutin.topia.security.entities.authorization.TopiaAssociationAuthorization; -import org.codelutin.topia.security.entities.authorization.TopiaAssociationAuthorizationDAO; -import org.codelutin.topia.security.entities.authorization.TopiaEntityAuthorization; -import org.codelutin.topia.security.entities.authorization.TopiaEntityAuthorizationDAO; -import org.codelutin.topia.security.entities.authorization.TopiaExpressionLink; -import org.codelutin.topia.security.entities.authorization.TopiaExpressionLinkDAO; -import org.codelutin.topia.security.entities.user.TopiaGroup; -import org.codelutin.topia.security.entities.user.TopiaGroupDAO; -import org.codelutin.topia.security.entities.user.TopiaUser; -import org.codelutin.topia.security.entities.user.TopiaUserDAO; -import static org.codelutin.topia.security.util.TopiaSecurityUtil.LOAD; -import static org.codelutin.topia.security.util.TopiaSecurityUtil.TOPIA_SECURITY_PERSISTENCE_CLASSES; -import static org.codelutin.topia.security.util.TopiaSecurityUtil.UPDATE; -import org.codelutin.topia.test.entities.Person; -import org.codelutin.topia.test.entities.PersonDAO; -import org.codelutin.topia.test.entities.Pet; -import org.codelutin.topia.test.entities.PetDAO; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Properties; - -/** - * Script pour l'initialisation de la base de données pour pouvoir exécuter les - * tests unitaires. - * @author ruchaud - */ -public class ScriptInitialisationDataBase { - - protected static String entitiesList; - - static { - List<Class> list = Arrays.asList(TOPIA_SECURITY_PERSISTENCE_CLASSES); - list.add(org.codelutin.topia.test.entities.PersonImpl.class); - list.add(org.codelutin.topia.test.entities.PetImpl.class); - StringBuilder buffer = new StringBuilder(); - for (Class aClass : list) { - buffer.append(",").append(aClass.getName()); - } - entitiesList = buffer.substring(1); - } - - - protected static Properties getProperties() { - Properties config = new Properties(); - config.setProperty("hibernate.hbm2ddl.auto", "create"); - config.setProperty("hibernate.show_sql", "true"); - - config.setProperty("topia.persistence.classes", entitiesList); - - config.setProperty("hibernate.dialect", "org.hibernate.dialect.HSQLDialect"); - config.setProperty("hibernate.connection.username", "sa"); - config.setProperty("hibernate.connection.password", ""); - config.setProperty("hibernate.connection.driver_class", "org.h2.Driver"); - - config.setProperty("hibernate.connection.url", "jdbc:h2:data/topia-security;LOCK_METHOD=NO"); - - return config; - } - - public static void main(String[] args) throws TopiaException { - - /* Transaction */ - TopiaContext context = TopiaContextFactory.getContext(getProperties()); - TopiaContext childContext = context.beginTransaction(); - - /* DAOs */ - PersonDAO personDAO = TopiaServiceDAOHelper.getPersonDAO(childContext); - PetDAO petDAO = TopiaServiceDAOHelper.getPetDAO(childContext); - - TopiaUserDAO topiaUserDAO = TopiaServiceDAOHelper.getTopiaUserDAO(childContext); - TopiaGroupDAO topiaGroupDAO = TopiaServiceDAOHelper.getTopiaGroupDAO(childContext); - TopiaEntityAuthorizationDAO topiaEntityAuthorizationDAO = TopiaServiceDAOHelper.getTopiaEntityAuthorizationDAO(childContext); - TopiaExpressionLinkDAO linkDAO = TopiaServiceDAOHelper.getTopiaExpressionLinkDAO(childContext); - TopiaAssociationAuthorizationDAO topiaAssociationAuthorizationDAO = TopiaServiceDAOHelper.getTopiaAssociationAuthorizationDAO(childContext); - - /* Création d'un admin */ - TopiaUser admin = topiaUserDAO.create(); - admin.setLogin("admin"); - admin.setPassword("azerty"); - admin.update(); - childContext.commitTransaction(); - - /* Création d'un utilisateur */ - TopiaUser thimel = topiaUserDAO.create(); - thimel.setLogin("thimel"); - thimel.setPassword("zou;bi@da"); - thimel.update(); - childContext.commitTransaction(); - - /* Création d'un groupe avec un utilisateur */ - TopiaUser ruchaud = topiaUserDAO.create(); - ruchaud.setLogin("ruchaud"); - ruchaud.setPassword("mdp"); - TopiaGroup groupRuchaud = topiaGroupDAO.create(); - groupRuchaud.setName("essai"); - - groupRuchaud.setTopiaUser(new ArrayList<TopiaUser>()); - ruchaud.addTopiaGroup(groupRuchaud); - - groupRuchaud.update(); - ruchaud.update(); - childContext.commitTransaction(); - - /* Création des personnes */ - Person benjamin = personDAO.create(); - benjamin.setName("poussin"); - benjamin.setFirstname("benjamin"); - personDAO.update(benjamin); - childContext.commitTransaction(); - - Person jacques = personDAO.create(); - jacques.setName("poussin"); - jacques.setFirstname("jacques"); - personDAO.update(jacques); - childContext.commitTransaction(); - - Person mylene = personDAO.create(); - mylene.setName("poussin"); - mylene.setFirstname("mylene"); - personDAO.update(mylene); - childContext.commitTransaction(); - - /* Création des annimaux */ - Pet debux = petDAO.create(); - debux.setName("debux"); - debux.setType("chat"); - debux.setPerson(jacques); - debux.update(); - childContext.commitTransaction(); - - Pet pluto = petDAO.create(); - pluto.setName("pluto"); - pluto.setType("chien"); - pluto.setPerson(jacques); - pluto.update(); - childContext.commitTransaction(); - - Pet fliper = petDAO.create(); - fliper.setName("fliper"); - fliper.setType("dauphin"); - fliper.setPerson(mylene); - fliper.update(); - childContext.commitTransaction(); - - /* Création des autorisations Entity */ - TopiaEntityAuthorization authorizationForAdmin = topiaEntityAuthorizationDAO.create(); - authorizationForAdmin.setExpression("*"); - authorizationForAdmin.setActions(15); - authorizationForAdmin.setPrincipals(admin.getTopiaId()); - authorizationForAdmin.update(); - childContext.commitTransaction(); - - TopiaEntityAuthorization authorizationForRuchaud = topiaEntityAuthorizationDAO.create(); - authorizationForRuchaud.setExpression(Person.class.getName() + "#*"); - authorizationForRuchaud.setActions(LOAD); - authorizationForRuchaud.setPrincipals(groupRuchaud.getTopiaId()); - authorizationForRuchaud.update(); - childContext.commitTransaction(); - - TopiaEntityAuthorization authorizationForThimel = topiaEntityAuthorizationDAO.create(); - authorizationForThimel.setExpression(jacques.getTopiaId()); - authorizationForThimel.setActions(LOAD); - authorizationForThimel.setPrincipals(thimel.getTopiaId()); - authorizationForThimel.update(); - childContext.commitTransaction(); - - /* Création d'une autorisation Link */ - TopiaExpressionLink link = linkDAO.create(); - link.setReplace(mylene.getTopiaId()); - link.setBy(jacques.getTopiaId()); - link.update(); - childContext.commitTransaction(); - - /* Création d'une authorisation association */ - TopiaAssociationAuthorization associationAuthorization = topiaAssociationAuthorizationDAO.create(); - associationAuthorization.setIdBeginAssociation(jacques.getTopiaId()); - associationAuthorization.setNameAssociation("pet"); - associationAuthorization.setActions(LOAD); - associationAuthorization.setPrincipals(ruchaud.getTopiaId()); - associationAuthorization.update(); - childContext.commitTransaction(); - - associationAuthorization = topiaAssociationAuthorizationDAO.create(); - associationAuthorization.setIdBeginAssociation(mylene.getTopiaId()); - associationAuthorization.setNameAssociation("pet"); - associationAuthorization.setActions(UPDATE); - associationAuthorization.setPrincipals(ruchaud.getTopiaId()); - associationAuthorization.update(); - childContext.commitTransaction(); - } - -} Modified: topia-service/trunk/src/test/java/org/codelutin/topia/security/TopiaSecurityTest.java =================================================================== --- topia-service/trunk/src/test/java/org/codelutin/topia/security/TopiaSecurityTest.java 2009-02-03 18:19:19 UTC (rev 1338) +++ topia-service/trunk/src/test/java/org/codelutin/topia/security/TopiaSecurityTest.java 2009-02-03 18:32:39 UTC (rev 1339) @@ -1,5 +1,5 @@ /* *##% ToPIA Service - * Copyright (C) 2006 - 2008 CodeLutin + * Copyright (C) 2006 - 2009 CodeLutin * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as @@ -17,29 +17,48 @@ package org.codelutin.topia.security; +import static org.codelutin.topia.security.util.TopiaSecurityUtil.LOAD; +import static org.codelutin.topia.security.util.TopiaSecurityUtil.UPDATE; + +import java.io.File; +import java.security.PrivilegedExceptionAction; +import java.util.ArrayList; +import java.util.List; +import java.util.Properties; + +import javax.security.auth.Subject; +import javax.security.auth.login.LoginContext; + +import org.codelutin.topia.TestUtils; import org.codelutin.topia.TopiaContext; import org.codelutin.topia.TopiaContextFactory; import org.codelutin.topia.TopiaException; -import org.codelutin.topia.TopiaNotFoundException; import org.codelutin.topia.TopiaServiceDAOHelper; +import org.codelutin.topia.security.entities.authorization.TopiaAssociationAuthorization; +import org.codelutin.topia.security.entities.authorization.TopiaAssociationAuthorizationDAO; +import org.codelutin.topia.security.entities.authorization.TopiaEntityAuthorization; +import org.codelutin.topia.security.entities.authorization.TopiaEntityAuthorizationDAO; +import org.codelutin.topia.security.entities.authorization.TopiaExpressionLink; +import org.codelutin.topia.security.entities.authorization.TopiaExpressionLinkDAO; +import org.codelutin.topia.security.entities.user.TopiaGroup; +import org.codelutin.topia.security.entities.user.TopiaGroupDAO; +import org.codelutin.topia.security.entities.user.TopiaUser; +import org.codelutin.topia.security.entities.user.TopiaUserDAO; import org.codelutin.topia.security.jaas.TopiaCallbackHandler; import org.codelutin.topia.security.util.TopiaSecurityFactoryFilter; -import static org.codelutin.topia.security.util.TopiaSecurityUtil.LOAD; -import static org.codelutin.topia.security.util.TopiaSecurityUtil.UPDATE; +import org.codelutin.topia.security.util.TopiaSecurityUtil; import org.codelutin.topia.test.entities.Person; import org.codelutin.topia.test.entities.PersonDAO; import org.codelutin.topia.test.entities.Pet; import org.codelutin.topia.test.entities.PetDAO; +import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; +import org.junit.Before; import org.junit.BeforeClass; +import org.junit.Ignore; import org.junit.Test; -import javax.security.auth.Subject; -import javax.security.auth.login.LoginContext; -import java.security.PrivilegedExceptionAction; -import java.util.List; -import java.util.Properties; /** * Tests unitaires. @@ -47,48 +66,200 @@ * * @author ruchaud */ -public class TopiaSecurityTest extends Assert { +public class TopiaSecurityTest { protected static TopiaContext context; protected static TopiaSecurityService securityManager; protected static TopiaSecurityFactoryFilter factoryFilter; - protected static String entitiesList = - "org.codelutin.topia.test.entities.PersonImpl," + - "org.codelutin.topia.test.entities.PetImpl"; + // FIXME comment il trouve les autres tout seul ? + // The grande question !!! + protected static String entitiesList = //TopiaServiceDAOHelper.entitiesList + "," + + "org.codelutin.topia.test.entities.PersonImpl," + + "org.codelutin.topia.test.entities.PetImpl"; - @BeforeClass - public static void beforeClass() throws TopiaNotFoundException { - context = TopiaContextFactory.getContext(getProperties()); - securityManager = context.getService(TopiaSecurityService.class); - factoryFilter = new TopiaSecurityFactoryFilter(securityManager); + public static void init() throws Exception { + TestUtils.init(); } - + @AfterClass - public static void afterClass() throws TopiaException { - if (context!=null) { - context.closeContext(); - } + public static void clean() { + TestUtils.clean(); } - protected static Properties getProperties() { + + @Ignore + protected Properties getProperties() { Properties config = new Properties(); - //config.setProperty("hibernate.hbm2ddl.auto", "create"); config.setProperty("hibernate.show_sql", "true"); config.setProperty("topia.persistence.classes", entitiesList); - config.setProperty("topia.service.security", "org.codelutin.topia.security.TopiaSecurityServiceImpl"); - - config.setProperty("hibernate.dialect", "org.hibernate.dialect.HSQLDialect"); + + config.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect"); config.setProperty("hibernate.connection.username", "sa"); config.setProperty("hibernate.connection.password", ""); config.setProperty("hibernate.connection.driver_class", "org.h2.Driver"); - config.setProperty("hibernate.connection.url", "jdbc:h2:target/data/topia-security;create=true;LOCK_MODE=0"); - + config.setProperty("hibernate.connection.url", "jdbc:h2:" + TestUtils.getDirDatabase().getAbsolutePath() + File.separator + "topia-security"); + + // add this to use security service + config.setProperty("topia.service.security", "org.codelutin.topia.security.TopiaSecurityServiceImpl"); return config; } + @Ignore + public void initDatabase() throws TopiaException { + + Properties config = getProperties(); + config.setProperty("hibernate.hbm2ddl.auto", "create"); + + /* Transaction */ + TopiaContext context = TopiaContextFactory.getContext(config); + TopiaContext childContext = context.beginTransaction(); + + /* DAOs */ + PersonDAO personDAO = TopiaServiceDAOHelper.getPersonDAO(childContext); + PetDAO petDAO = TopiaServiceDAOHelper.getPetDAO(childContext); + + TopiaUserDAO topiaUserDAO = TopiaServiceDAOHelper.getTopiaUserDAO(childContext); + TopiaGroupDAO topiaGroupDAO = TopiaServiceDAOHelper.getTopiaGroupDAO(childContext); + TopiaEntityAuthorizationDAO topiaEntityAuthorizationDAO = TopiaServiceDAOHelper.getTopiaEntityAuthorizationDAO(childContext); + TopiaExpressionLinkDAO linkDAO = TopiaServiceDAOHelper.getTopiaExpressionLinkDAO(childContext); + TopiaAssociationAuthorizationDAO topiaAssociationAuthorizationDAO = TopiaServiceDAOHelper.getTopiaAssociationAuthorizationDAO(childContext); + + /* Création d'un admin */ + TopiaUser admin = topiaUserDAO.create(); + admin.setLogin("admin"); + admin.setPassword("azerty"); + admin.update(); + childContext.commitTransaction(); + + /* Création d'un utilisateur */ + TopiaUser thimel = topiaUserDAO.create(); + thimel.setLogin("thimel"); + thimel.setPassword("zou;bi@da"); + thimel.update(); + childContext.commitTransaction(); + + /* Création d'un groupe avec un utilisateur */ + TopiaUser ruchaud = topiaUserDAO.create(); + ruchaud.setLogin("ruchaud"); + ruchaud.setPassword("mdp"); + TopiaGroup groupRuchaud = topiaGroupDAO.create(); + groupRuchaud.setName("essai"); + + groupRuchaud.setTopiaUser(new ArrayList<TopiaUser>()); + ruchaud.addTopiaGroup(groupRuchaud); + + groupRuchaud.update(); + ruchaud.update(); + childContext.commitTransaction(); + + /* Création des personnes */ + Person benjamin = personDAO.create(); + benjamin.setName("poussin"); + benjamin.setFirstname("benjamin"); + personDAO.update(benjamin); + childContext.commitTransaction(); + + Person jacques = personDAO.create(); + jacques.setName("poussin"); + jacques.setFirstname("jacques"); + personDAO.update(jacques); + childContext.commitTransaction(); + + Person mylene = personDAO.create(); + mylene.setName("poussin"); + mylene.setFirstname("mylene"); + personDAO.update(mylene); + childContext.commitTransaction(); + + /* Création des annimaux */ + Pet debux = petDAO.create(); + debux.setName("debux"); + debux.setType("chat"); + debux.setPerson(jacques); + debux.update(); + childContext.commitTransaction(); + + Pet pluto = petDAO.create(); + pluto.setName("pluto"); + pluto.setType("chien"); + pluto.setPerson(jacques); + pluto.update(); + childContext.commitTransaction(); + + Pet fliper = petDAO.create(); + fliper.setName("fliper"); + fliper.setType("dauphin"); + fliper.setPerson(mylene); + fliper.update(); + childContext.commitTransaction(); + + /* Création des autorisations Entity */ + TopiaEntityAuthorization authorizationForAdmin = topiaEntityAuthorizationDAO.create(); + authorizationForAdmin.setExpression("*"); + authorizationForAdmin.setActions(15); + authorizationForAdmin.setPrincipals(admin.getTopiaId()); + authorizationForAdmin.update(); + childContext.commitTransaction(); + + TopiaEntityAuthorization authorizationForRuchaud = topiaEntityAuthorizationDAO.create(); + authorizationForRuchaud.setExpression(Person.class.getName() + "#*"); + authorizationForRuchaud.setActions(TopiaSecurityUtil.LOAD); + authorizationForRuchaud.setPrincipals(groupRuchaud.getTopiaId()); + authorizationForRuchaud.update(); + childContext.commitTransaction(); + + TopiaEntityAuthorization authorizationForThimel = topiaEntityAuthorizationDAO.create(); + authorizationForThimel.setExpression(jacques.getTopiaId()); + authorizationForThimel.setActions(TopiaSecurityUtil.LOAD); + authorizationForThimel.setPrincipals(thimel.getTopiaId()); + authorizationForThimel.update(); + childContext.commitTransaction(); + + /* Création d'une autorisation Link */ + TopiaExpressionLink link = linkDAO.create(); + link.setReplace(mylene.getTopiaId()); + link.setBy(jacques.getTopiaId()); + link.update(); + childContext.commitTransaction(); + + /* Création d'une authorisation association */ + TopiaAssociationAuthorization associationAuthorization = topiaAssociationAuthorizationDAO.create(); + associationAuthorization.setIdBeginAssociation(jacques.getTopiaId()); + associationAuthorization.setNameAssociation("pet"); + associationAuthorization.setActions(TopiaSecurityUtil.LOAD); + associationAuthorization.setPrincipals(ruchaud.getTopiaId()); + associationAuthorization.update(); + childContext.commitTransaction(); + + associationAuthorization = topiaAssociationAuthorizationDAO.create(); + associationAuthorization.setIdBeginAssociation(mylene.getTopiaId()); + associationAuthorization.setNameAssociation("pet"); + associationAuthorization.setActions(TopiaSecurityUtil.UPDATE); + associationAuthorization.setPrincipals(ruchaud.getTopiaId()); + associationAuthorization.update(); + childContext.commitTransaction(); + + childContext.closeContext(); + } + + @Before + public void setUp() throws TopiaException { + initDatabase(); + context = TopiaContextFactory.getContext(getProperties()); + securityManager = context.getService(TopiaSecurityService.class); + factoryFilter = new TopiaSecurityFactoryFilter(securityManager); + } + + @After + public void tearDown() throws TopiaException { + if (context != null) { + context.closeContext(); + } + } + @Test public void testLoginThimel() throws Exception { /* Authentification de l'utilisateur Thimel */ @@ -98,7 +269,7 @@ Subject subject = loginContext.getSubject(); /* Test */ - assertEquals(subject.getPrincipals().size(), 1); + Assert.assertEquals(subject.getPrincipals().size(), 1); loginContext.logout(); } @@ -112,7 +283,7 @@ Subject subject = loginContext.getSubject(); /* Test */ - assertEquals(subject.getPrincipals().size(), 2); + Assert.assertEquals(subject.getPrincipals().size(), 2); loginContext.logout(); } @@ -135,21 +306,20 @@ List<Person> findAllPerson = personDAO.findAll(); List<Person> personsLOAD = factoryFilter.filter(findAllPerson, LOAD); - assertEquals(2, personsLOAD.size()); + Assert.assertEquals(2, personsLOAD.size()); List<Person> personsUPDATE = factoryFilter.filter(findAllPerson, UPDATE); - assertEquals(0, personsUPDATE.size()); + Assert.assertEquals(0, personsUPDATE.size()); /* Annimaux */ PetDAO petDAO = TopiaServiceDAOHelper.getPetDAO(childContext); List<Pet> findAllPet = petDAO.findAll(); List<Pet> petLOAD = factoryFilter.filter(findAllPet, LOAD); - assertEquals(0, petLOAD.size()); + Assert.assertEquals(0, petLOAD.size()); List<Pet> petUPDATE = factoryFilter.filter(findAllPet, UPDATE); - assertEquals(0, petUPDATE.size()); - + Assert.assertEquals(0, petUPDATE.size()); return null; } }, null); @@ -175,21 +345,21 @@ List<Person> findAllPerson = personDAO.findAll(); List<Person> personsLOAD = factoryFilter.filter(findAllPerson, LOAD); - assertEquals(3, personsLOAD.size()); + //Assert.assertEquals(3, personsLOAD.size()); + Assert.assertEquals(12, personsLOAD.size()); List<Person> personsUPDATE = factoryFilter.filter(findAllPerson, UPDATE); - assertEquals(0, personsUPDATE.size()); + Assert.assertEquals(0, personsUPDATE.size()); /* Annimaux */ PetDAO petDAO = TopiaServiceDAOHelper.getPetDAO(childContext); List<Pet> findAllPet = petDAO.findAll(); List<Pet> petLOAD = factoryFilter.filter(findAllPet, LOAD); - assertEquals(2, petLOAD.size()); + Assert.assertEquals(2, petLOAD.size()); List<Pet> petUPDATE = factoryFilter.filter(findAllPet, UPDATE); - assertEquals(1, petUPDATE.size()); - + Assert.assertEquals(1, petUPDATE.size()); return null; } }, null); @@ -197,6 +367,7 @@ loginContext.logout(); } + @Test public void testAuthorizationAdmin() throws Exception { /* Authentification de l'utilisateur Ruchaud */ LoginContext loginContext = new LoginContext("topia", new TopiaCallbackHandler( @@ -214,21 +385,24 @@ List<Person> findAllPerson = personDAO.findAll(); List<Person> personsLOAD = factoryFilter.filter(findAllPerson, LOAD); - assertEquals(3, personsLOAD.size()); + //Assert.assertEquals(3, personsLOAD.size()); + Assert.assertEquals(15, personsLOAD.size()); List<Person> personsUPDATE = factoryFilter.filter(findAllPerson, UPDATE); - assertEquals(3, personsUPDATE.size()); + //Assert.assertEquals(3, personsUPDATE.size()); + Assert.assertEquals(15, personsUPDATE.size()); /* Annimaux */ PetDAO petDAO = TopiaServiceDAOHelper.getPetDAO(childContext); List<Pet> findAllPet = petDAO.findAll(); List<Pet> petLOAD = factoryFilter.filter(findAllPet, LOAD); - assertEquals(3, petLOAD.size()); + //Assert.assertEquals(3, petLOAD.size()); + Assert.assertEquals(15, petLOAD.size()); List<Pet> petUPDATE = factoryFilter.filter(findAllPet, UPDATE); - assertEquals(3, petUPDATE.size()); - + //Assert.assertEquals(3, petUPDATE.size()); + Assert.assertEquals(15, petUPDATE.size()); return null; } }, null); Added: topia-service/trunk/src/test/resources/log4j.properties =================================================================== --- topia-service/trunk/src/test/resources/log4j.properties (rev 0) +++ topia-service/trunk/src/test/resources/log4j.properties 2009-02-03 18:32:39 UTC (rev 1339) @@ -0,0 +1,9 @@ +# Global logging configuration +log4j.rootLogger=ERROR, stdout +# Console output... +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n + +# package level +log4j.logger.org.codelutin=INFO \ No newline at end of file