/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.security.user; import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; import junit.framework.Assert; import com.enonic.cms.api.plugin.ext.userstore.UserFieldType; import com.enonic.cms.api.plugin.ext.userstore.UserFields; import com.enonic.cms.api.plugin.ext.userstore.UserStoreConfig; import com.enonic.cms.api.plugin.ext.userstore.UserStoreConfigField; public class DisplayNameResolverTest { private UserStoreConfig userStoreConfig; private DisplayNameResolver displayNameResolver; @Before public void before() { userStoreConfig = Mockito.mock( UserStoreConfig.class ); displayNameResolver = new DisplayNameResolver( userStoreConfig ); displayNameResolver.displayName = ""; } @Test public void testOnlyPrefix() { Mockito.when( userStoreConfig.getUserFieldConfig( UserFieldType.PREFIX ) ).thenReturn( createUserFieldConfig( UserFieldType.PREFIX, false ) ); final UserFields userFields = new UserFields(); userFields.setPrefix( " prefix " ); Assert.assertEquals( "prefix", displayNameResolver.resolveDisplayName( null, null, userFields ) ); } @Test public void testOnlyFirstName() { Mockito.when( userStoreConfig.getUserFieldConfig( UserFieldType.FIRST_NAME ) ).thenReturn( createUserFieldConfig( UserFieldType.FIRST_NAME, false ) ); final UserFields userFields = new UserFields(); userFields.setFirstName( " first name " ); Assert.assertEquals( "first name", displayNameResolver.resolveDisplayName( null, null, userFields ) ); } @Test public void testOnlyMiddleName() { Mockito.when( userStoreConfig.getUserFieldConfig( UserFieldType.MIDDLE_NAME ) ).thenReturn( createUserFieldConfig( UserFieldType.MIDDLE_NAME, false ) ); final UserFields userFields = new UserFields(); userFields.setMiddleName( " middle name " ); Assert.assertEquals( "middle name", displayNameResolver.resolveDisplayName( null, null, userFields ) ); } @Test public void testOnlyLastName() { Mockito.when( userStoreConfig.getUserFieldConfig( UserFieldType.LAST_NAME ) ).thenReturn( createUserFieldConfig( UserFieldType.LAST_NAME, false ) ); final UserFields userFields = new UserFields(); userFields.setLastName( " last name " ); Assert.assertEquals( "last name", displayNameResolver.resolveDisplayName( null, null, userFields ) ); } @Test public void testOnlySuffix() { Mockito.when( userStoreConfig.getUserFieldConfig( UserFieldType.SUFFIX ) ).thenReturn( createUserFieldConfig( UserFieldType.SUFFIX, false ) ); final UserFields userFields = new UserFields(); userFields.setSuffix( " suffix " ); Assert.assertEquals( "suffix", displayNameResolver.resolveDisplayName( null, null, userFields ) ); } @Test public void testOnlyNickName() { Mockito.when( userStoreConfig.getUserFieldConfig( UserFieldType.NICK_NAME ) ).thenReturn( createUserFieldConfig( UserFieldType.NICK_NAME, false ) ); final UserFields userFields = new UserFields(); userFields.setNickName( " nick name " ); Assert.assertEquals( "nick name", displayNameResolver.resolveDisplayName( null, null, userFields ) ); } @Test public void testOnlyInitials() { Mockito.when( userStoreConfig.getUserFieldConfig( UserFieldType.INITIALS ) ).thenReturn( createUserFieldConfig( UserFieldType.INITIALS, false ) ); final UserFields userFields = new UserFields(); userFields.setInitials( " i n i t i a l s " ); Assert.assertEquals( "i n i t i a l s", displayNameResolver.resolveDisplayName( null, null, userFields ) ); } @Test public void testOnlyUid() { Assert.assertEquals( "uid", displayNameResolver.resolveDisplayName( " uid ", null, null ) ); } @Test public void testEmail() { Assert.assertEquals( "hza@enonic.com", displayNameResolver.resolveDisplayName( "hza@enonic.com", null, null ) ); } @Test public void testAllWithoutDisplayName() { Mockito.when( userStoreConfig.getUserFieldConfig( UserFieldType.PREFIX ) ).thenReturn( createUserFieldConfig( UserFieldType.PREFIX, false ) ); Mockito.when( userStoreConfig.getUserFieldConfig( UserFieldType.FIRST_NAME ) ).thenReturn( createUserFieldConfig( UserFieldType.FIRST_NAME, false ) ); Mockito.when( userStoreConfig.getUserFieldConfig( UserFieldType.MIDDLE_NAME ) ).thenReturn( createUserFieldConfig( UserFieldType.MIDDLE_NAME, false ) ); Mockito.when( userStoreConfig.getUserFieldConfig( UserFieldType.LAST_NAME ) ).thenReturn( createUserFieldConfig( UserFieldType.LAST_NAME, false ) ); Mockito.when( userStoreConfig.getUserFieldConfig( UserFieldType.SUFFIX ) ).thenReturn( createUserFieldConfig( UserFieldType.SUFFIX, false ) ); Mockito.when( userStoreConfig.getUserFieldConfig( UserFieldType.NICK_NAME ) ).thenReturn( createUserFieldConfig( UserFieldType.NICK_NAME, false ) ); Mockito.when( userStoreConfig.getUserFieldConfig( UserFieldType.INITIALS ) ).thenReturn( createUserFieldConfig( UserFieldType.INITIALS, false ) ); final UserFields userFields = new UserFields(); userFields.setPrefix( " prefix " ); userFields.setFirstName( " first " ); userFields.setMiddleName( " middle " ); userFields.setLastName( " last " ); userFields.setSuffix( " suffix " ); userFields.setNickName( " the dude " ); userFields.setInitials( " f m l " ); Assert.assertEquals( "prefix first middle last suffix", displayNameResolver.resolveDisplayName( null, null, userFields ) ); } @Test public void testFirstNameAndLastNameWithoutDisplayName() { Mockito.when( userStoreConfig.getUserFieldConfig( UserFieldType.FIRST_NAME ) ).thenReturn( createUserFieldConfig( UserFieldType.FIRST_NAME, false ) ); Mockito.when( userStoreConfig.getUserFieldConfig( UserFieldType.LAST_NAME ) ).thenReturn( createUserFieldConfig( UserFieldType.LAST_NAME, false ) ); final UserFields userFields = new UserFields(); userFields.setFirstName( " first " ); userFields.setLastName( " last " ); Assert.assertEquals( "first last", displayNameResolver.resolveDisplayName( null, null, userFields ) ); } @Test public void testUserFieldNotConfiguredNotUsedInResolving() { // setup: only first name is configured, not last name Mockito.when( userStoreConfig.getUserFieldConfig( UserFieldType.FIRST_NAME ) ).thenReturn( createUserFieldConfig( UserFieldType.FIRST_NAME, true ) ); // setup: be sure to give last name a value final UserFields userFields = new UserFields(); userFields.setFirstName( "Arn" ); userFields.setLastName( "Skriubakken" ); // exercise and verify that last name is not used in resolving Assert.assertEquals( "Arn", displayNameResolver.resolveDisplayName( null, null, userFields ) ); } private UserStoreConfigField createUserFieldConfig( UserFieldType type, boolean readOnly ) { UserStoreConfigField config = new UserStoreConfigField( type ); config.setReadOnly( readOnly ); return config; } }