Index: topia-security/src/test/org/codelutin/topia/security/test/TopiaSecurityTest.java diff -u topia-security/src/test/org/codelutin/topia/security/test/TopiaSecurityTest.java:1.4 topia-security/src/test/org/codelutin/topia/security/test/TopiaSecurityTest.java:1.5 --- topia-security/src/test/org/codelutin/topia/security/test/TopiaSecurityTest.java:1.4 Fri Sep 15 13:01:49 2006 +++ topia-security/src/test/org/codelutin/topia/security/test/TopiaSecurityTest.java Fri Sep 15 16:12:04 2006 @@ -40,6 +40,8 @@ import org.codelutin.topia.security.TopiaSecurityManagerImpl; import org.codelutin.topia.security.entities.authorization.TopiaEntityAuthorization; import org.codelutin.topia.security.entities.authorization.TopiaEntityAuthorizationDAO; +import org.codelutin.topia.security.entities.authorization.TopiaLinkAuthorization; +import org.codelutin.topia.security.entities.authorization.TopiaLinkAuthorizationDAO; import org.codelutin.topia.security.entities.user.TopiaGroup; import org.codelutin.topia.security.entities.user.TopiaGroupDAO; import org.codelutin.topia.security.entities.user.TopiaUser; @@ -53,26 +55,22 @@ protected static Log log = LogFactory.getLog(TopiaSecurityTest.class); protected static String entitiesList = "org.codelutin.topia.security.test.person.PersonImpl,org.codelutin.topia.security.entities.user.TopiaUserImpl,org.codelutin.topia.security.entities.authorization.TopiaEntityAuthorizationImpl,org.codelutin.topia.security.entities.user.TopiaGroupImpl,org.codelutin.topia.security.entities.authorization.TopiaLinkAuthorizationImpl,org.codelutin.topia.security.entities.authorization.TopiaAssociationAuthorizationImpl,org.codelutin.topia.security.entities.authorization.TopiaAuthorizationImpl"; - //protected static TopiaContext context; protected static Properties getProperties() { Properties config = new Properties(); - config.setProperty("hibernate.show_sql", "true"); + /* HSQL 2 */ config.setProperty("hibernate.hbm2ddl.auto", "create"); - - config.setProperty("topia.dao.flatfile.directory", "/tmp/topia-security-db"); - config.setProperty("topia.dao.flatfile.mapping.key", "firstname"); + config.setProperty("hibernate.show_sql", "true"); config.setProperty("topia.persistence.classes", entitiesList); - config.setProperty("hibernate.dialect", - "org.hibernate.dialect.DerbyDialect"); - config.setProperty("hibernate.connection.driver_class", - "org.apache.derby.jdbc.EmbeddedDriver"); - config.setProperty("hibernate.connection.url", - "jdbc:derby:/tmp/topia-security-derby;create=true"); - config.setProperty("hibernate.connection.username", "dbuser"); - config.setProperty("hibernate.connection.password", "xxxxxxxx"); + 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:mem:;LOCK_METHOD=NO"); + return config; } @@ -89,6 +87,7 @@ TopiaUserDAO topiaUserDAO = securityManager.getTopiaUserDAO(); TopiaGroupDAO topiaGroupDAO = securityManager.getTopiaGroupDAO(); TopiaEntityAuthorizationDAO topiaEntityAuthorizationDAO = securityManager.getTopiaEntityAuthorizationDAO(); + TopiaLinkAuthorizationDAO topiaLinkAuthorizationDAO = securityManager.getTopiaLinkAuthorizationDAO(); /* Création d'un utilisateur */ TopiaUser thimel = topiaUserDAO.create(); @@ -115,14 +114,13 @@ jacques.setName("poussin"); jacques.setFirstname("jacques"); personDAO.update(jacques); - childContext.commitTransaction(); Person mylene = personDAO.create(); mylene.setName("poussin"); mylene.setFirstname("mylene"); personDAO.update(mylene); - /* Création des autorisations */ + /* Création des autorisations Entity */ TopiaEntityAuthorization authorizationForRuchaud = topiaEntityAuthorizationDAO.create(); authorizationForRuchaud.setId(Person.class.getName() + "#*"); authorizationForRuchaud.setActions(LOAD); @@ -134,6 +132,13 @@ authorizationForThimel.setActions(LOAD); authorizationForThimel.setPrincipals(thimel.getTopiaId()); authorizationForThimel.update(); + securityManager.getTopiaSecurityContext().commitTransaction(); + + /* Création d'une autorisation Link */ + TopiaLinkAuthorization linkAuthorization = topiaLinkAuthorizationDAO.create(); + linkAuthorization.setId(mylene.getTopiaId()); + linkAuthorization.setAuthorization(authorizationForThimel); + linkAuthorization.update(); /* Commit */ childContext.commitTransaction(); @@ -178,7 +183,7 @@ loginContext.logout(); } - public void testEntityAuthorizationThimel() throws Exception { + public void testAuthorizationThimel() throws Exception { /* Authentification de l'utilisateur Ruchaud */ LoginContext loginContext = new LoginContext("topia", new TopiaCallbackHandler( "thimel", "zou;bi@da")); @@ -191,7 +196,7 @@ TopiaContext context = TopiaContextFactory.getContext(getProperties()); TopiaContextImplementor childContext = (TopiaContextImplementor) context.beginTransaction(); TopiaDAO personDAO = childContext.getDAO(Person.class); - assertEquals(personDAO.findAll(), 1); + assertEquals(personDAO.findAll().size(), 2); return null; } }, null); @@ -199,7 +204,7 @@ loginContext.logout(); } - public void testEntityAuthorizationRuchaud() throws Exception { + public void testAuthorizationRuchaud() throws Exception { /* Authentification de l'utilisateur Ruchaud */ LoginContext loginContext = new LoginContext("topia", new TopiaCallbackHandler( "ruchaud", "mdp"));