/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.security.user; import java.util.Map; import org.junit.Test; import com.google.common.collect.Maps; import com.enonic.cms.api.client.model.user.Address; import com.enonic.cms.core.security.userstore.UserStoreEntity; import com.enonic.cms.api.plugin.ext.userstore.UserField; import com.enonic.cms.api.plugin.ext.userstore.UserFieldType; import com.enonic.cms.api.plugin.ext.userstore.UserFields; import static org.junit.Assert.*; public class UserEntityTest { @Test public void testIsInRemoteUserStore() throws Exception { UserEntity user = new UserEntity(); user.setType( UserType.ANONYMOUS ); assertFalse( user.isInRemoteUserStore() ); user.setType( UserType.ADMINISTRATOR ); assertFalse( user.isInRemoteUserStore() ); user.setType( UserType.NORMAL ); assertFalse( user.isInRemoteUserStore() ); UserStoreEntity localUserStore = new UserStoreEntity(); user.setUserStore( localUserStore ); assertFalse( user.isInRemoteUserStore() ); UserStoreEntity remoteUserStore = new UserStoreEntity(); remoteUserStore.setConnectorName( "myRemoteConnector" ); user.setUserStore( remoteUserStore ); assertTrue( user.isInRemoteUserStore() ); } @Test public void setUserFields_given_empty() { UserEntity user = new UserEntity(); // exercise boolean changed = user.setUserFields( new UserFields( true ) ); // verify assertFalse( changed ); assertEquals( 0, user.getFieldMap().size() ); } @Test public void setUserFields_given_one_user_field() { UserEntity user = new UserEntity(); // exercise boolean changed = user.setUserFields( new UserFields().setCountry( "Norway" ) ); // verify assertTrue( changed ); assertEquals( 1, user.getFieldMap().size() ); assertEquals( "Norway", user.getFieldMap().get( UserFieldType.COUNTRY.getName() ) ); } @Test public void setUserFields_given_addresses_user_field() { UserEntity user = new UserEntity(); Address address1 = new Address(); address1.setLabel( "Home" ); address1.setCountry( "Norway" ); Address address2 = new Address(); address2.setLabel( "Second home" ); address2.setCountry( "South Africa" ); // exercise boolean changed = user.setUserFields( new UserFields().setAddresses( address1, address2 ) ); // verify assertTrue( changed ); assertEquals( 2, user.getUserFields().getSize() ); assertEquals( 4, user.getFieldMap().size() ); } @Test public void setUserFields_returns_true_when_given_is_same_as_existing() { UserEntity user = new UserEntity(); Map<String, String> fieldMap = Maps.newHashMap(); fieldMap.put( UserFieldType.FIRST_NAME.getName(), "First name" ); fieldMap.put( UserFieldType.ADDRESS.getName() + "[0].label", "Home" ); fieldMap.put( UserFieldType.ADDRESS.getName() + "[0].country", "Norway" ); fieldMap.put( UserFieldType.ADDRESS.getName() + "[1].label", "Second home" ); fieldMap.put( UserFieldType.ADDRESS.getName() + "[1].country", "South Africa" ); user.setFieldMap( fieldMap ); // exercise Address address1 = new Address(); address1.setLabel( "Home" ); address1.setCountry( "Norway" ); Address address2 = new Address(); address2.setLabel( "Second home" ); address2.setCountry( "South Africa" ); UserFields userFields = new UserFields().setFirstName( "First name" ).setAddresses( address1, address2 ); boolean changed = user.setUserFields( userFields ); // verify assertFalse( changed ); } @Test public void setUserFields_returns_false_when_given_contains_fields_with_null_which_are_already_missing() { UserEntity user = new UserEntity(); Map<String, String> fieldMap = Maps.newHashMap(); fieldMap.put( UserFieldType.FIRST_NAME.getName(), "First name" ); user.setFieldMap( fieldMap ); // exercise UserFields userFields = new UserFields(); userFields.setFirstName( "First name" ); userFields.add( new UserField( UserFieldType.LAST_NAME, null ) ); boolean changed = user.setUserFields( userFields ); // verify assertFalse( changed ); } }