⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dispatcherportlettests.java

📁 struts+spring 源码 希望能给大家带来帮助
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/*
 * Copyright 2002-2006 the original author or authors.
 *
 * 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 org.springframework.web.portlet;

import java.util.Locale;
import java.util.Map;

import javax.portlet.PortletContext;
import javax.portlet.PortletException;
import javax.portlet.PortletMode;
import javax.portlet.PortletSecurityException;
import javax.portlet.PortletSession;
import javax.portlet.UnavailableException;

import junit.framework.TestCase;

import org.springframework.beans.TestBean;
import org.springframework.context.ApplicationContext;
import org.springframework.mock.web.portlet.MockActionRequest;
import org.springframework.mock.web.portlet.MockActionResponse;
import org.springframework.mock.web.portlet.MockPortletConfig;
import org.springframework.mock.web.portlet.MockPortletContext;
import org.springframework.mock.web.portlet.MockPortletSession;
import org.springframework.mock.web.portlet.MockRenderRequest;
import org.springframework.mock.web.portlet.MockRenderResponse;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.StaticWebApplicationContext;
import org.springframework.web.multipart.MaxUploadSizeExceededException;
import org.springframework.web.portlet.context.PortletApplicationContextUtils;
import org.springframework.web.portlet.handler.PortletSessionRequiredException;
import org.springframework.web.portlet.multipart.MultipartActionRequest;
import org.springframework.web.servlet.ViewRendererServlet;
import org.springframework.web.servlet.view.InternalResourceView;

/**
 * @author Mark Fisher
 * @author Juergen Hoeller
 */
public class DispatcherPortletTests extends TestCase {

	private MockPortletConfig simplePortletConfig;

	private MockPortletConfig complexPortletConfig;

	private DispatcherPortlet simpleDispatcherPortlet;

	private DispatcherPortlet complexDispatcherPortlet;


	protected void setUp() throws PortletException {
		simplePortletConfig = new MockPortletConfig(new MockPortletContext(), "simple");
		complexPortletConfig = new MockPortletConfig(simplePortletConfig.getPortletContext(), "complex");
		complexPortletConfig.addInitParameter("publishContext", "false");

		simpleDispatcherPortlet = new DispatcherPortlet();
		simpleDispatcherPortlet.setContextClass(SimplePortletApplicationContext.class);
		simpleDispatcherPortlet.init(simplePortletConfig);

		complexDispatcherPortlet = new DispatcherPortlet();
		complexDispatcherPortlet.setContextClass(ComplexPortletApplicationContext.class);
		complexDispatcherPortlet.setNamespace("test");
		complexDispatcherPortlet.addRequiredProperty("publishContext");
		complexDispatcherPortlet.init(complexPortletConfig);
	}

	private PortletContext getPortletContext() {
		return complexPortletConfig.getPortletContext();
	}


	public void testDispatcherPortletGetPortletNameDoesNotFailWithoutConfig() {
		DispatcherPortlet dp = new DispatcherPortlet();
		assertEquals(null, dp.getPortletConfig());
		assertEquals(null, dp.getPortletName());
		assertEquals(null, dp.getPortletContext());
	}

	public void testDispatcherPortlets() {
		assertTrue("Correct namespace",
				("simple" + FrameworkPortlet.DEFAULT_NAMESPACE_SUFFIX).equals(simpleDispatcherPortlet.getNamespace()));
		assertTrue("Correct attribute",
				(FrameworkPortlet.PORTLET_CONTEXT_PREFIX + "simple").equals(simpleDispatcherPortlet.getPortletContextAttributeName()));
		assertTrue("Context published",
				simpleDispatcherPortlet.getPortletApplicationContext() ==
				getPortletContext().getAttribute(FrameworkPortlet.PORTLET_CONTEXT_PREFIX + "simple"));

		assertTrue("Correct namespace", "test".equals(complexDispatcherPortlet.getNamespace()));
		assertTrue("Correct attribute",
				(FrameworkPortlet.PORTLET_CONTEXT_PREFIX + "complex").equals(complexDispatcherPortlet.getPortletContextAttributeName()));
		assertTrue("Context not published",
				getPortletContext().getAttribute(FrameworkPortlet.PORTLET_CONTEXT_PREFIX + "complex") == null);
	}

	public void testSimpleValidActionRequest() throws Exception {
		MockActionRequest request = new MockActionRequest();
		MockActionResponse response = new MockActionResponse();
		request.setParameter("action", "form");
		request.setParameter("age", "29");
		simpleDispatcherPortlet.processAction(request, response);
		String exceptionParam = response.getRenderParameter(DispatcherPortlet.ACTION_EXCEPTION_RENDER_PARAMETER);
		assertNull(exceptionParam);
		SimplePortletApplicationContext ac = (SimplePortletApplicationContext)simpleDispatcherPortlet.getPortletApplicationContext();
		String commandAttribute = ac.getRenderCommandSessionAttributeName();
		TestBean testBean = (TestBean) request.getPortletSession().getAttribute(commandAttribute);
		assertEquals(39, testBean.getAge());
	}

	public void testSimpleInvalidActionRequest() throws Exception {
		MockActionRequest request = new MockActionRequest();
		MockActionResponse response = new MockActionResponse();
		request.setParameter("action", "invalid");
		simpleDispatcherPortlet.processAction(request, response);
		String exceptionParam = response.getRenderParameter(DispatcherPortlet.ACTION_EXCEPTION_RENDER_PARAMETER);
		assertNotNull(exceptionParam);
		assertTrue(exceptionParam.startsWith(UnavailableException.class.getName()));
	}

	public void testSimpleFormViewNoBindOnNewForm() throws Exception {
		MockRenderRequest request = new MockRenderRequest();
		MockRenderResponse response = new MockRenderResponse();
		request.setParameter("action", "form");
		request.setParameter("age", "29");
		simpleDispatcherPortlet.doDispatch(request, response);
		assertEquals("5", response.getContentAsString());
	}

	public void testSimpleFormViewBindOnNewForm() throws Exception {
		MockRenderRequest request = new MockRenderRequest();
		MockRenderResponse response = new MockRenderResponse();
		request.setParameter("action", "form-bind");
		request.setParameter("age", "29");
		simpleDispatcherPortlet.doDispatch(request, response);
		assertEquals("34", response.getContentAsString());
	}

	public void testSimpleFormViewWithSessionAndBindOnNewForm() throws Exception {
		MockRenderRequest renderRequest = new MockRenderRequest();
		MockRenderResponse renderResponse = new MockRenderResponse();
		renderRequest.setParameter("action", "form-session-bind");
		renderRequest.setParameter("age", "30");
		TestBean testBean = new TestBean();
		testBean.setAge(40);
		SimplePortletApplicationContext ac =
			(SimplePortletApplicationContext)simpleDispatcherPortlet.getPortletApplicationContext();
		String formAttribute = ac.getFormSessionAttributeName();
		PortletSession session = new MockPortletSession();
		session.setAttribute(formAttribute, testBean);
		renderRequest.setSession(session);
		simpleDispatcherPortlet.doDispatch(renderRequest, renderResponse);
		assertEquals("35", renderResponse.getContentAsString());
	}

	public void testSimpleFormViewWithSessionNoBindOnNewForm() throws Exception {
		MockActionRequest actionRequest = new MockActionRequest();
		MockActionResponse actionResponse = new MockActionResponse();
		actionRequest.setSession(new MockPortletSession());
		actionRequest.setParameter("action", "form-session-nobind");
		actionRequest.setParameter("age", "27");
		simpleDispatcherPortlet.processAction(actionRequest, actionResponse);
		Map renderParameters = actionResponse.getRenderParameterMap();

		MockRenderRequest renderRequest = new MockRenderRequest();
		MockRenderResponse renderResponse = new MockRenderResponse();
		renderRequest.setParameters(renderParameters);
		renderRequest.setParameter("action", "form-session-nobind");
		renderRequest.setParameter("age", "30");
		renderRequest.setSession(actionRequest.getPortletSession());
		simpleDispatcherPortlet.doDispatch(renderRequest, renderResponse);
		assertEquals("42", renderResponse.getContentAsString());
	}

	public void testSimpleRequiredSessionFormWithoutSession() throws Exception {
		MockRenderRequest request = new MockRenderRequest();
		MockRenderResponse response = new MockRenderResponse();
		request.setParameter("action", "form-session-bind");
		try {
			simpleDispatcherPortlet.doDispatch(request, response);
			fail("Should have thrown PortletSessionRequiredException");
		}
		catch (PortletSessionRequiredException ex) {
			// expected
		}
	}

	public void testSimpleFormSubmission() throws Exception {
		MockActionRequest actionRequest = new MockActionRequest();
		MockActionResponse actionResponse = new MockActionResponse();
		MockRenderRequest renderRequest = new MockRenderRequest();
		MockRenderResponse renderResponse = new MockRenderResponse();
		actionRequest.setParameter("action", "form");
		actionRequest.setParameter("age", "29");
		simpleDispatcherPortlet.processAction(actionRequest, actionResponse);
		renderRequest.setSession(actionRequest.getPortletSession());
		renderRequest.setParameters(actionResponse.getRenderParameterMap());
		renderRequest.setParameter("action", "form");
		simpleDispatcherPortlet.doDispatch(renderRequest, renderResponse);
		assertEquals("44", renderResponse.getContentAsString());
	}

	public void testSimpleInvalidRenderRequest() throws Exception {
		MockRenderRequest request = new MockRenderRequest();
		MockRenderResponse response = new MockRenderResponse();
		request.setParameter("action", "invalid");
		try {
			simpleDispatcherPortlet.doDispatch(request, response);
			fail("Should have thrown UnavailableException");
		}
		catch (UnavailableException ex) {
			// expected
		}
	}

	public void testPortletModeParameterMappingHelp1() throws Exception {
		MockActionRequest request = new MockActionRequest();
		MockActionResponse response = new MockActionResponse();
		request.setPortletMode(PortletMode.HELP);
		request.setParameter("action", "help1");
		complexDispatcherPortlet.processAction(request, response);
		String param = response.getRenderParameter("param");
		assertEquals("help1 was here", param);
	}

	public void testPortletModeParameterMappingHelp2() throws Exception {
		MockActionRequest request = new MockActionRequest();
		MockActionResponse response = new MockActionResponse();
		request.setPortletMode(PortletMode.HELP);
		request.setParameter("action", "help2");
		complexDispatcherPortlet.processAction(request, response);
		String param = response.getRenderParameter("param");
		assertEquals("help2 was here", param);
	}

	public void testPortletModeParameterMappingInvalidHelpActionRequest() throws Exception {
		MockActionRequest request = new MockActionRequest();
		MockActionResponse response = new MockActionResponse();
		request.setPortletMode(PortletMode.HELP);
		request.setParameter("action", "help3");
		complexDispatcherPortlet.processAction(request, response);
		String exceptionParam = response.getRenderParameter(DispatcherPortlet.ACTION_EXCEPTION_RENDER_PARAMETER);
		assertNotNull(exceptionParam);
		assertTrue(exceptionParam.startsWith(UnavailableException.class.getName()));
	}

	public void testPortletModeParameterMappingInvalidHelpRenderRequest() throws Exception {
		MockRenderRequest request = new MockRenderRequest();
		MockRenderResponse response = new MockRenderResponse();
		request.setPortletMode(PortletMode.HELP);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -