Package com.alibaba.citrus.service.requestcontext

Source Code of com.alibaba.citrus.service.requestcontext.RequestContextSkipValidationTests

package com.alibaba.citrus.service.requestcontext;

import static com.alibaba.citrus.test.TestEnvStatic.*;
import static com.alibaba.citrus.test.TestUtil.*;
import static org.junit.Assert.*;

import java.io.File;
import java.util.Arrays;
import java.util.List;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import org.springframework.context.ApplicationContext;
import org.springframework.core.io.FileSystemResource;

import com.alibaba.citrus.logconfig.support.ConfigurableLogger.Level;
import com.alibaba.citrus.service.requestcontext.impl.RequestContextChainingServiceImpl;
import com.alibaba.citrus.service.requestcontext.locale.impl.SetLocaleRequestContextFactoryImpl;
import com.alibaba.citrus.service.requestcontext.parser.impl.ParserRequestContextFactoryImpl;
import com.alibaba.citrus.service.requestcontext.session.SessionConfig;
import com.alibaba.citrus.service.requestcontext.session.SessionConfig.StoresConfig;
import com.alibaba.citrus.service.requestcontext.session.encoder.SessionEncoder;
import com.alibaba.citrus.service.requestcontext.session.encoder.impl.SerializationEncoder;
import com.alibaba.citrus.service.requestcontext.session.encrypter.impl.AesEncrypter;
import com.alibaba.citrus.service.requestcontext.session.idgen.random.impl.RandomIDGenerator;
import com.alibaba.citrus.service.requestcontext.session.impl.SessionRequestContextFactoryImpl;
import com.alibaba.citrus.service.requestcontext.session.interceptor.SessionLifecycleLogger;
import com.alibaba.citrus.service.requestcontext.session.store.cookie.impl.CookieStoreImpl;
import com.alibaba.citrus.service.requestcontext.session.store.cookie.impl.SingleValuedCookieStoreImpl;
import com.alibaba.citrus.springext.support.context.XmlApplicationContext;

@RunWith(Parameterized.class)
public class RequestContextSkipValidationTests {
    private final boolean skipValidation;
    private ApplicationContext factory;
    private RequestContextChainingServiceImpl service;

    public RequestContextSkipValidationTests(boolean skipValidation) {
        this.skipValidation = skipValidation;
    }

    @Parameters
    public static List<Object[]> data() {
        return Arrays.asList(new Object[][] { { false }, { true } });
    }

    @Before
    public void init() {
        if (skipValidation) {
            System.setProperty("skipValidation", "true");
        }

        factory = new XmlApplicationContext(new FileSystemResource(new File(srcdir, "services-skip-validation.xml")));
    }

    @After
    public void dispose() {
        System.clearProperty("skipValidation");
    }

    @Test
    public void requestContexts() {
        service = (RequestContextChainingServiceImpl) factory.getBean("rc1");

        assertEquals(true, getFieldValue(service, "sort", null));
        assertEquals(false, getFieldValue(service, "threadContextInheritable", null));
    }

    @Test
    public void setLocale() {
        service = (RequestContextChainingServiceImpl) factory.getBean("rc2");
        SetLocaleRequestContextFactoryImpl f = getFactory(service, SetLocaleRequestContextFactoryImpl.class);

        assertEquals("_input_charset", getFieldValue(f, "inputCharsetParam", null));
        assertEquals("_output_charset", getFieldValue(f, "outputCharsetParam", null));
        assertEquals("en_US", getFieldValue(f, "defaultLocale", null).toString());
        assertEquals("UTF-8", getFieldValue(f, "defaultCharset", null));
        assertEquals("_lang", getFieldValue(f, "sessionKey", null));
        assertEquals("_lang", getFieldValue(f, "paramKey", null));
    }

    @Test
    public void parser() {
        service = (RequestContextChainingServiceImpl) factory.getBean("rc2");
        ParserRequestContextFactoryImpl f = getFactory(service, ParserRequestContextFactoryImpl.class);

        assertEquals(true, getFieldValue(f, "converterQuiet", null));
        assertEquals("lower_with_underscores", getFieldValue(f, "caseFolding", null));
        assertEquals(true, getFieldValue(f, "autoUpload", null));
        assertEquals(true, getFieldValue(f, "unescapeParameters", null));
        assertEquals(".~html", getFieldValue(f, "htmlFieldSuffix", null));
        assertEquals(false, getFieldValue(f, "useServletEngineParser", null));
        assertEquals(true, getFieldValue(f, "useBodyEncodingForURI", null));
        assertEquals("UTF-8", getFieldValue(f, "uriEncoding", null));
        assertEquals(true, getFieldValue(f, "trimming", null));
    }

    @Test
    public void session() {
        service = (RequestContextChainingServiceImpl) factory.getBean("rc2");
        SessionRequestContextFactoryImpl f = getFactory(service, SessionRequestContextFactoryImpl.class);
        SessionConfig config = f.getConfig();

        assertEquals("SESSION_MODEL", config.getModelKey());
        assertEquals(false, config.isKeepInTouch());

        assertEquals("JSESSIONID", config.getId().getCookie().getName());
        assertEquals("/", config.getId().getCookie().getPath());
        assertEquals(0, config.getId().getCookie().getMaxAge());
        assertEquals(true, config.getId().getCookie().isHttpOnly());
        assertEquals(false, config.getId().getCookie().isSecure());

        assertEquals("JSESSIONID", config.getId().getUrlEncode().getName());

        assertEquals(true, config.getId().isCookieEnabled());
        assertEquals(false, config.getId().isUrlEncodeEnabled());
    }

    @Test
    public void cookiestore() {
        service = (RequestContextChainingServiceImpl) factory.getBean("rc2");
        SessionRequestContextFactoryImpl f = getFactory(service, SessionRequestContextFactoryImpl.class);
        SessionConfig config = f.getConfig();

        StoresConfig stores = config.getStores();
        CookieStoreImpl cookieStore = (CookieStoreImpl) stores.getStore("s1");

        assertEquals("/", getFieldValue(cookieStore, "path", null));
        assertEquals(0, getFieldValue(cookieStore, "maxAge", null));
        assertEquals(true, getFieldValue(cookieStore, "httpOnly", null));
        assertEquals(false, getFieldValue(cookieStore, "secure", null));
        assertEquals(false, getFieldValue(cookieStore, "survivesInInvalidating", null));

        assertEquals(3896, getFieldValue(cookieStore, "maxLength", null));
        assertEquals(5, getFieldValue(cookieStore, "maxCount", null));
        assertEquals(false, getFieldValue(cookieStore, "checksum", null));
        assertEquals(false, getFieldValue(cookieStore, "survivesInInvalidating", null));
    }

    @Test
    public void singlevalued_cookiestore() {
        service = (RequestContextChainingServiceImpl) factory.getBean("rc2");
        SessionRequestContextFactoryImpl f = getFactory(service, SessionRequestContextFactoryImpl.class);
        SessionConfig config = f.getConfig();

        StoresConfig stores = config.getStores();
        SingleValuedCookieStoreImpl cookieStore = (SingleValuedCookieStoreImpl) stores.getStore("s2");

        assertEquals("/", getFieldValue(cookieStore, "path", null));
        assertEquals(0, getFieldValue(cookieStore, "maxAge", null));
        assertEquals(true, getFieldValue(cookieStore, "httpOnly", null));
        assertEquals(false, getFieldValue(cookieStore, "secure", null));
        assertEquals(false, getFieldValue(cookieStore, "survivesInInvalidating", null));
    }

    @Test
    public void aes_encrypter() {
        service = (RequestContextChainingServiceImpl) factory.getBean("rc2");
        SessionRequestContextFactoryImpl f = getFactory(service, SessionRequestContextFactoryImpl.class);
        SessionConfig config = f.getConfig();

        StoresConfig stores = config.getStores();
        CookieStoreImpl cookieStore = (CookieStoreImpl) stores.getStore("s1");
        SessionEncoder[] encoders = getFieldValue(cookieStore, "encoders", SessionEncoder[].class);
        SerializationEncoder sencoder = (SerializationEncoder) encoders[0];
        AesEncrypter aes = (AesEncrypter) sencoder.getEncrypter();

        assertEquals(128, aes.getKeySize());
        assertEquals(256, aes.getPoolSize());
    }

    @Test
    public void random_id() {
        service = (RequestContextChainingServiceImpl) factory.getBean("rc2");
        SessionRequestContextFactoryImpl f = getFactory(service, SessionRequestContextFactoryImpl.class);
        SessionConfig config = f.getConfig();
        RandomIDGenerator rid = (RandomIDGenerator) config.getId().getGenerator();

        assertEquals(16, rid.getLength());
    }

    @Test
    public void lifecycle_log() {
        service = (RequestContextChainingServiceImpl) factory.getBean("rc2");
        SessionRequestContextFactoryImpl f = getFactory(service, SessionRequestContextFactoryImpl.class);
        SessionConfig config = f.getConfig();
        SessionLifecycleLogger sll = (SessionLifecycleLogger) config.getSessionInterceptors()[0];

        assertEquals("debug", getFieldValue(sll, "logLevel", Level.class).toString());
        assertEquals("trace", getFieldValue(sll, "visitLogLevel", Level.class).toString());
    }

    private <F extends RequestContextFactory<?>> F getFactory(RequestContextChainingServiceImpl service, Class<F> type) {
        @SuppressWarnings("unchecked")
        List<RequestContextFactory<?>> factories = getFieldValue(service, "factories", List.class);

        for (RequestContextFactory<?> factory : factories) {
            if (type.isInstance(factory)) {
                return type.cast(factory);
            }
        }

        fail();
        return null;
    }
}
TOP

Related Classes of com.alibaba.citrus.service.requestcontext.RequestContextSkipValidationTests

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.