/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.security.user;
import org.junit.Test;
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 RequiredUserFieldsValidatorTest
{
@Test(expected = MissingRequiredUserFieldException.class)
public void validateAllRequiredFieldsArePresentAndNotEmpty_given_field_that_is_not_required_then_exception_is_thrown()
{
UserStoreConfig userStoreConfig = new UserStoreConfig();
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.FIRST_NAME, "required" ) );
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.LAST_NAME, "" ) );
RequiredUserFieldsValidator validator = new RequiredUserFieldsValidator( userStoreConfig );
UserFields userFields = new UserFields( false );
userFields.add( new UserField( UserFieldType.LAST_NAME, "Last name" ) );
validator.validateAllRequiredFieldsArePresentAndNotEmpty( userFields );
}
@Test(expected = MissingRequiredUserFieldException.class)
public void validateAllRequiredFieldsArePresentAndNotEmpty_given_no_fields_when_one_is_required_then_exception_is_thrown()
{
UserStoreConfig userStoreConfig = new UserStoreConfig();
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.FIRST_NAME, "required" ) );
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.LAST_NAME, "" ) );
RequiredUserFieldsValidator validator = new RequiredUserFieldsValidator( userStoreConfig );
UserFields userFields = new UserFields( false );
validator.validateAllRequiredFieldsArePresentAndNotEmpty( userFields );
}
@Test(expected = MissingRequiredUserFieldException.class)
public void validateAllRequiredFieldsArePresentAndNotEmpty_given_field_with_empty_value_when_it_is_required_then_exception_is_thrown()
{
UserStoreConfig userStoreConfig = new UserStoreConfig();
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.FIRST_NAME, "required" ) );
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.LAST_NAME, "" ) );
RequiredUserFieldsValidator validator = new RequiredUserFieldsValidator( userStoreConfig );
UserFields userFields = new UserFields( false );
validator.validateAllRequiredFieldsArePresentAndNotEmpty( userFields );
}
@Test(expected = MissingRequiredUserFieldException.class)
public void validateAllRequiredFieldsArePresentAndNotEmpty_given_photo_with_zero_bytes_when_it_is_required_then_exception_is_thrown()
{
UserStoreConfig userStoreConfig = new UserStoreConfig();
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.PHOTO, "required" ) );
RequiredUserFieldsValidator validator = new RequiredUserFieldsValidator( userStoreConfig );
UserFields userFields = new UserFields( false );
userFields.add( new UserField( UserFieldType.PHOTO, new byte[]{} ) );
validator.validateAllRequiredFieldsArePresentAndNotEmpty( userFields );
}
@Test()
public void validateAllRequiredFieldsArePresentAndNotEmpty_given_field_that_is_required_then_exception_is_not_thrown()
{
UserStoreConfig userStoreConfig = new UserStoreConfig();
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.FIRST_NAME, "required" ) );
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.LAST_NAME, "" ) );
RequiredUserFieldsValidator validator = new RequiredUserFieldsValidator( userStoreConfig );
UserFields userFields = new UserFields( false );
userFields.add( new UserField( UserFieldType.FIRST_NAME, "First name" ) );
validator.validateAllRequiredFieldsArePresentAndNotEmpty( userFields );
}
@Test()
public void validateAllRequiredFieldsArePresentAndNotEmpty_given_no_fields_when_none_is_required_then_exception_is_not_thrown()
{
UserStoreConfig userStoreConfig = new UserStoreConfig();
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.FIRST_NAME, "" ) );
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.LAST_NAME, "" ) );
RequiredUserFieldsValidator validator = new RequiredUserFieldsValidator( userStoreConfig );
UserFields userFields = new UserFields( false );
validator.validateAllRequiredFieldsArePresentAndNotEmpty( userFields );
}
@Test(expected = MissingRequiredUserFieldException.class)
public void validatePresentFieldsAreNotBlankIfRequired_given_field_with_blank_value_that_is_required_then_exception_is_thrown()
{
UserStoreConfig userStoreConfig = new UserStoreConfig();
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.FIRST_NAME, "required" ) );
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.LAST_NAME, "" ) );
RequiredUserFieldsValidator validator = new RequiredUserFieldsValidator( userStoreConfig );
UserFields userFields = new UserFields( false );
userFields.add( new UserField( UserFieldType.FIRST_NAME, "" ) );
userFields.add( new UserField( UserFieldType.LAST_NAME, "Last name" ) );
validator.validatePresentFieldsAreNotBlankIfRequired( userFields );
}
@Test(expected = MissingRequiredUserFieldException.class)
public void validatePresentFieldsAreNotBlankIfRequired_given_photo_zero_bytes_that_is_required_then_exception_is_thrown()
{
UserStoreConfig userStoreConfig = new UserStoreConfig();
userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.PHOTO, "required" ) );
RequiredUserFieldsValidator validator = new RequiredUserFieldsValidator( userStoreConfig );
UserFields userFields = new UserFields( false );
userFields.add( new UserField( UserFieldType.PHOTO, new byte[]{} ) );
validator.validatePresentFieldsAreNotBlankIfRequired( 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;
}
}