package de.fhb.autobday.manager.user; import com.stvconsultants.easygloss.javaee.JavaEEGloss; import de.fhb.autobday.commons.HashHelper; import de.fhb.autobday.commons.PasswordGenerator; import de.fhb.autobday.dao.AbdUserFacade; import de.fhb.autobday.data.AbdAccount; import de.fhb.autobday.data.AbdUser; import java.util.ArrayList; import javax.persistence.EntityManager; import javax.persistence.Query; import static org.easymock.EasyMock.*; import static org.junit.Assert.assertEquals; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; /** * Integrationtest * * @author Andy Klay <klay@fh-brandenburg.de>, Christoph Ott */ public class UserManagerTestIntegration { private static JavaEEGloss gloss; private static UserManager managerUnderTest; private static AbdUserFacade userDAO; private EntityManager emMock; private AbdUser user; @BeforeClass public static void setUpClass() { userDAO = new AbdUserFacade(); } @Before public void setUp() throws Exception { gloss = new JavaEEGloss(); //create Mocks emMock = createMock(EntityManager.class); //set EntityManagers userDAO.setEntityManager(emMock); //set Objekts to inject gloss.addEJB(userDAO); //create Manager with Mocks managerUnderTest = gloss.make(UserManager.class); String salt = PasswordGenerator.generateSalt(); String password = ""; password = HashHelper.calcSHA1("1234abcd" + salt); user = new AbdUser(1, "max", password, salt, "mustermann", "max"); } /** * * */ @Test public void testGetUser() throws Exception { System.out.println(""); expect(emMock.find(AbdUser.class, user.getId())).andReturn(user); //prepare test variables // Setting up the expected value of the method call of Mockobject // Setup is finished need to activate the mock replay(emMock); assertEquals(user, managerUnderTest.getUser(user.getId())); //verify verify(emMock); } @Test public void testLogin() throws Exception { System.out.println(""); // Setting up the expected value of the method call of Mockobject Query queryMock = createMock(Query.class); expect(queryMock.setParameter("username", user.getUsername())).andReturn(queryMock); expect(queryMock.getSingleResult()).andReturn(user); expect(emMock.createNamedQuery("AbdUser.findByUsername")).andReturn(queryMock); // Setup is finished need to activate the mock replay(emMock); replay(queryMock); assertEquals(user, managerUnderTest.login(user.getUsername(), "1234abcd")); //verify verify(emMock); verify(queryMock); } @Test public void testRegister() throws Exception { System.out.println(""); //prepare test variables String firstName = "maja"; String name = "biene"; String username = "diemaja"; String mail = "maja@gmail.com"; String password = "1234abcd"; AbdUser expectedUser = new AbdUser(Integer.SIZE); // Setting up the expected value of the method call of Mockobject Query queryMock = createMock(Query.class); expect(queryMock.setParameter("username", username)).andReturn(queryMock); expect(queryMock.getSingleResult()).andReturn(null); expect(emMock.createNamedQuery("AbdUser.findByUsername")).andReturn(queryMock); emMock.persist((AbdUser) anyObject()); // Setup is finished need to activate the mock replay(emMock); replay(queryMock); assertEquals(expectedUser, managerUnderTest.register(firstName, name, username, mail, password, password)); //verify verify(emMock); verify(queryMock); } @Test public void testGetAllAccountsFromUser() throws Exception { System.out.println(""); //prepare test variables AbdAccount accountOne = new AbdAccount(1); AbdAccount accountTwo = new AbdAccount(2); ArrayList<AbdAccount> outputCollection = new ArrayList<AbdAccount>(); outputCollection.add(accountOne); outputCollection.add(accountTwo); user.setAbdAccountCollection(outputCollection); // Setting up the expected value of the method call of Mockobject expect(userDAO.find(user.getId())).andReturn(user); userDAO.refresh(user); // Setup is finished need to activate the mock replay(emMock); assertEquals(outputCollection, managerUnderTest.getAllAccountsFromUser(user)); //verify verify(emMock); } }