001package de.cuioss.test.jsf.defaults;
002
003import static de.cuioss.tools.collect.CollectionLiterals.immutableSet;
004
005import java.util.Collection;
006import java.util.Locale;
007
008import de.cuioss.test.jsf.config.ApplicationConfigurator;
009import de.cuioss.test.jsf.config.RequestConfigurator;
010import de.cuioss.test.jsf.config.decorator.ApplicationConfigDecorator;
011import de.cuioss.test.jsf.config.decorator.RequestConfigDecorator;
012
013/**
014 * Provides some default configuration for the tests. The defaults are:
015 * <ul>
016 * <li>Setting the supported locales to {@link Locale#ENGLISH} and
017 * {@link Locale#GERMANY}</li>
018 * <li>Setting the default locale to {@link Locale#ENGLISH}</li>
019 * <li>Setting the user-agent to {@value #FIREFOX}</li>
020 * </ul>
021 *
022 * @author Oliver Wolff
023 */
024public class BasicApplicationConfiguration implements ApplicationConfigurator, RequestConfigurator {
025
026    /** Firefox user-agent */
027    public static final String FIREFOX = "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0";
028
029    /** User-agent identifier. */
030    public static final String USER_AGENT = "user-agent";
031
032    /** The supported {@link Locale}s */
033    @SuppressWarnings("java:S2386") // owolff: false positive -> immutableSet
034    public static final Collection<Locale> SUPPORTED_LOCALES = immutableSet(Locale.ENGLISH, Locale.GERMANY,
035            Locale.FRENCH);
036
037    /** The default {@link Locale} */
038    public static final Locale DEFAULT_LOCALE = Locale.ENGLISH;
039
040    @Override
041    public void configureApplication(final ApplicationConfigDecorator config) {
042        config.registerSupportedLocales(SUPPORTED_LOCALES).registerDefaultLocale(DEFAULT_LOCALE).setContextPath(""); // default
043                                                                                                                     // context
044                                                                                                                     // path
045        // for myfaces test is
046        // 'null'
047    }
048
049    @Override
050    public void configureRequest(final RequestConfigDecorator decorator) {
051        decorator.setRequestHeader(USER_AGENT, FIREFOX)
052                .setRequestLocale(SUPPORTED_LOCALES.toArray(new Locale[SUPPORTED_LOCALES.size()]));
053    }
054}