001: /*
002: * Copyright (c) 2002-2003 by OpenSymphony
003: * All rights reserved.
004: */
005: package com.opensymphony.webwork.dispatcher;
006:
007: import java.util.HashMap;
008: import java.util.Map;
009:
010: import com.opensymphony.webwork.ServletActionContext;
011: import com.opensymphony.webwork.WebWorkTestCase;
012: import com.opensymphony.webwork.dispatcher.ServletActionRedirectResult;
013:
014: import org.easymock.MockControl;
015: import org.springframework.mock.web.MockHttpServletRequest;
016: import org.springframework.mock.web.MockHttpServletResponse;
017:
018: import com.opensymphony.xwork.ActionContext;
019: import com.opensymphony.xwork.ActionInvocation;
020: import com.opensymphony.xwork.ActionProxy;
021: import com.opensymphony.xwork.config.entities.ActionConfig;
022: import com.opensymphony.xwork.config.entities.ResultConfig;
023: import com.opensymphony.xwork.util.OgnlValueStack;
024:
025: /**
026: *
027: * @author tm_jee
028: * @version $Date: 2006-07-31 16:22:14 +0200 (Mon, 31 Jul 2006) $ $Id: ServletActionRedirectResultTest.java 2668 2006-07-31 14:22:14Z tmjee $
029: */
030: public class ServletActionRedirectResultTest extends WebWorkTestCase {
031:
032: public void testIncludeParameterInResultWithConditionParseOn()
033: throws Exception {
034:
035: ResultConfig resultConfig = new ResultConfig();
036: resultConfig.addParam("actionName", "someActionName");
037: resultConfig.addParam("namespace", "someNamespace");
038: resultConfig.addParam("encode", "true");
039: resultConfig.addParam("parse", "true");
040: resultConfig.addParam("location", "someLocation");
041: resultConfig.addParam("prependServletContext", "true");
042: resultConfig.addParam("method", "someMethod");
043: resultConfig.addParam("param1", "${#value1}");
044: resultConfig.addParam("param2", "${#value2}");
045: resultConfig.addParam("param3", "${#value3}");
046:
047: ActionContext context = ActionContext.getContext();
048: OgnlValueStack stack = context.getValueStack();
049: context.put("value1", "value 1");
050: context.put("value2", "value 2");
051: context.put("value3", "value 3");
052: MockHttpServletRequest req = new MockHttpServletRequest();
053: MockHttpServletResponse res = new MockHttpServletResponse();
054: context.put(ServletActionContext.HTTP_REQUEST, req);
055: context.put(ServletActionContext.HTTP_RESPONSE, res);
056:
057: Map results = new HashMap();
058: results.put("myResult", resultConfig);
059:
060: ActionConfig actionConfig = new ActionConfig();
061: actionConfig.setResults(results);
062:
063: ServletActionRedirectResult result = new ServletActionRedirectResult();
064: result.setActionName("myAction");
065: result.setNamespace("/myNamespace");
066: result.setParse(false);
067: result.setEncode(false);
068: result.setPrependServletContext(false);
069:
070: MockControl actionProxyControl = MockControl
071: .createControl(ActionProxy.class);
072: ActionProxy mockActionProxy = (ActionProxy) actionProxyControl
073: .getMock();
074: mockActionProxy.getConfig();
075: actionProxyControl.setDefaultReturnValue(actionConfig);
076:
077: MockControl actionInvocationControl = MockControl
078: .createControl(ActionInvocation.class);
079: ActionInvocation mockInvocation = (ActionInvocation) actionInvocationControl
080: .getMock();
081: mockInvocation.getProxy();
082: actionInvocationControl.setDefaultReturnValue(mockActionProxy);
083: mockInvocation.getResultCode();
084: actionInvocationControl.setDefaultReturnValue("myResult");
085: mockInvocation.getInvocationContext();
086: actionInvocationControl.setDefaultReturnValue(context);
087: mockInvocation.getStack();
088: actionInvocationControl.setDefaultReturnValue(stack);
089:
090: actionProxyControl.replay();
091: actionInvocationControl.replay();
092:
093: result.execute(mockInvocation);
094: assertEquals(
095: "/myNamespace/myAction.action?param2=value+2¶m1=value+1¶m3=value+3",
096: res.getRedirectedUrl());
097:
098: actionProxyControl.verify();
099: actionInvocationControl.verify();
100: }
101:
102: public void testIncludeParameterInResult() throws Exception {
103:
104: ResultConfig resultConfig = new ResultConfig();
105: resultConfig.addParam("actionName", "someActionName");
106: resultConfig.addParam("namespace", "someNamespace");
107: resultConfig.addParam("encode", "true");
108: resultConfig.addParam("parse", "true");
109: resultConfig.addParam("location", "someLocation");
110: resultConfig.addParam("prependServletContext", "true");
111: resultConfig.addParam("method", "someMethod");
112: resultConfig.addParam("param1", "value 1");
113: resultConfig.addParam("param2", "value 2");
114: resultConfig.addParam("param3", "value 3");
115:
116: ActionContext context = ActionContext.getContext();
117: MockHttpServletRequest req = new MockHttpServletRequest();
118: MockHttpServletResponse res = new MockHttpServletResponse();
119: context.put(ServletActionContext.HTTP_REQUEST, req);
120: context.put(ServletActionContext.HTTP_RESPONSE, res);
121:
122: Map results = new HashMap();
123: results.put("myResult", resultConfig);
124:
125: ActionConfig actionConfig = new ActionConfig();
126: actionConfig.setResults(results);
127:
128: ServletActionRedirectResult result = new ServletActionRedirectResult();
129: result.setActionName("myAction");
130: result.setNamespace("/myNamespace");
131: result.setParse(false);
132: result.setEncode(false);
133: result.setPrependServletContext(false);
134:
135: MockControl actionProxyControl = MockControl
136: .createControl(ActionProxy.class);
137: ActionProxy mockActionProxy = (ActionProxy) actionProxyControl
138: .getMock();
139: mockActionProxy.getConfig();
140: actionProxyControl.setDefaultReturnValue(actionConfig);
141:
142: MockControl actionInvocationControl = MockControl
143: .createControl(ActionInvocation.class);
144: ActionInvocation mockInvocation = (ActionInvocation) actionInvocationControl
145: .getMock();
146: mockInvocation.getProxy();
147: actionInvocationControl.setDefaultReturnValue(mockActionProxy);
148: mockInvocation.getResultCode();
149: actionInvocationControl.setDefaultReturnValue("myResult");
150: mockInvocation.getInvocationContext();
151: actionInvocationControl.setDefaultReturnValue(context);
152:
153: actionProxyControl.replay();
154: actionInvocationControl.replay();
155:
156: result.execute(mockInvocation);
157: assertEquals(
158: "/myNamespace/myAction.action?param2=value+2¶m1=value+1¶m3=value+3",
159: res.getRedirectedUrl());
160:
161: actionProxyControl.verify();
162: actionInvocationControl.verify();
163: }
164: }
|