001: /*
002: * $Id: StrutsResultSupportTest.java 471756 2006-11-06 15:01:43Z husted $
003: *
004: * Licensed to the Apache Software Foundation (ASF) under one
005: * or more contributor license agreements. See the NOTICE file
006: * distributed with this work for additional information
007: * regarding copyright ownership. The ASF licenses this file
008: * to you under the Apache License, Version 2.0 (the
009: * "License"); you may not use this file except in compliance
010: * with the License. You may obtain a copy of the License at
011: *
012: * http://www.apache.org/licenses/LICENSE-2.0
013: *
014: * Unless required by applicable law or agreed to in writing,
015: * software distributed under the License is distributed on an
016: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017: * KIND, either express or implied. See the License for the
018: * specific language governing permissions and limitations
019: * under the License.
020: */
021: package org.apache.struts2.dispatcher;
022:
023: import org.apache.struts2.StrutsTestCase;
024: import org.easymock.EasyMock;
025:
026: import com.opensymphony.xwork2.ActionInvocation;
027: import com.opensymphony.xwork2.ActionSupport;
028: import com.opensymphony.xwork2.util.ValueStack;
029: import com.opensymphony.xwork2.util.ValueStackFactory;
030:
031: /**
032: * Test case for StrutsResultSupport.
033: */
034: public class StrutsResultSupportTest extends StrutsTestCase {
035:
036: public void testParse() throws Exception {
037: ValueStack stack = ValueStackFactory.getFactory()
038: .createValueStack();
039: stack.push(new ActionSupport() {
040: public String getMyLocation() {
041: return "ThisIsMyLocation";
042: }
043: });
044:
045: ActionInvocation mockActionInvocation = EasyMock
046: .createNiceMock(ActionInvocation.class);
047: mockActionInvocation.getStack();
048: EasyMock.expectLastCall().andReturn(stack);
049: EasyMock.replay(mockActionInvocation);
050:
051: InternalStrutsResultSupport result = new InternalStrutsResultSupport();
052: result.setParse(true);
053: result.setEncode(false);
054: result.setLocation("/pages/myJsp.jsp?location=${myLocation}");
055:
056: result.execute(mockActionInvocation);
057:
058: assertNotNull(result.getInternalLocation());
059: assertEquals("/pages/myJsp.jsp?location=ThisIsMyLocation",
060: result.getInternalLocation());
061: EasyMock.verify(mockActionInvocation);
062: }
063:
064: public void testParseAndEncode() throws Exception {
065: ValueStack stack = ValueStackFactory.getFactory()
066: .createValueStack();
067: stack.push(new ActionSupport() {
068: public String getMyLocation() {
069: return "/myPage?param=value¶m1=value1";
070: }
071: });
072:
073: ActionInvocation mockActionInvocation = EasyMock
074: .createNiceMock(ActionInvocation.class);
075: mockActionInvocation.getStack();
076: EasyMock.expectLastCall().andReturn(stack);
077: EasyMock.replay(mockActionInvocation);
078:
079: InternalStrutsResultSupport result = new InternalStrutsResultSupport();
080: result.setParse(true);
081: result.setEncode(true);
082: result.setLocation("/pages/myJsp.jsp?location=${myLocation}");
083:
084: result.execute(mockActionInvocation);
085:
086: assertNotNull(result.getInternalLocation());
087: assertEquals(
088: "/pages/myJsp.jsp?location=%2FmyPage%3Fparam%3Dvalue%26param1%3Dvalue1",
089: result.getInternalLocation());
090: EasyMock.verify(mockActionInvocation);
091: }
092:
093: public void testNoParseAndEncode() throws Exception {
094: ValueStack stack = ValueStackFactory.getFactory()
095: .createValueStack();
096: stack.push(new ActionSupport() {
097: public String getMyLocation() {
098: return "myLocation.jsp";
099: }
100: });
101:
102: ActionInvocation mockActionInvocation = EasyMock
103: .createNiceMock(ActionInvocation.class);
104: EasyMock.replay(mockActionInvocation);
105:
106: InternalStrutsResultSupport result = new InternalStrutsResultSupport();
107: result.setParse(false);
108: result.setEncode(false); // don't really need this, as encode is only valid when parse is true.
109: result.setLocation("/pages/myJsp.jsp?location=${myLocation}");
110:
111: result.execute(mockActionInvocation);
112:
113: assertNotNull(result.getInternalLocation());
114: assertEquals("/pages/myJsp.jsp?location=${myLocation}", result
115: .getInternalLocation());
116: EasyMock.verify(mockActionInvocation);
117: }
118:
119: public static class InternalStrutsResultSupport extends
120: StrutsResultSupport {
121: private String _internalLocation = null;
122:
123: protected void doExecute(String finalLocation,
124: ActionInvocation invocation) throws Exception {
125: _internalLocation = finalLocation;
126: }
127:
128: public String getInternalLocation() {
129: return _internalLocation;
130: }
131: }
132: }
|