/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.security.user;
import org.joda.time.DateMidnight;
import org.junit.Test;
import com.enonic.cms.api.client.model.user.Address;
import com.enonic.cms.api.client.model.user.Gender;
import com.enonic.cms.api.plugin.ext.userstore.UserStoreConfig;
import com.enonic.cms.api.plugin.ext.userstore.UserStoreConfigField;
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;
public class ReadOnlyUserFieldValidatorTest
{
@Test(expected = ReadOnlyUserFieldPolicyException.class)
public void validate_given_field_photo_when_photo_is_readOnly_then_exception_is_thrown()
{
UserStoreConfig userStoreConfig = new UserStoreConfig();
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.PHOTO, "read-only" ) );
ReadOnlyUserFieldValidator validator = new ReadOnlyUserFieldValidator( userStoreConfig );
UserFields userFields = new UserFields( false );
userFields.add( new UserField( UserFieldType.PHOTO, new byte[]{} ) );
validator.validate( userFields );
}
@Test(expected = ReadOnlyUserFieldPolicyException.class)
public void validate_given_field_when_field_is_readOnly_then_exception_is_thrown()
{
UserStoreConfig userStoreConfig = new UserStoreConfig();
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.ORGANIZATION, "read-only" ) );
ReadOnlyUserFieldValidator validator = new ReadOnlyUserFieldValidator( userStoreConfig );
UserFields userFields = new UserFields( false );
userFields.add( new UserField( UserFieldType.ORGANIZATION, "My organization" ) );
validator.validate( userFields );
}
@Test(expected = ReadOnlyUserFieldPolicyException.class)
public void validate_given_birhtday_when_field_is_readOnly_then_exception_is_thrown()
{
UserStoreConfig userStoreConfig = new UserStoreConfig();
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.BIRTHDAY, "read-only" ) );
ReadOnlyUserFieldValidator validator = new ReadOnlyUserFieldValidator( userStoreConfig );
UserFields userFields = new UserFields( false );
userFields.add( new UserField( UserFieldType.BIRTHDAY, new DateMidnight( 1976, 4, 19 ).toDate() ) );
validator.validate( userFields );
}
@Test(expected = ReadOnlyUserFieldPolicyException.class)
public void validate_given_gender_when_field_is_readOnly_then_exception_is_thrown()
{
UserStoreConfig userStoreConfig = new UserStoreConfig();
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.GENDER, "read-only" ) );
ReadOnlyUserFieldValidator validator = new ReadOnlyUserFieldValidator( userStoreConfig );
UserFields userFields = new UserFields( false );
userFields.add( new UserField( UserFieldType.GENDER, Gender.FEMALE ) );
validator.validate( userFields );
}
@Test(expected = ReadOnlyUserFieldPolicyException.class)
public void validate_given_address_when_field_is_readOnly_then_exception_is_thrown()
{
UserStoreConfig userStoreConfig = new UserStoreConfig();
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.ADDRESS, "read-only" ) );
ReadOnlyUserFieldValidator validator = new ReadOnlyUserFieldValidator( userStoreConfig );
UserFields userFields = new UserFields( false );
userFields.add( new UserField( UserFieldType.ADDRESS, new Address() ) );
validator.validate( userFields );
}
@Test
public void validate_given_field_when_field_is_not_readOnly_then_exception_is_not_thrown()
{
UserStoreConfig userStoreConfig = new UserStoreConfig();
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.ORGANIZATION, "" ) );
ReadOnlyUserFieldValidator validator = new ReadOnlyUserFieldValidator( userStoreConfig );
UserFields userFields = new UserFields( false );
userFields.add( new UserField( UserFieldType.ORGANIZATION, "My organization" ) );
validator.validate( userFields );
}
@Test
public void validate_given_birhtday_when_field_is_not_readOnly_then_exception_is_not_thrown()
{
UserStoreConfig userStoreConfig = new UserStoreConfig();
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.BIRTHDAY, "" ) );
ReadOnlyUserFieldValidator validator = new ReadOnlyUserFieldValidator( userStoreConfig );
UserFields userFields = new UserFields( false );
userFields.add( new UserField( UserFieldType.BIRTHDAY, new DateMidnight( 1976, 4, 19 ).toDate() ) );
validator.validate( userFields );
}
@Test
public void validate_given_gender_when_field_is_not_readOnly_then_exception_is_not_thrown()
{
UserStoreConfig userStoreConfig = new UserStoreConfig();
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.GENDER, "" ) );
ReadOnlyUserFieldValidator validator = new ReadOnlyUserFieldValidator( userStoreConfig );
UserFields userFields = new UserFields( false );
userFields.add( new UserField( UserFieldType.GENDER, Gender.FEMALE ) );
validator.validate( userFields );
}
@Test
public void validate_given_address_when_field_is_not_readOnly_then_exception_is_not_thrown()
{
UserStoreConfig userStoreConfig = new UserStoreConfig();
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.ADDRESS, "" ) );
ReadOnlyUserFieldValidator validator = new ReadOnlyUserFieldValidator( userStoreConfig );
UserFields userFields = new UserFields( false );
userFields.add( new UserField( UserFieldType.ADDRESS, new Address() ) );
validator.validate( userFields );
}
private UserStoreConfigField createUserStoreUserFieldConfig( UserFieldType type, String properties )
{
UserStoreConfigField config = new UserStoreConfigField( type );
config.setRemote( properties.contains( "remote" ) );
config.setRequired( properties.contains( "required" ) );
config.setReadOnly( properties.contains( "read-only" ) );
return config;
}
}