package org.picketlink.test.idm.identitymodel.complex; import org.junit.Test; import org.picketlink.idm.IdentityManager; import org.picketlink.test.idm.identitymodel.complex.model.CustomerUser; import org.picketlink.test.idm.identitymodel.complex.model.EmployeeUser; import org.picketlink.test.idm.identitymodel.complex.model.entity.Customer; import org.picketlink.test.idm.identitymodel.complex.model.entity.Email; 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 CustomerUserTestCase extends AbstractIdentityTypeTestCase<CustomerUser> { private ComplexSchemaHelper helper; public CustomerUserTestCase(final IdentityConfigurationTester builder) { super(builder); } @Override public void onBefore() { super.onBefore(); this.helper = new ComplexSchemaHelper("Acme", "acme.com", getVisitor()); } @Override protected CustomerUser createIdentityType() { return createCustomerUser("Mario", "Trevis", "mario"); } @Override protected CustomerUser getIdentityType() { IdentityQuery<CustomerUser> query = this.helper.getIdentityManager().createIdentityQuery(CustomerUser.class); query.setParameter(EmployeeUser.QUERY_ATTRIBUTE.byName("userName"), "mario"); List<CustomerUser> result = query.getResultList(); assertEquals(1, result.size()); return result.get(0); } @Test public void testCreate() { CustomerUser customer = createIdentityType(); CustomerUser storedEmployeeUser = getIdentityType(); assertNotNull(storedEmployeeUser); assertEquals(storedEmployeeUser.getUserName(), customer.getUserName()); assertEquals(storedEmployeeUser.getPerson().getId(), customer.getPerson().getId()); assertEquals(storedEmployeeUser.getPerson().getFirstName(), customer.getPerson().getFirstName()); assertEquals(storedEmployeeUser.getPerson().getLastName(), customer.getPerson().getLastName()); assertEquals(storedEmployeeUser.getPerson().getBirthDate(), customer.getPerson().getBirthDate()); assertEquals(1, customer.getPerson().getAddress().size()); assertEquals(storedEmployeeUser.getPerson().getAddress().get(0).getCity(), customer.getPerson().getAddress().get(0).getCity()); assertEquals(storedEmployeeUser.getPerson().getAddress().get(0).getCity(), customer.getPerson().getAddress().get(0).getCity()); assertEquals(storedEmployeeUser.getPerson().getAddress().get(0).getCountry(), customer.getPerson().getAddress().get(0).getCountry()); assertEquals(storedEmployeeUser.getPerson().getAddress().get(0).getStreetName(), customer.getPerson().getAddress().get(0).getStreetName()); assertEquals(storedEmployeeUser.getPerson().getAddress().get(0).getStreetNumber(), customer.getPerson().getAddress().get(0).getStreetNumber()); assertEquals(storedEmployeeUser.getPerson().getAddress().get(0).getType(), customer.getPerson().getAddress().get(0).getType()); assertEquals(storedEmployeeUser.getPerson().getAddress().get(0).getUnitNumber(), customer.getPerson().getAddress().get(0).getUnitNumber()); assertEquals(storedEmployeeUser.getPerson().getAddress().get(0).getZip(), customer.getPerson().getAddress().get(0).getZip()); assertEquals(1, customer.getPerson().getEmails().size()); assertEquals(storedEmployeeUser.getPerson().getEmails().get(0).getAddress(), customer.getPerson().getEmails().get(0).getAddress()); assertEquals(storedEmployeeUser.getPerson().getEmails().get(0).isPrimaryEmail(), customer.getPerson().getEmails().get(0).isPrimaryEmail()); assertEquals(1, customer.getPerson().getPhones().size()); assertEquals(storedEmployeeUser.getPerson().getPhones().get(0).getNumber(), customer.getPerson().getPhones().get(0).getNumber()); assertEquals(storedEmployeeUser.getPerson().getPhones().get(0).getType(), customer.getPerson().getPhones().get(0).getType()); assertEquals(Customer.class, storedEmployeeUser.getPerson().getClass()); } @Test public void testSingleNamedMappedAttribute() { CustomerUser customer = createIdentityType(); Email email = new Email(); email.setAddress("user@domain.com"); email.setPrimaryEmail(true); customer.setEmail(email); getIdentityManager().update(customer); CustomerUser storedEmployeeUser = getIdentityType(); assertNotNull(storedEmployeeUser.getEmail()); assertEquals(email.getAddress(), storedEmployeeUser.getEmail().getAddress()); assertEquals(email.isPrimaryEmail(), storedEmployeeUser.getEmail().isPrimaryEmail()); email.setPrimaryEmail(false); email.setAddress("changed@domain.com"); getIdentityManager().update(customer); assertNotNull(storedEmployeeUser.getEmail()); assertEquals(email.getAddress(), storedEmployeeUser.getEmail().getAddress()); assertEquals(email.isPrimaryEmail(), storedEmployeeUser.getEmail().isPrimaryEmail()); } @Test public void testUpdate() { CustomerUser customer = createIdentityType(); customer.getPerson().setFirstName("Changed FirstName"); IdentityManager identityManager = getIdentityManager(); identityManager.update(customer); CustomerUser storedEmployeeUser = getIdentityType(); assertEquals(customer.getPerson().getFirstName(), storedEmployeeUser.getPerson().getFirstName()); assertEquals(customer.getPerson().getLastName(), storedEmployeeUser.getPerson().getLastName()); assertEquals(customer.getPerson().getBirthDate(), storedEmployeeUser.getPerson().getBirthDate()); identityManager.update(customer); storedEmployeeUser = getIdentityType(); this.helper.addAddress(customer.getPerson(), "Another City"); identityManager.update(customer); storedEmployeeUser = getIdentityType(); assertEquals(2, customer.getPerson().getAddress().size()); customer.setExpirationDate(new Date()); identityManager.update(customer); storedEmployeeUser = getIdentityType(); assertNotNull(storedEmployeeUser.getExpirationDate()); customer.setLoginCount(10); customer.setFailedLoginCount(3); identityManager.update(customer); storedEmployeeUser = getIdentityType(); assertEquals(customer.getFailedLoginCount(), storedEmployeeUser.getFailedLoginCount()); assertEquals(customer.getLoginCount(), storedEmployeeUser.getLoginCount()); } @Test public void testFindByPerson() { CustomerUser customer = createIdentityType(); IdentityManager identityManager = getIdentityManager(); IdentityQuery<CustomerUser> query = identityManager.createIdentityQuery(CustomerUser.class); query.setParameter(EmployeeUser.QUERY_ATTRIBUTE.byName("person"), customer.getPerson()); List<CustomerUser> result = query.getResultList(); assertEquals(1, result.size()); assertEquals(customer.getId(), result.get(0).getId()); } @Override public IdentityManager getIdentityManager() { return this.helper.getIdentityManager(); } public CustomerUser createCustomerUser(String firstName, String lastName, String userName) { return this.helper.createCustomerUser(firstName, lastName, userName); } }