/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.itest.store.dao; import com.enonic.cms.core.security.group.GroupEntity; import com.enonic.cms.core.security.group.GroupSpecification; import com.enonic.cms.core.security.group.GroupType; import com.enonic.cms.core.security.user.UserEntity; import com.enonic.cms.core.security.user.UserSpecification; import com.enonic.cms.core.security.user.UserType; import com.enonic.cms.itest.AbstractSpringTest; import com.enonic.cms.store.dao.GroupDao; import com.enonic.cms.store.dao.UserDao; import org.joda.time.DateTime; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import static org.junit.Assert.assertEquals; public class GroupEntityDaoTest extends AbstractSpringTest { @Autowired private GroupDao groupDao; @Autowired private UserDao userDao; @Test public void testGroupToUserNavigation() { // Setup of prerequisites UserEntity user = new UserEntity(); user.setDeleted( false ); user.setEmail( "email@example.com" ); user.setDisplayName( "DisplayName" ); user.setName( "uid" ); user.setSyncValue( "syncValue" ); user.setType( UserType.NORMAL ); user.setTimestamp( new DateTime() ); userDao.storeNew( user ); GroupEntity userGroup = new GroupEntity(); userGroup.setDeleted( 0 ); userGroup.setDescription( null ); userGroup.setName( "userGroup" + user.getKey() ); userGroup.setSyncValue( user.getSync() ); userGroup.setUser( user ); userGroup.setType( GroupType.USER ); userGroup.setRestricted( false ); groupDao.storeNew( userGroup ); user.setUserGroup( userGroup ); userDao.getHibernateTemplate().flush(); userDao.getHibernateTemplate().clear(); // Small verification before the real exercise UserSpecification userSpec = new UserSpecification(); userSpec.setUserGroupKey( userGroup.getGroupKey() ); UserEntity storedUser = userDao.findSingleBySpecification( userSpec ); assertEquals( user, storedUser ); assertEquals( userGroup, storedUser.getUserGroup() ); userDao.getHibernateTemplate().clear(); // Excercise: Find usergroup and navigate to the user GroupSpecification groupSpecification = new GroupSpecification(); groupSpecification.setKey( userGroup.getGroupKey() ); GroupEntity storedGroup = groupDao.findSingleBySpecification( groupSpecification ); // Verify: the user assertEquals( user, storedGroup.getUser() ); } }