/******************************************************************************* * Copyright 2006 - 2012 Vienna University of Technology, * Department of Software Technology and Interactive Systems, IFS * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package eu.scape_project.pw.idp.model; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import org.junit.After; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class IdpRoleTest { private static final Logger log = LoggerFactory.getLogger(IdpRoleTest.class); private static EntityManagerFactory emFactory; private static EntityManager em; @Before public void setUp() { emFactory = Persistence.createEntityManagerFactory("idpdbtest"); em = emFactory.createEntityManager(); log.info("persistence set up complete"); } @After public void tearDown() { em.close(); emFactory.close(); } @Test public void getUserWorksAsExpected() throws Exception { log.info("getUserWorksAsExpected: begin"); // ----- set-up ----- IdpRole adminRole = new IdpRole(); adminRole.setRoleName("adminrole"); IdpRole managerRole = new IdpRole(); managerRole.setRoleName("managerrole"); IdpUser user1 = createUser("user1", managerRole); IdpUser user2 = createUser("user2", adminRole, managerRole); em.getTransaction().begin(); em.persist(adminRole); em.persist(managerRole); em.persist(user1); em.persist(user2); em.getTransaction().commit(); // ----- test ----- em.refresh(adminRole); em.refresh(managerRole); assertEquals(1, adminRole.getUser().size()); assertEquals(2, managerRole.getUser().size()); assertTrue(adminRole.getUser().contains(user2)); assertTrue(managerRole.getUser().contains(user1)); assertTrue(managerRole.getUser().contains(user2)); log.info("getUserWorksAsExpected!"); } @Test public void deleteUnassignedRole_works() throws Exception { log.info("deleteUnassignedrole_works: begin"); // ----- set-up ----- IdpRole unassignedRole = new IdpRole(); unassignedRole.setRoleName("unassignedrole"); em.getTransaction().begin(); em.persist(unassignedRole); em.getTransaction().commit(); log.info("deleteAssignedRole_fails: stored role"); // ----- test ----- em.getTransaction().begin(); em.remove(unassignedRole); em.getTransaction().commit(); log.info("deleteAssignedRole_fails: removed role"); // if I reach this line - test succeeds assertTrue(true); log.info("deleteUnassignedRole_works!"); } /** * FIXME This test does not return, and the model needs to be revised: roles should not be stored nor updated via the user * @throws Exception */ @Ignore @Test(expected = Exception.class,timeout=1) public void deleteAssignedRole_fails() throws Exception { log.info("deleteAssignedRole_fails: begin"); // ----- set-up ----- IdpRole assignedRole = new IdpRole(); assignedRole.setRoleName("assignedrole"); IdpUser user1 = createUser("user1", assignedRole); em.getTransaction().begin(); em.persist(user1); em.flush(); em.getTransaction().commit(); em.clear(); // ----- test ----- em.getTransaction().begin(); IdpRole fetchedRole = em.find(IdpRole.class, assignedRole.getId()); em.remove(fetchedRole); em.getTransaction().commit(); log.info("deleteAssignedRole_fails!"); } private IdpUser createUser(String username, IdpRole... roles) { IdpUser user = new IdpUser(); user.setUsername(username); user.setPlainPassword("mypass"); user.setFirstName("Max"); user.setLastName("Mustermann"); user.setEmail(username + "@mustermann.at"); user.setStatus(IdpUserState.CREATED); user.setActionToken("uid-123-uid-456"); for (IdpRole role : roles) { user.getRoles().add(role); } return user; } }