Omfattande tillägg kring rollhantering
git-svn-id: svn://svn.dsv.su.se/scipro/scipro/trunk@10 73ecded7-942e-4092-bab0-0e58ef0ee984
This commit is contained in:
parent
0171b2d9ab
commit
3045a60dcb
src
main
test/java/se/su/dsv/scipro
@ -9,14 +9,20 @@
|
|||||||
|
|
||||||
<!-- A JPA Persistence Unit -->
|
<!-- A JPA Persistence Unit -->
|
||||||
<persistence-unit name="defaultPersistenceUnit" transaction-type="RESOURCE_LOCAL">
|
<persistence-unit name="defaultPersistenceUnit" transaction-type="RESOURCE_LOCAL">
|
||||||
|
|
||||||
<provider>org.hibernate.ejb.HibernatePersistence</provider>
|
<provider>org.hibernate.ejb.HibernatePersistence</provider>
|
||||||
<class>se.su.dsv.scipro.data.dataobjects.Username</class>
|
|
||||||
|
<!-- JPA entities must be registered here -->
|
||||||
|
<class>se.su.dsv.scipro.data.dataobjects.Username</class>
|
||||||
<class>se.su.dsv.scipro.data.dataobjects.User</class>
|
<class>se.su.dsv.scipro.data.dataobjects.User</class>
|
||||||
<class>se.su.dsv.scipro.data.dataobjects.LazyDeletableDomainObject</class>
|
<class>se.su.dsv.scipro.data.dataobjects.LazyDeletableDomainObject</class>
|
||||||
<class>se.su.dsv.scipro.data.dataobjects.Event</class>
|
<class>se.su.dsv.scipro.data.dataobjects.Event</class>
|
||||||
<class>se.su.dsv.scipro.data.dataobjects.DomainObject</class>
|
<class>se.su.dsv.scipro.data.dataobjects.DomainObject</class>
|
||||||
|
<class>se.su.dsv.scipro.data.dataobjects.Student</class>
|
||||||
<!-- JPA entities must be registered here -->
|
<class>se.su.dsv.scipro.data.dataobjects.Admin</class>
|
||||||
|
<class>se.su.dsv.scipro.data.dataobjects.SysAdmin</class>
|
||||||
|
<class>se.su.dsv.scipro.data.dataobjects.Employee</class>
|
||||||
|
<class>se.su.dsv.scipro.data.dataobjects.Role</class>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
|
|
||||||
@ -27,6 +33,9 @@
|
|||||||
<property name="hibernate.cache.use_second_level_cache" value="true" />
|
<property name="hibernate.cache.use_second_level_cache" value="true" />
|
||||||
<property name="hibernate.generate_statistics" value="false" />
|
<property name="hibernate.generate_statistics" value="false" />
|
||||||
|
|
||||||
|
<!-- DEVELOPMENT VARIABLE, REMOVE FOR PRODUCTION USE -->
|
||||||
|
<property name="hibernate.hbm2ddl.auto" value="update" />
|
||||||
|
|
||||||
<!-- Local mysql test database -->
|
<!-- Local mysql test database -->
|
||||||
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
|
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
|
||||||
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"></property>
|
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"></property>
|
||||||
@ -41,17 +50,22 @@
|
|||||||
<!-- A JPA Persistence Unit used for tests -->
|
<!-- A JPA Persistence Unit used for tests -->
|
||||||
<persistence-unit name="testPersistenceUnit" transaction-type="RESOURCE_LOCAL">
|
<persistence-unit name="testPersistenceUnit" transaction-type="RESOURCE_LOCAL">
|
||||||
|
|
||||||
|
<provider>org.hibernate.ejb.HibernatePersistence</provider>
|
||||||
|
|
||||||
<!-- This list of persisted Entitys IS NOT updated by eclipes JPA facet,
|
<!-- This list of persisted Entitys IS NOT updated by eclipes JPA facet,
|
||||||
if some tests are failing, then copy paste exact list from the above persistence unit -->
|
if some tests are failing, then copy paste exact list from the above persistence unit -->
|
||||||
|
|
||||||
<provider>org.hibernate.ejb.HibernatePersistence</provider>
|
<!-- JPA entities must be registered here -->
|
||||||
<class>se.su.dsv.scipro.data.dataobjects.Username</class>
|
<class>se.su.dsv.scipro.data.dataobjects.Username</class>
|
||||||
<class>se.su.dsv.scipro.data.dataobjects.User</class>
|
<class>se.su.dsv.scipro.data.dataobjects.User</class>
|
||||||
<class>se.su.dsv.scipro.data.dataobjects.LazyDeletableDomainObject</class>
|
<class>se.su.dsv.scipro.data.dataobjects.LazyDeletableDomainObject</class>
|
||||||
<class>se.su.dsv.scipro.data.dataobjects.Event</class>
|
<class>se.su.dsv.scipro.data.dataobjects.Event</class>
|
||||||
<class>se.su.dsv.scipro.data.dataobjects.DomainObject</class>
|
<class>se.su.dsv.scipro.data.dataobjects.DomainObject</class>
|
||||||
|
<class>se.su.dsv.scipro.data.dataobjects.Student</class>
|
||||||
<!-- JPA entities must be registered here -->
|
<class>se.su.dsv.scipro.data.dataobjects.Admin</class>
|
||||||
|
<class>se.su.dsv.scipro.data.dataobjects.SysAdmin</class>
|
||||||
|
<class>se.su.dsv.scipro.data.dataobjects.Employee</class>
|
||||||
|
<class>se.su.dsv.scipro.data.dataobjects.Role</class>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
|
|
||||||
@ -66,7 +80,17 @@
|
|||||||
<property name="hibernate.hbm2ddl.auto" value="create" />
|
<property name="hibernate.hbm2ddl.auto" value="create" />
|
||||||
<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"></property>
|
<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"></property>
|
||||||
<property name="hibernate.connection.url" value="jdbc:hsqldb:mem:test"></property>
|
<property name="hibernate.connection.url" value="jdbc:hsqldb:mem:test"></property>
|
||||||
<property name="hibernate.show_sql" value="true" />
|
<property name="hibernate.show_sql" value="true" />
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<property name="hibernate.hbm2ddl.auto" value="create" />
|
||||||
|
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
|
||||||
|
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"></property>
|
||||||
|
<property name="hibernate.connection.url" value="jdbc:mysql://localhost/scipro"></property>
|
||||||
|
<property name="hibernate.connection.username" value="root"></property>
|
||||||
|
<property name="hibernate.connection.password" value="martin"></property>
|
||||||
|
<property name="hibernate.c3p0.idle_test_period" value="3600"></property>
|
||||||
|
-->
|
||||||
|
|
||||||
</properties>
|
</properties>
|
||||||
</persistence-unit>
|
</persistence-unit>
|
||||||
|
@ -29,6 +29,10 @@
|
|||||||
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
<bean id="roleDao" class="se.su.dsv.scipro.data.dao.jpa.RoleDaoJPAImp">
|
||||||
|
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||||
|
</bean>
|
||||||
|
|
||||||
<bean class="se.su.dsv.scipro.DataInitialiser" init-method="dataInit">
|
<bean class="se.su.dsv.scipro.DataInitialiser" init-method="dataInit">
|
||||||
<property name="eventDao" ref="eventDao"></property>
|
<property name="eventDao" ref="eventDao"></property>
|
||||||
</bean>
|
</bean>
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
|
||||||
|
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
|
||||||
|
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
|
||||||
|
default-autowire="byName">
|
||||||
|
|
||||||
|
<bean id="entityManagerFactory"
|
||||||
|
class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
|
||||||
|
<property name="persistenceUnitName" value="testPersistenceUnit" />
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
enable the configuration of transactional behavior based on
|
||||||
|
annotations
|
||||||
|
-->
|
||||||
|
<tx:annotation-driven transaction-manager="transactionManager" />
|
||||||
|
|
||||||
|
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
|
||||||
|
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
|
||||||
|
<bean id="userDao" class="se.su.dsv.scipro.data.dao.jpa.UserDaoJPAImp">
|
||||||
|
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||||
|
</bean>
|
||||||
|
<bean id="roleDao" class="se.su.dsv.scipro.data.dao.jpa.RoleDaoJPAImp">
|
||||||
|
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</beans>
|
147
src/test/java/se/su/dsv/scipro/dao/jpa/TestRoleDaoJPA.java
Normal file
147
src/test/java/se/su/dsv/scipro/dao/jpa/TestRoleDaoJPA.java
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
package se.su.dsv.scipro.dao.jpa;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.test.annotation.Rollback;
|
||||||
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import se.su.dsv.scipro.data.dao.interfaces.RoleDao;
|
||||||
|
import se.su.dsv.scipro.data.dao.interfaces.UserDao;
|
||||||
|
import se.su.dsv.scipro.data.dataobjects.Admin;
|
||||||
|
import se.su.dsv.scipro.data.dataobjects.Student;
|
||||||
|
import se.su.dsv.scipro.data.dataobjects.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Martin Peters - mpeters@dsv.su.se
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@RunWith(SpringJUnit4ClassRunner.class)
|
||||||
|
@ContextConfiguration
|
||||||
|
public class TestRoleDaoJPA {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserDao userDao;
|
||||||
|
@Autowired
|
||||||
|
private RoleDao roleDao;
|
||||||
|
|
||||||
|
protected User user;
|
||||||
|
|
||||||
|
protected User deletedUser;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void startTransaction()
|
||||||
|
{
|
||||||
|
user = new User();
|
||||||
|
user.setEmailAddress("test@dsv.su.se");
|
||||||
|
user.setIdentifier(new Long(666));
|
||||||
|
user.setFirstName("Test");
|
||||||
|
user.setLastName("Person");
|
||||||
|
user = userDao.save(user);
|
||||||
|
|
||||||
|
deletedUser = new User();
|
||||||
|
deletedUser.setEmailAddress("testdeleted@dsv.su.se");
|
||||||
|
deletedUser.setIdentifier(new Long(777));
|
||||||
|
deletedUser.setFirstName("Test");
|
||||||
|
deletedUser.setLastName("Person");
|
||||||
|
deletedUser.setDeleted(true);
|
||||||
|
deletedUser = userDao.save(deletedUser);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test method for {@link se.su.dsv.scipro.data.dao.jpa.RoleDaoJPAImp#isAdmin(User)}.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
@Transactional
|
||||||
|
@Rollback
|
||||||
|
public void testAdmin() {
|
||||||
|
|
||||||
|
Admin a = new Admin();
|
||||||
|
a.setUser(user);
|
||||||
|
Assert.assertFalse(roleDao.isAdmin(user));
|
||||||
|
if(!roleDao.isAdmin(user))
|
||||||
|
roleDao.save(a);
|
||||||
|
|
||||||
|
Assert.assertTrue(roleDao.isAdmin(user));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test method for {@link se.su.dsv.scipro.data.dao.jpa.RoleDaoJPAImp#isSysadmin(User)}.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
@Transactional
|
||||||
|
@Rollback
|
||||||
|
public void testSysAdmin() {
|
||||||
|
|
||||||
|
SysAdmin a = new SysAdmin();
|
||||||
|
a.setUser(user);
|
||||||
|
Assert.assertFalse(roleDao.isSysadmin(user));
|
||||||
|
if(!roleDao.isSysadmin(user))
|
||||||
|
roleDao.save(a);
|
||||||
|
|
||||||
|
Assert.assertTrue(roleDao.isSysadmin(user));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test method for {@link se.su.dsv.scipro.data.dao.jpa.RoleDaoJPAImp#isSysadmin(User)}.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
@Transactional
|
||||||
|
@Rollback
|
||||||
|
public void testEmployee() {
|
||||||
|
|
||||||
|
Employee e = new Employee();
|
||||||
|
e.setUser(user);
|
||||||
|
Assert.assertFalse(roleDao.isEmployee(user));
|
||||||
|
if(!roleDao.isEmployee(user))
|
||||||
|
roleDao.save(e);
|
||||||
|
|
||||||
|
Assert.assertTrue(roleDao.isEmployee(user));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test method for {@link se.su.dsv.scipro.data.dao.jpa.RoleDaoJPAImp#isExternal(User)}.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
@Transactional
|
||||||
|
@Rollback
|
||||||
|
public void testExternal() {
|
||||||
|
//Not yet implemented
|
||||||
|
Assert.assertFalse(roleDao.isExternal(user));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test method for {@link se.su.dsv.scipro.data.dao.jpa.RoleDaoJPAImp#isAdmin(User)}.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
@Transactional
|
||||||
|
@Rollback
|
||||||
|
public void testAdminLazyDeleted() {
|
||||||
|
|
||||||
|
Admin a = new Admin();
|
||||||
|
a.setUser(user);
|
||||||
|
Assert.assertFalse(roleDao.isAdmin(user));
|
||||||
|
if(!roleDao.isAdmin(user))
|
||||||
|
a = (Admin) roleDao.save(a);
|
||||||
|
|
||||||
|
Assert.assertTrue(roleDao.isAdmin(user));
|
||||||
|
|
||||||
|
roleDao.lazyDelete(a);
|
||||||
|
|
||||||
|
Assert.assertFalse(roleDao.isAdmin(user));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -24,6 +24,6 @@
|
|||||||
<bean id="userDao" class="se.su.dsv.scipro.data.dao.jpa.UserDaoJPAImp">
|
<bean id="userDao" class="se.su.dsv.scipro.data.dao.jpa.UserDaoJPAImp">
|
||||||
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
<property name="entityManagerFactory" ref="entityManagerFactory" />
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
|
||||||
</beans>
|
</beans>
|
||||||
|
@ -10,6 +10,7 @@ import org.mockito.Mockito;
|
|||||||
import se.su.dsv.scipro.HomePage;
|
import se.su.dsv.scipro.HomePage;
|
||||||
import se.su.dsv.scipro.SciProApplication;
|
import se.su.dsv.scipro.SciProApplication;
|
||||||
import se.su.dsv.scipro.data.dao.interfaces.EventDao;
|
import se.su.dsv.scipro.data.dao.interfaces.EventDao;
|
||||||
|
import se.su.dsv.scipro.data.dao.interfaces.RoleDao;
|
||||||
import se.su.dsv.scipro.data.dao.interfaces.UserDao;
|
import se.su.dsv.scipro.data.dao.interfaces.UserDao;
|
||||||
import se.su.dsv.scipro.loginlogout.pages.LoginPage;
|
import se.su.dsv.scipro.loginlogout.pages.LoginPage;
|
||||||
import se.su.dsv.scipro.pages.EventPage;
|
import se.su.dsv.scipro.pages.EventPage;
|
||||||
@ -29,9 +30,11 @@ public class TestWicketPages {
|
|||||||
|
|
||||||
EventDao eventDao = Mockito.mock(EventDao.class);
|
EventDao eventDao = Mockito.mock(EventDao.class);
|
||||||
UserDao userDao = Mockito.mock(UserDao.class);
|
UserDao userDao = Mockito.mock(UserDao.class);
|
||||||
|
RoleDao roleDao = Mockito.mock(RoleDao.class);
|
||||||
|
|
||||||
acm.putBean("eventDao", eventDao);
|
acm.putBean("eventDao", eventDao);
|
||||||
acm.putBean("userDao", userDao);
|
acm.putBean("userDao", userDao);
|
||||||
|
acm.putBean("roleDao", roleDao);
|
||||||
|
|
||||||
tester = new WicketTester(new SciProApplication(){
|
tester = new WicketTester(new SciProApplication(){
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user