package de.randi2.core.integration.services; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertTrue; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.persistence.EntityTransaction; import org.junit.Ignore; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AnonymousAuthenticationToken; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import de.randi2.dao.LoginDao; import de.randi2.dao.TrialSiteDao; import de.randi2.model.Login; import de.randi2.model.Role; import de.randi2.model.TrialSite; import de.randi2.services.UserService; import de.randi2.testUtility.utility.DomainObjectFactory; @Transactional public class UserServiceTestRoles extends AbstractServiceTest { @Autowired private UserService userService; @Autowired private DomainObjectFactory factory; @Autowired private LoginDao loginDao; @Autowired private TrialSiteDao trialSiteDao; @Override public void setUp() { super.setUp(); authenticatAsAdmin(); for (int i = 0; i < 10; i++) { Login login = factory.getLogin(); loginDao.create(login); } } @SuppressWarnings("unchecked") @Test public void testGetAllAdmin() { authenticatAsAdmin(); List<Login> loginsTemp = entityManager .createQuery("from Login").getResultList(); List<Login> logins = userService.getAll(); assertEquals(loginsTemp.size(), logins.size()); assertTrue(loginsTemp.containsAll(logins)); assertTrue(logins.containsAll(loginsTemp)); } @SuppressWarnings("unchecked") @Test public void testGetAllInvestigator() { authenticatAsAdmin(); TrialSite site = trialSiteDao.get(user.getPerson()); List<Login> loginsTemp = entityManager .createQuery("from Login").getResultList(); authenticatAsInvestigator(); List<Login> logins = userService.getAll(); assertEquals(loginsTemp.size(), logins.size()); authenticatAsAdmin(); for(int i = 0 ; i< 10 ;i++ ){ Login l = factory.getLogin(); userService.create(l, site); } authenticatAsInvestigator(); logins = userService.getAll(); assertEquals(10+loginsTemp.size(),logins.size()); authenticatAsAdmin(); logins = userService.getAll(); assertEquals(10+loginsTemp.size(),logins.size()); } // private void authenticatAsAnonymous() { // Login newUser = new Login(); // newUser.setPerson(new Person()); // newUser.addRole(Role.ROLE_ANONYMOUS); // AnonymousAuthenticationToken authToken = new AnonymousAuthenticationToken( // "anonymousUser", newUser, newUser.getAuthorities()); // // Perform authentication // SecurityContextHolder.getContext().setAuthentication(authToken); // SecurityContextHolder.getContext().getAuthentication() // .setAuthenticated(true); // } }