com.alibaba.citrus.service.requestcontext.rundata.RunDataTests.java Source code

Java tutorial

Introduction

Here is the source code for com.alibaba.citrus.service.requestcontext.rundata.RunDataTests.java

Source

/*
 * Copyright (c) 2002-2012 Alibaba Group Holding Limited.
 * All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.alibaba.citrus.service.requestcontext.rundata;

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

import java.io.File;

import com.alibaba.citrus.service.requestcontext.AbstractRequestContextsTests;
import com.meterware.httpunit.HttpUnitUtils;
import org.apache.commons.fileupload.FileItem;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

/** <code>RunData</code> */
public class RunDataTests extends AbstractRequestContextsTests<RunData> {
    @BeforeClass
    public static void initFactory() {
        createBeanFactory("services-rundata.xml");
    }

    @Override
    protected String getDefaultBeanName() {
        return "rundata";
    }

    @Before
    public void init() throws Exception {
        invokeReadFileServlet("form.html");
        initRequestContext();
    }

    @Test
    public void missingRequestContext() throws Exception {
        invokeNoopServlet("/servlet/test.htm");
        initRequestContext("rundata_missing_other_request_contexts");

        try {
            requestContext.isBuffering();
            fail();
        } catch (IllegalArgumentException e) {
            assertThat(e, exception("Could not find BufferedRequestContext in request context chain"));
        }

        try {
            requestContext.getRedirectLocation();
            fail();
        } catch (IllegalArgumentException e) {
            assertThat(e, exception("Could not find LazyCommitRequestContext in request context chain"));
        }

        try {
            requestContext.getContentType();
            fail();
        } catch (IllegalArgumentException e) {
            assertThat(e, exception("Could not find SetLocaleRequestContext in request context chain"));
        }

        try {
            requestContext.getParameters();
            fail();
        } catch (IllegalArgumentException e) {
            assertThat(e, exception("Could not find ParserRequestContext in request context chain"));
        }
    }

    @Test
    public void getRequestURL() throws Exception {
        // ?
        invokeNoopServlet("/servlet");
        initRequestContext();

        assertEquals("http://www.taobao.com/servlet", requestContext.getRequestURL());
        assertEquals("http://www.taobao.com/servlet", requestContext.getRequestURL(true));
        assertEquals("http://www.taobao.com/servlet", requestContext.getRequestURL(false));

        // ?
        invokeNoopServlet("/servlet?aaa=111");
        initRequestContext();

        assertEquals("http://www.taobao.com/servlet?aaa=111", requestContext.getRequestURL());
        assertEquals("http://www.taobao.com/servlet?aaa=111", requestContext.getRequestURL(true));
        assertEquals("http://www.taobao.com/servlet", requestContext.getRequestURL(false));
    }

    @Test
    public void urlEncodeForm() throws Exception {
        invokeReadFileServlet("form2.html");
        initRequestContext();

        assertEquals("hello", requestContext.getParameters().getString("myparam"));
        assertEquals("hello", requestContext.getParameters().getStrings("myparam")[0]);
        assertEquals("?", requestContext.getParameters().getStrings("myparam")[1]);
    }

    @Test
    public void multipartForm() throws Exception {
        assertEquals("hello", requestContext.getParameters().getString("myparam"));

        FileItem fileItem = requestContext.getParameters().getFileItem("myfile");

        assertEquals("myfile", fileItem.getFieldName());
        assertEquals(new File(srcdir, "smallfile.txt"), new File(fileItem.getName()));
        assertFalse(fileItem.isFormField());
        assertEquals(new String("?".getBytes("GBK"), "8859_1"), fileItem.getString());
        assertEquals("?", fileItem.getString("GBK"));
        assertTrue(fileItem.isInMemory());
    }

    @Test
    public void cookies() throws Exception {
        assertEquals("mycookievalue", requestContext.getCookies().getString("mycookie"));

        requestContext.getCookies().setCookie("hello", "baobao");

        commitToClient();

        assertEquals("baobao", clientResponse.getNewCookieValue("hello"));
    }

    @Test
    public void contentTypeAndCharset() throws Exception {
        requestContext.setCharacterEncoding(null);

        requestContext.setContentType("text/plain");
        assertEquals("text/plain", requestContext.getContentType());
        assertEquals(HttpUnitUtils.DEFAULT_CHARACTER_SET, requestContext.getCharacterEncoding());

        requestContext.setCharacterEncoding("GBK");
        assertEquals("text/plain; charset=GBK", requestContext.getContentType());
        assertEquals("GBK", requestContext.getCharacterEncoding());

        requestContext.setCharacterEncoding(null);
        assertEquals("text/plain", requestContext.getContentType());
    }

    @Test
    public void charsetAndContentType() throws Exception {
        requestContext.setCharacterEncoding(null);

        // content type?charset?servlet 2.4
        requestContext.setCharacterEncoding("GBK");
        assertEquals(null, requestContext.getContentType());
        assertEquals("GBK", requestContext.getCharacterEncoding());

        requestContext.setContentType("text/plain");
        assertEquals("text/plain; charset=GBK", requestContext.getContentType());
        assertEquals("GBK", requestContext.getCharacterEncoding());

        requestContext.setCharacterEncoding(null);
        assertEquals("text/plain", requestContext.getContentType());
    }

    @Test
    public void contentType() throws Exception {
        requestContext.setContentType("image/gif; charset=GBK", false);
        assertEquals("image/gif", requestContext.getContentType());
        assertEquals(HttpUnitUtils.DEFAULT_CHARACTER_SET, requestContext.getCharacterEncoding());

        requestContext.setCharacterEncoding("GBK");
        assertEquals("image/gif; charset=GBK", requestContext.getContentType());
        assertEquals("GBK", requestContext.getCharacterEncoding());

        requestContext.setContentType("image/gif; charset=GBK", false);
        assertEquals("image/gif", requestContext.getContentType());
    }

    @Test
    public void sendRedirect() throws Exception {
        assertNull(requestContext.getRedirectLocation());

        requestContext.setRedirectLocation("/aaa/bbb");
        assertEquals("/aaa/bbb", requestContext.getRedirectLocation());
    }

    @Test
    public void statusCode() throws Exception {
        assertEquals(0, requestContext.getStatusCode());

        requestContext.setStatusCode(302);
        assertEquals(302, requestContext.getStatusCode());
    }
}