package org.picketlink.test.idm.identitymodel.complex; import org.junit.Test; import org.picketlink.idm.IdentityManager; import org.picketlink.test.idm.identitymodel.complex.model.EmployeeUser; import org.picketlink.test.idm.identitymodel.complex.model.entity.Employee; import org.picketlink.idm.query.IdentityQuery; import org.picketlink.test.idm.Configuration; import org.picketlink.test.idm.basic.AbstractIdentityTypeTestCase; import org.picketlink.test.idm.testers.IdentityConfigurationTester; import org.picketlink.test.idm.testers.JPAStoreComplexSchemaConfigurationTester; import java.util.Date; import java.util.List; import static org.junit.Assert.*; /** */ @Configuration(include = JPAStoreComplexSchemaConfigurationTester.class) public class EmployeeUserTestCase extends AbstractIdentityTypeTestCase<EmployeeUser> { private ComplexSchemaHelper helper; public EmployeeUserTestCase(final IdentityConfigurationTester builder) { super(builder); } @Override public void onBefore() { super.onBefore(); this.helper = new ComplexSchemaHelper("Acme", "acme.com", getVisitor()); } @Override protected EmployeeUser createIdentityType() { return createEmployeeUser("Chuck", "Norris", "chuck"); } @Override protected EmployeeUser getIdentityType() { IdentityQuery<EmployeeUser> query = this.helper.getIdentityManager().createIdentityQuery(EmployeeUser.class); query.setParameter(EmployeeUser.QUERY_ATTRIBUTE.byName("userName"), "chuck"); List<EmployeeUser> result = query.getResultList(); assertEquals(1, result.size()); return result.get(0); } @Test public void testCreate() { EmployeeUser employeeUser = createIdentityType(); EmployeeUser storedEmployeeUser = getIdentityType(); assertNotNull(storedEmployeeUser); assertEquals(storedEmployeeUser.getUserName(), employeeUser.getUserName()); assertEquals(storedEmployeeUser.getPerson().getId(), employeeUser.getPerson().getId()); assertEquals(storedEmployeeUser.getPerson().getFirstName(), employeeUser.getPerson().getFirstName()); assertEquals(storedEmployeeUser.getPerson().getLastName(), employeeUser.getPerson().getLastName()); assertEquals(storedEmployeeUser.getPerson().getBirthDate(), employeeUser.getPerson().getBirthDate()); assertEquals(1, employeeUser.getPerson().getAddress().size()); assertEquals(storedEmployeeUser.getPerson().getAddress().get(0).getCity(), employeeUser.getPerson().getAddress().get(0).getCity()); assertEquals(storedEmployeeUser.getPerson().getAddress().get(0).getCity(), employeeUser.getPerson().getAddress().get(0).getCity()); assertEquals(storedEmployeeUser.getPerson().getAddress().get(0).getCountry(), employeeUser.getPerson().getAddress().get(0).getCountry()); assertEquals(storedEmployeeUser.getPerson().getAddress().get(0).getStreetName(), employeeUser.getPerson().getAddress().get(0).getStreetName()); assertEquals(storedEmployeeUser.getPerson().getAddress().get(0).getStreetNumber(), employeeUser.getPerson().getAddress().get(0).getStreetNumber()); assertEquals(storedEmployeeUser.getPerson().getAddress().get(0).getType(), employeeUser.getPerson().getAddress().get(0).getType()); assertEquals(storedEmployeeUser.getPerson().getAddress().get(0).getUnitNumber(), employeeUser.getPerson().getAddress().get(0).getUnitNumber()); assertEquals(storedEmployeeUser.getPerson().getAddress().get(0).getZip(), employeeUser.getPerson().getAddress().get(0).getZip()); assertEquals(1, employeeUser.getPerson().getEmails().size()); assertEquals(storedEmployeeUser.getPerson().getEmails().get(0).getAddress(), employeeUser.getPerson().getEmails().get(0).getAddress()); assertEquals(storedEmployeeUser.getPerson().getEmails().get(0).isPrimaryEmail(), employeeUser.getPerson().getEmails().get(0).isPrimaryEmail()); assertEquals(1, employeeUser.getPerson().getPhones().size()); assertEquals(storedEmployeeUser.getPerson().getPhones().get(0).getNumber(), employeeUser.getPerson().getPhones().get(0).getNumber()); assertEquals(storedEmployeeUser.getPerson().getPhones().get(0).getType(), employeeUser.getPerson().getPhones().get(0).getType()); assertEquals(Employee.class, storedEmployeeUser.getPerson().getClass()); assertNotNull(((Employee) storedEmployeeUser.getPerson()).getOrganizationUnit()); assertEquals(((Employee) storedEmployeeUser.getPerson()).getOrganizationUnit(), ((Employee) employeeUser.getPerson()).getOrganizationUnit()); assertEquals(((Employee) storedEmployeeUser.getPerson()).getOrganizationUnit().getParent(), this.helper.getTechnologyOrgUnit()); } @Test public void testUpdate() { EmployeeUser employeeUser = createIdentityType(); employeeUser.getPerson().setFirstName("Changed FirstName"); IdentityManager identityManager = getIdentityManager(); identityManager.update(employeeUser); EmployeeUser storedEmployeeUser = getIdentityType(); assertEquals(employeeUser.getPerson().getFirstName(), storedEmployeeUser.getPerson().getFirstName()); assertEquals(employeeUser.getPerson().getLastName(), storedEmployeeUser.getPerson().getLastName()); assertEquals(employeeUser.getPerson().getBirthDate(), storedEmployeeUser.getPerson().getBirthDate()); employeeUser.setEmployeeId("RH000000000"); identityManager.update(employeeUser); storedEmployeeUser = getIdentityType(); assertEquals(employeeUser.getEmployeeId(), storedEmployeeUser.getEmployeeId()); this.helper.addAddress(employeeUser.getPerson(), "Another City"); identityManager.update(employeeUser); storedEmployeeUser = getIdentityType(); assertEquals(2, employeeUser.getPerson().getAddress().size()); employeeUser.setExpirationDate(new Date()); identityManager.update(employeeUser); storedEmployeeUser = getIdentityType(); assertNotNull(storedEmployeeUser.getExpirationDate()); employeeUser.setLoginCount(10); employeeUser.setFailedLoginCount(3); identityManager.update(employeeUser); storedEmployeeUser = getIdentityType(); assertEquals(employeeUser.getFailedLoginCount(), storedEmployeeUser.getFailedLoginCount()); assertEquals(employeeUser.getLoginCount(), storedEmployeeUser.getLoginCount()); } @Test public void testFindByPerson() { EmployeeUser chuck = createIdentityType(); IdentityManager identityManager = getIdentityManager(); IdentityQuery<EmployeeUser> query = identityManager.createIdentityQuery(EmployeeUser.class); query.setParameter(EmployeeUser.QUERY_ATTRIBUTE.byName("person"), chuck.getPerson()); List<EmployeeUser> result = query.getResultList(); assertEquals(1, result.size()); assertEquals(chuck.getId(), result.get(0).getId()); EmployeeUser mary = createEmployeeUser("Mary", "Anne", "mary"); query = identityManager.createIdentityQuery(EmployeeUser.class); query.setParameter(EmployeeUser.QUERY_ATTRIBUTE.byName("person"), mary.getPerson()); result = query.getResultList(); assertEquals(1, result.size()); assertEquals(mary.getId(), result.get(0).getId()); } @Override public IdentityManager getIdentityManager() { return this.helper.getIdentityManager(); } public EmployeeUser createEmployeeUser(String firstName, String lastName, String userName) { return this.helper.createEmployeeUser(firstName, lastName, userName, this.helper.getSecurityOrgUnit()); } }