From: <fc...@us...> - 2007-08-31 12:29:38
|
Revision: 425 http://openutils.svn.sourceforge.net/openutils/?rev=425&view=rev Author: fcarone Date: 2007-08-31 05:29:23 -0700 (Fri, 31 Aug 2007) Log Message: ----------- Sample test application works Modified Paths: -------------- trunk/openutils-hibernate-security/pom.xml trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java trunk/openutils-hibernate-security/src/test/resources/database.properties trunk/openutils-hibernate-security/src/test/resources/hibernate.cfg.xml trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml trunk/openutils-hibernate-security/src/test/resources/spring-security.xml trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml Added Paths: ----------- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml Modified: trunk/openutils-hibernate-security/pom.xml =================================================================== --- trunk/openutils-hibernate-security/pom.xml 2007-08-31 12:28:50 UTC (rev 424) +++ trunk/openutils-hibernate-security/pom.xml 2007-08-31 12:29:23 UTC (rev 425) @@ -50,12 +50,12 @@ <dependency> <groupId>net.sourceforge.openutils</groupId> <artifactId>openutils-bshd5</artifactId> - <version>1.0.5</version> + <version>1.0.7</version> </dependency> <dependency> <groupId>net.sourceforge.openutils</groupId> - <artifactId>openutils-testing</artifactId> - <version>1.0</version> + <artifactId>openutils-testing-junit</artifactId> + <version>1.1.2</version> <scope>test</scope> </dependency> <dependency> @@ -128,6 +128,12 @@ <scope>test</scope> </dependency> <dependency> + <groupId>hsqldb</groupId> + <artifactId>hsqldb</artifactId> + <version>1.8.0.7</version> + <scope>test</scope> + </dependency> + <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.0</version> Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java =================================================================== --- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java 2007-08-31 12:28:50 UTC (rev 424) +++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java 2007-08-31 12:29:23 UTC (rev 425) @@ -39,14 +39,10 @@ private SessionFactory sessionFactory; - public HibernateDAOSecurityInterceptor() - { - super(); - } - /** * {@inheritDoc} */ + @SuppressWarnings("unchecked") public Object invoke(MethodInvocation invocation) throws Throwable { Object[] arguments = invocation.getArguments(); @@ -77,6 +73,11 @@ return invocation.proceed(); } + if (SecurityContextHolder.getContext().getAuthentication() == null) + { + throw new SecurityException("Authentication is not valid"); + } + GrantedAuthority[] authorities = SecurityContextHolder.getContext().getAuthentication().getAuthorities(); List<String> roles = new ArrayList<String>(); for (int i = 0; i < authorities.length; i++) @@ -129,4 +130,5 @@ this.sessionFactory = sessionFactory; } + } Added: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java =================================================================== --- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java (rev 0) +++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java 2007-08-31 12:29:23 UTC (rev 425) @@ -0,0 +1,32 @@ +/* + * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it + */ +package it.openutils.hibernate.security; + +import java.sql.Types; + +import org.dbunit.dataset.datatype.DataType; +import org.dbunit.dataset.datatype.DataTypeException; +import org.dbunit.dataset.datatype.DefaultDataTypeFactory; + + +/** + * @author fcarone + * @version $Id: $ + */ +public class HsqlDatatypeFactory extends DefaultDataTypeFactory +{ + + /** + * {@inheritDoc} + */ + @Override + public DataType createDataType(int sqlType, String sqlTypeName) throws DataTypeException + { + if (sqlType == Types.BOOLEAN) + { + return DataType.BOOLEAN; + } + return super.createDataType(sqlType, sqlTypeName); + } +} Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java =================================================================== --- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java 2007-08-31 12:28:50 UTC (rev 424) +++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java 2007-08-31 12:29:23 UTC (rev 425) @@ -1,14 +1,28 @@ package it.openutils.hibernate.security; +import it.openutils.hibernate.example.FilterMetadata; import it.openutils.hibernate.security.apptest.DummyDAO; import it.openutils.hibernate.security.apptest.DummyDataobject; -import it.openutils.testing.junit.SpringTestCase; +import it.openutils.testing.junit.DbUnitTestCase; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import org.acegisecurity.Authentication; +import org.acegisecurity.context.SecurityContextHolder; +import org.acegisecurity.context.SecurityContextImpl; +import org.acegisecurity.providers.AuthenticationProvider; +import org.acegisecurity.providers.UsernamePasswordAuthenticationToken; +import org.dbunit.database.DatabaseConfig; +import org.dbunit.database.IDatabaseConnection; +import org.hibernate.criterion.Criterion; +import org.hibernate.criterion.Order; import org.junit.Assert; import org.junit.Test; + /* * Copyright (c) Openmind. All rights reserved. http://www.openmindonline.it */ @@ -17,20 +31,51 @@ * @author fcarone * @version $Id: $ */ -public class SecurityIntegrationTest extends SpringTestCase +public class SecurityIntegrationTest extends DbUnitTestCase { private DummyDAO securedObject; + + /** + * {@inheritDoc} + */ + @Override + protected IDatabaseConnection createConnection() throws SQLException + { + IDatabaseConnection connection = super.createConnection(); + DatabaseConfig config = connection.getConfig(); + config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new HsqlDatatypeFactory()); + return connection; + } + + + + /** * @throws Exception Any exception */ @Test public void testRulesApplication() throws Exception { + // emulate authentication + AuthenticationProvider authenticationProvider = (AuthenticationProvider) ctx.getBean("authenticationProvider"); + Authentication authentication = new UsernamePasswordAuthenticationToken("UserUno", "password"); + authentication = authenticationProvider.authenticate(authentication); + SecurityContextImpl sci = new SecurityContextImpl(); + sci.setAuthentication(authentication); + SecurityContextHolder.setContext(sci); + + // test securedObject = (DummyDAO) ctx.getBean("dummyDAO"); DummyDataobject filter = new DummyDataobject(); - List<DummyDataobject> dummyObjects = securedObject.findFiltered(filter); + List<DummyDataobject> dummyObjects = securedObject.findFiltered( + filter, + new Order[0], + new HashMap<String, FilterMetadata>(), + 500, + 0, + new ArrayList<Criterion>()); Assert.assertNotNull(dummyObjects); } Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java =================================================================== --- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java 2007-08-31 12:28:50 UTC (rev 424) +++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java 2007-08-31 12:29:23 UTC (rev 425) @@ -4,13 +4,17 @@ package it.openutils.hibernate.security.apptest; import javax.persistence.Column; +import javax.persistence.Entity; import javax.persistence.Id; +import javax.persistence.Table; /** * @author fcarone * @version $Id: $ */ +@Entity +@Table(name = "DUMMYDATAOBJECT") public class DummyDataobject { Added: trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml =================================================================== --- trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml (rev 0) +++ trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml 2007-08-31 12:29:23 UTC (rev 425) @@ -0,0 +1,127 @@ +<!DOCTYPE dataset SYSTEM "dataset.dtd"> +<dataset> + <table name="APP_USER"> + <column>ID_USER</column> + <column>PASSWORD</column> + <column>ENABLED</column> + <column>NAME</column> + <column>SURNAME</column> + <column>EMAIL</column> + <row> + <value>UserUno</value> + <value>5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8</value> + <value>1</value> + <value>Gino</value> + <value>Rossi</value> + <value>ro...@ba...</value> + </row> + <row> + <value>UserDue</value> + <value>password</value> + <value>1</value> + <value>Mario</value> + <value>Verdi</value> + <value>ve...@ba...</value> + </row> + </table> + <table name="APP_GROUP"> + <column>ID_GROUP</column> + <column>DESCRIPTION</column> + <column>ENABLED</column> + <row> + <value>GRUPPOUNO</value> + <value>descrizione</value> + <value>1</value> + </row> + <row> + <value>GRUPPODUE</value> + <value>descrizione</value> + <value>1</value> + </row> + </table> + <table name="APP_ROLE"> + <column>ID_ROLE</column> + <column>DESCRIPTION</column> + <row> + <value>RoleUno</value> + <value>descr</value> + </row> + <row> + <value>RoleDue</value> + <value>descr2</value> + </row> + <row> + <value>RoleTre</value> + <value>descr3</value> + </row> + </table> + <table name="APP_USER_GROUP"> + <column>ID_USER</column> + <column>ID_GROUP</column> + <row> + <value>UserUno</value> + <value>GRUPPOUNO</value> + </row> + <row> + <value>UserUno</value> + <value>GRUPPODUE</value> + </row> + </table> + <table name="APP_GROUP_ROLE"> + <column>ID_GROUP</column> + <column>ID_ROLE</column> + <row> + <value>GRUPPOUNO</value> + <value>RoleUno</value> + </row> + <row> + <value>GRUPPOUNO</value> + <value>RoleDue</value> + </row> + <row> + <value>GRUPPODUE</value> + <value>RoleTre</value> + </row> + </table> + + <table name="SECURITY_RULE"> + <column>ID_SECURITY_RULE</column> + <column>ROLE</column> + <column>ENTITY</column> + <column>PROPERTY</column> + <column>VALUE</column> + <column>MODIFIER</column> + <row> + <value>1</value> + <value>RoleUno</value> + <value>it.openutils.hibernate.security.apptest.DummyDataobject</value> + <value>intValue</value> + <value>1</value> + <value>EQUALS</value> + </row> + </table> + <table name="SECRULE_PERMISSION"> + <column>ID_SECURITY_RULE</column> + <column>PERMISSION</column> + <row> + <value>1</value> + <value>LOAD</value> + </row> + </table> + <table name="DUMMYDATAOBJECT"> + <column>ID</column> + <column>INTVALUE</column> + <column>STRINGVALUE</column> + <row> + <value>0</value> + <value>0</value> + <value>ABC</value> + </row> + <row> + <value>1</value> + <value>1</value> + <value>DEF</value> + </row> + </table> +</dataset> + Modified: trunk/openutils-hibernate-security/src/test/resources/database.properties =================================================================== --- trunk/openutils-hibernate-security/src/test/resources/database.properties 2007-08-31 12:28:50 UTC (rev 424) +++ trunk/openutils-hibernate-security/src/test/resources/database.properties 2007-08-31 12:29:23 UTC (rev 425) @@ -2,10 +2,11 @@ # i file per la configurazione del db utilizzati dall'applicazione web sono in # src/main/web-app/WEB-INF -hibernate.connection.driver=org.apache.derby.jdbc.EmbeddedDriver -hibernate.dialect=org.hibernate.dialect.DerbyDialect -hibernate.connection.username=ikam +#hibernate.connection.driver=org.apache.derby.jdbc.EmbeddedDriver +#hibernate.dialect=org.hibernate.dialect.DerbyDialect +hibernate.connection.driver=org.hsqldb.jdbcDriver +hibernate.dialect=org.hibernate.dialect.HSQLDialect +hibernate.connection.username=sa hibernate.connection.password= -hibernate.connection.url=jdbc:derby:target/db/openutils-usermanagement-db-test;create=true -hibernate.hbm2ddl.auto=update - +hibernate.connection.url=jdbc:hsqldb:mem:hibernate-security +hibernate.hbm2ddl.auto=create-drop Modified: trunk/openutils-hibernate-security/src/test/resources/hibernate.cfg.xml =================================================================== --- trunk/openutils-hibernate-security/src/test/resources/hibernate.cfg.xml 2007-08-31 12:28:50 UTC (rev 424) +++ trunk/openutils-hibernate-security/src/test/resources/hibernate.cfg.xml 2007-08-31 12:29:23 UTC (rev 425) @@ -4,6 +4,9 @@ <hibernate-configuration> <session-factory> <mapping class="it.openutils.hibernate.security.dataobject.SecurityRule" /> - <mapping class="it.openutils.hibernate.security.apptest.DummyDataobject" /> + <mapping class="it.openutils.hibernate.security.apptest.DummyDataobject" /> + <mapping class="it.openutils.usermanagement.dataobjects.User" /> + <mapping class="it.openutils.usermanagement.dataobjects.Group" /> + <mapping class="it.openutils.usermanagement.dataobjects.Role" /> </session-factory> </hibernate-configuration> \ No newline at end of file Modified: trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml =================================================================== --- trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml 2007-08-31 12:28:50 UTC (rev 424) +++ trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml 2007-08-31 12:29:23 UTC (rev 425) @@ -1,7 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> -<beans> +<beans> + <bean id="userDAO" parent="txProxyTemplate"> + <property name="target"> + <bean class="it.openutils.usermanagement.dao.UserDAOImpl"> + <property name="sessionFactory" ref="sessionFactory" /> + </bean> + </property> + </bean> <bean id="securityRuleDAO" parent="txProxyTemplate"> <property name="target"> <bean class="it.openutils.hibernate.security.dao.impl.SecurityRuleDAOImpl"> Modified: trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml =================================================================== --- trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml 2007-08-31 12:28:50 UTC (rev 424) +++ trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml 2007-08-31 12:29:23 UTC (rev 425) @@ -19,7 +19,7 @@ <prop key="hibernate.generate_statistics">false</prop> <prop key="hibernate.bytecode.use_reflection_optimizer">true</prop> <prop key="hibernate.show_sql">false</prop> - <prop key="hibernate.use_sql_comments">false</prop> + <prop key="hibernate.use_sql_comments">true</prop> <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> </props> </property> Modified: trunk/openutils-hibernate-security/src/test/resources/spring-security.xml =================================================================== --- trunk/openutils-hibernate-security/src/test/resources/spring-security.xml 2007-08-31 12:28:50 UTC (rev 424) +++ trunk/openutils-hibernate-security/src/test/resources/spring-security.xml 2007-08-31 12:29:23 UTC (rev 425) @@ -17,5 +17,28 @@ <value>securityInterceptor</value> </list> </property> - </bean> + </bean> + + <bean id="passwordEncoder" class="org.acegisecurity.providers.encoding.ShaPasswordEncoder" /> + <bean id="userDetailsService" class="it.openutils.usermanagement.acegi.HibernateUserDetailsServiceImpl" + autowire="byType"> + <property name="userDao" ref="userDAO" /> + </bean> + <bean id="authenticationProvider" class="org.springframework.aop.framework.ProxyFactoryBean" lazy-init="true"> + <property name="targetName" value="authenticationProviderDB" /> + </bean> + <bean id="roleVoter" class="org.acegisecurity.vote.RoleVoter" /> + <bean id="accessDecisionManager" class="org.acegisecurity.vote.AffirmativeBased"> + <property name="allowIfAllAbstainDecisions" value="false" /> + <property name="decisionVoters"> + <list> + <ref bean="roleVoter" /> + </list> + </property> + </bean> + <bean id="authenticationProviderDB" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider" + lazy-init="true"> + <property name="userDetailsService" ref="userDetailsService" /> + <property name="passwordEncoder" ref="passwordEncoder" /> + </bean> </beans> Modified: trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml =================================================================== --- trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml 2007-08-31 12:28:50 UTC (rev 424) +++ trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml 2007-08-31 12:29:23 UTC (rev 425) @@ -6,6 +6,4 @@ <import resource="classpath:spring-dao.xml" /> <import resource="classpath:spring-managers.xml" /> <import resource="classpath:spring-security.xml" /> - - </beans> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |