info.magnolia.cms.filters.MultipartRequestWrapperTest.java Source code

Java tutorial

Introduction

Here is the source code for info.magnolia.cms.filters.MultipartRequestWrapperTest.java

Source

/**
 * This file Copyright (c) 2010-2012 Magnolia International
 * Ltd.  (http://www.magnolia-cms.com). All rights reserved.
 *
 *
 * This file is dual-licensed under both the Magnolia
 * Network Agreement and the GNU General Public License.
 * You may elect to use one or the other of these licenses.
 *
 * This file is distributed in the hope that it will be
 * useful, but AS-IS and WITHOUT ANY WARRANTY; without even the
 * implied warranty of MERCHANTABILITY or FITNESS FOR A
 * PARTICULAR PURPOSE, TITLE, or NONINFRINGEMENT.
 * Redistribution, except as permitted by whichever of the GPL
 * or MNA you select, is prohibited.
 *
 * 1. For the GPL license (GPL), you can redistribute and/or
 * modify this file under the terms of the GNU General
 * Public License, Version 3, as published by the Free Software
 * Foundation.  You should have received a copy of the GNU
 * General Public License, Version 3 along with this program;
 * if not, write to the Free Software Foundation, Inc., 51
 * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * 2. For the Magnolia Network Agreement (MNA), this file
 * and the accompanying materials are made available under the
 * terms of the MNA which accompanies this distribution, and
 * is available at http://www.magnolia-cms.com/mna.html
 *
 * Any modifications to this file must keep this entire header
 * intact.
 *
 */
package info.magnolia.cms.filters;

import static org.junit.Assert.*;

import java.util.Enumeration;

import org.apache.commons.lang.ArrayUtils;
import org.junit.Test;

import com.mockrunner.mock.web.MockHttpServletRequest;
import info.magnolia.cms.beans.runtime.MultipartForm;
import info.magnolia.test.MgnlTestCase;

public class MultipartRequestWrapperTest extends MgnlTestCase {

    @Test
    public void testWillNotHideNewParametersAfterDoingForward() {

        MultipartForm form = new MultipartForm();
        addParameter(form, "key1", "value1");
        addParameter(form, "key2", "value2");
        addParameter(form, "key3", "value3-1");
        addParameter(form, "key3", "value3-2");

        MockHttpServletRequest mock = new MockHttpServletRequest();
        MultipartRequestWrapper request = new MultipartRequestWrapper(mock, form);

        assertEquals("value1", request.getParameter("key1"));
        assertEquals("value2", request.getParameter("key2"));
        assertNotNull(request.getParameter("key3"));
        assertEquals(3, request.getParameterMap().size());
        assertEquals("value2", ((String[]) request.getParameterMap().get("key2"))[0]);
        assertEquals(1, request.getParameterValues("key1").length);
        assertEquals(2, request.getParameterValues("key3").length);
        assertEquals(3, sizeOfEnumeration(request.getParameterNames()));
        assertNull(request.getParameter("key4"));
        assertNull(request.getParameterValues("key4"));

        mock.setupAddParameter("key4", "value4");

        assertEquals("value4", request.getParameter("key4"));
        assertEquals(4, request.getParameterMap().size());
        assertEquals("value4", ((String[]) request.getParameterMap().get("key4"))[0]);
        assertEquals(1, request.getParameterValues("key4").length);
        assertEquals(4, sizeOfEnumeration(request.getParameterNames()));
    }

    private int sizeOfEnumeration(Enumeration<?> e) {
        int n = 0;
        while (e.hasMoreElements()) {
            e.nextElement();
            n++;
        }
        return n;
    }

    private void addParameter(MultipartForm form, String name, String value) {
        form.addParameter(name, value);

        String[] values = form.getParameterValues(name);
        if (values == null) {
            form.addparameterValues(name, new String[] { value });
        } else {
            form.addparameterValues(name, (String[]) ArrayUtils.add(values, value));
        }
    }
}