|
Struts example source code file (PortletUrlTagTest.java)
The Struts PortletUrlTagTest.java source code/* * $Id: PortletUrlTagTest.java 724183 2008-12-07 19:48:56Z nilsga $ * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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.apache.struts2.views.jsp; import java.util.HashMap; import java.util.Map; import javax.portlet.PortletContext; import javax.portlet.PortletMode; import javax.portlet.PortletModeException; import javax.portlet.PortletRequest; import javax.portlet.PortletURL; import javax.portlet.WindowState; import javax.portlet.WindowStateException; import org.apache.struts2.ServletActionContext; import org.apache.struts2.StrutsStatics; import org.apache.struts2.StrutsTestCase; import org.apache.struts2.portlet.PortletActionConstants; import org.apache.struts2.portlet.servlet.PortletServletRequest; import org.apache.struts2.portlet.util.PortletUrlHelper; import org.springframework.mock.web.portlet.MockPortalContext; import org.springframework.mock.web.portlet.MockPortletContext; import org.springframework.mock.web.portlet.MockPortletURL; import org.springframework.mock.web.portlet.MockRenderRequest; import org.springframework.mock.web.portlet.MockRenderResponse; import com.mockobjects.servlet.MockJspWriter; import com.mockobjects.servlet.MockPageContext; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.mock.MockActionInvocation; import com.opensymphony.xwork2.mock.MockActionProxy; import com.opensymphony.xwork2.util.ValueStack; /** */ @SuppressWarnings("unchecked") public class PortletUrlTagTest extends StrutsTestCase { private URLTag tag = new URLTag(); private ValueStack stack = null; private ActionContext context = null; private MockRenderRequest renderRequest; private MockPortletUrl renderUrl; private MockPortletUrl actionUrl; private MockRenderResponse renderResponse; private MockPageContext pageContext; private MockActionInvocation actionInvocation; private MockActionProxy actionProxy; private MockJspWriter jspWriter; private MockPortletContext portletContext; public void setUp() throws Exception { super.setUp(); context = ActionContext.getContext(); stack = context.getValueStack(); portletContext = new MockPortletContext(); renderRequest = new MockRenderRequest(); renderRequest.setAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY, stack); renderUrl = new MockPortletUrl("render"); actionUrl = new MockPortletUrl("action"); renderResponse = new MockRenderResponse() { @Override public PortletURL createRenderURL() { return renderUrl; } @Override public PortletURL createActionURL() { return actionUrl; } }; Map modeMap = new HashMap(); modeMap.put(PortletMode.VIEW, "/view"); modeMap.put(PortletMode.HELP, "/help"); modeMap.put(PortletMode.EDIT, "/edit"); context.put(PortletActionConstants.REQUEST, renderRequest); context.put(PortletActionConstants.RESPONSE, renderResponse); context.put(PortletActionConstants.PHASE, PortletActionConstants.RENDER_PHASE); context.put(PortletActionConstants.MODE_NAMESPACE_MAP, modeMap); context.put(StrutsStatics.STRUTS_PORTLET_CONTEXT, portletContext); actionInvocation = new MockActionInvocation(); actionProxy = new MockActionProxy(); actionInvocation.setAction(new Object()); actionInvocation.setProxy(actionProxy); actionInvocation.setStack(stack); context.setActionInvocation(actionInvocation); pageContext = new MockPageContext(); pageContext.setRequest(new PortletServletRequest(renderRequest, null)); jspWriter = new MockJspWriter(); pageContext.setJspWriter(jspWriter); tag.setPageContext(pageContext); } public void testEnsureParamsAreStringArrays() { Map params = new HashMap(); params.put("param1", "Test1"); params.put("param2", new String[] { "Test2" }); Map result = PortletUrlHelper.ensureParamsAreStringArrays(params); assertEquals(2, result.size()); assertTrue(result.get("param1") instanceof String[]); } public void testSetWindowState() throws Exception { tag.setAction("testAction"); tag.setWindowState("maximized"); tag.doStartTag(); tag.doEndTag(); assertEquals("/view/testAction", renderUrl.getParameter(PortletActionConstants.ACTION_PARAM)); assertEquals(PortletMode.VIEW.toString(), renderUrl.getParameter(PortletActionConstants.MODE_PARAM)); assertEquals(PortletMode.VIEW, renderUrl.getPortletMode()); assertEquals(WindowState.MAXIMIZED, renderUrl.getWindowState()); } public void testSetPortletMode() throws Exception { tag.setAction("testAction"); tag.setPortletMode("help"); tag.doStartTag(); tag.doEndTag(); assertEquals("/help/testAction", renderUrl.getParameter(PortletActionConstants.ACTION_PARAM)); assertEquals(PortletMode.HELP.toString(), renderUrl.getParameter(PortletActionConstants.MODE_PARAM)); assertEquals(PortletMode.HELP, renderUrl.getPortletMode()); assertEquals(WindowState.NORMAL, renderUrl.getWindowState()); } public void testUrlWithQueryParams() throws Exception { tag.setAction("testAction?testParam1=testValue1"); tag.doStartTag(); tag.doEndTag(); assertEquals("/view/testAction", renderUrl.getParameter(PortletActionConstants.ACTION_PARAM)); assertEquals("testValue1", renderUrl.getParameter("testParam1")); assertEquals(PortletMode.VIEW.toString(), renderUrl.getParameter(PortletActionConstants.MODE_PARAM)); assertEquals(PortletMode.VIEW, renderUrl.getPortletMode()); assertEquals(WindowState.NORMAL, renderUrl.getWindowState()); } public void testActionUrl() throws Exception { tag.setAction("testAction"); tag.setPortletUrlType("action"); tag.doStartTag(); tag.doEndTag(); assertEquals("/view/testAction", actionUrl.getParameter(PortletActionConstants.ACTION_PARAM)); assertEquals(PortletMode.VIEW, actionUrl.getPortletMode()); assertEquals(WindowState.NORMAL, actionUrl.getWindowState()); } public void testResourceUrl() throws Exception { renderRequest.setContextPath("/myPortlet"); jspWriter.setExpectedData("/myPortlet/image.gif"); tag.setValue("image.gif"); tag.doStartTag(); tag.doEndTag(); jspWriter.verify(); } public void testResourceUrlWithNestedParam() throws Exception { renderRequest.setContextPath("/myPortlet"); jspWriter.setExpectedData("/myPortlet/image.gif?testParam1=testValue1"); ParamTag paramTag = new ParamTag(); paramTag.setPageContext(pageContext); paramTag.setParent(tag); paramTag.setName("testParam1"); paramTag.setValue("'testValue1'"); tag.setValue("image.gif"); tag.doStartTag(); paramTag.doStartTag(); paramTag.doEndTag(); tag.doEndTag(); jspWriter.verify(); } public void testResourceUrlWithTwoNestedParam() throws Exception { renderRequest.setContextPath("/myPortlet"); jspWriter.setExpectedData("/myPortlet/image.gif?testParam1=testValue1&testParam2=testValue2"); ParamTag paramTag = new ParamTag(); paramTag.setPageContext(pageContext); paramTag.setParent(tag); paramTag.setName("testParam1"); paramTag.setValue("'testValue1'"); ParamTag paramTag2 = new ParamTag(); paramTag2.setPageContext(pageContext); paramTag2.setParent(tag); paramTag2.setName("testParam2"); paramTag2.setValue("'testValue2'"); tag.setValue("image.gif"); tag.doStartTag(); paramTag.doStartTag(); paramTag.doEndTag(); paramTag2.doStartTag(); paramTag2.doEndTag(); tag.doEndTag(); jspWriter.verify(); } public void testResourceUrlWithNestedParamThatIsNotString() throws Exception { renderRequest.setContextPath("/myPortlet"); jspWriter.setExpectedData("/myPortlet/image.gif?id=5"); ParamTag paramTag = new ParamTag(); paramTag.setPageContext(pageContext); paramTag.setParent(tag); paramTag.setName("id"); paramTag.setValue("5"); tag.setValue("image.gif"); tag.doStartTag(); paramTag.doStartTag(); paramTag.doEndTag(); tag.doEndTag(); jspWriter.verify(); } public void testResourceUrlWithNestedOgnlExpressionParamThatIsNotString() throws Exception { renderRequest.setContextPath("/myPortlet"); jspWriter.setExpectedData("/myPortlet/image.gif?id=5"); Object o = new Object() { public Integer getId() { return 5; } }; tag.getStack().push(o); ParamTag paramTag = new ParamTag(); paramTag.setPageContext(pageContext); paramTag.setParent(tag); paramTag.setName("id"); paramTag.setValue("id"); tag.setValue("image.gif"); tag.doStartTag(); paramTag.doStartTag(); paramTag.doEndTag(); tag.doEndTag(); jspWriter.verify(); } public void testUrlWithMethod() throws Exception { tag.setAction("testAction"); tag.setMethod("input"); tag.doStartTag(); tag.doEndTag(); assertEquals("/view/testAction!input", renderUrl.getParameter(PortletActionConstants.ACTION_PARAM)); assertEquals(PortletMode.VIEW.toString(), renderUrl.getParameter(PortletActionConstants.MODE_PARAM)); assertEquals(PortletMode.VIEW, renderUrl.getPortletMode()); assertEquals(WindowState.NORMAL, renderUrl.getWindowState()); } public void testUrlWithNoActionOrMethod() throws Exception { actionProxy.setActionName("currentExecutingAction"); actionProxy.setNamespace("/currentNamespace"); tag.doStartTag(); tag.doEndTag(); assertEquals("/view/currentNamespace/currentExecutingAction", renderUrl .getParameter(PortletActionConstants.ACTION_PARAM)); assertEquals(PortletMode.VIEW.toString(), renderUrl.getParameter(PortletActionConstants.MODE_PARAM)); assertEquals(PortletMode.VIEW, renderUrl.getPortletMode()); assertEquals(WindowState.NORMAL, renderUrl.getWindowState()); } public void testUrlShouldNotIncludeParamsFromHttpQueryString() throws Exception { PortletServletRequestWithQueryString req = new PortletServletRequestWithQueryString(renderRequest, null); req.setQueryString("thisParamShouldNotBeIncluded=thisValueShouldNotBeIncluded"); pageContext.setRequest(req); tag.setAction("testAction?testParam1=testValue1"); tag.doStartTag(); tag.doEndTag(); assertEquals("/view/testAction", renderUrl.getParameter(PortletActionConstants.ACTION_PARAM)); assertEquals("testValue1", renderUrl.getParameter("testParam1")); assertNull(renderUrl.getParameter("thisParamShouldNotBeIncluded")); assertEquals(PortletMode.VIEW.toString(), renderUrl.getParameter(PortletActionConstants.MODE_PARAM)); assertEquals(PortletMode.VIEW, renderUrl.getPortletMode()); assertEquals(WindowState.NORMAL, renderUrl.getWindowState()); } public void testUrlShouldIgnoreIncludeParams() throws Exception { PortletServletRequestWithQueryString req = new PortletServletRequestWithQueryString(renderRequest, null); req.setQueryString("thisParamShouldNotBeIncluded=thisValueShouldNotBeIncluded"); pageContext.setRequest(req); tag.setAction("testAction?testParam1=testValue1"); tag.setIncludeParams("GET"); tag.doStartTag(); tag.doEndTag(); assertEquals("/view/testAction", renderUrl.getParameter(PortletActionConstants.ACTION_PARAM)); assertEquals("testValue1", renderUrl.getParameter("testParam1")); assertNull(renderUrl.getParameter("thisParamShouldNotBeIncluded")); assertEquals(PortletMode.VIEW.toString(), renderUrl.getParameter(PortletActionConstants.MODE_PARAM)); assertEquals(PortletMode.VIEW, renderUrl.getPortletMode()); assertEquals(WindowState.NORMAL, renderUrl.getWindowState()); } private static class PortletServletRequestWithQueryString extends PortletServletRequest { private String queryString; public PortletServletRequestWithQueryString(PortletRequest portletRequest, PortletContext portletContext) { super(portletRequest, portletContext); } public void setQueryString(String queryString) { this.queryString = queryString; } @Override public String getQueryString() { return queryString; } } private static class MockPortletUrl extends MockPortletURL { private PortletMode portletMode; private WindowState windowState; public MockPortletUrl(String urlType) { super(new MockPortalContext(), urlType); } @Override public void setPortletMode(PortletMode portletMode) throws PortletModeException { super.setPortletMode(portletMode); this.portletMode = portletMode; } public PortletMode getPortletMode() { return portletMode; } @Override public void setWindowState(WindowState windowState) throws WindowStateException { super.setWindowState(windowState); this.windowState = windowState; } public WindowState getWindowState() { return windowState; } } } Other Struts examples (source code examples)Here is a short list of links related to this Struts PortletUrlTagTest.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.