http://git-wip-us.apache.org/repos/asf/struts/blob/6bc99ab9/core/src/test/java/org/apache/struts2/dispatcher/HttpHeaderResultTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/struts2/dispatcher/HttpHeaderResultTest.java b/core/src/test/java/org/apache/struts2/dispatcher/HttpHeaderResultTest.java deleted file mode 100644 index f4287d0..0000000 --- a/core/src/test/java/org/apache/struts2/dispatcher/HttpHeaderResultTest.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * $Id$ - * - * 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.dispatcher; - -import com.mockobjects.dynamic.C; -import com.mockobjects.dynamic.Mock; -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.ActionInvocation; -import com.opensymphony.xwork2.util.reflection.ReflectionProvider; -import org.apache.struts2.ServletActionContext; -import org.apache.struts2.StrutsInternalTestCase; - -import javax.servlet.http.HttpServletResponse; -import java.util.HashMap; -import java.util.Map; - -/** - * HttpHeaderResultTest - */ -public class HttpHeaderResultTest extends StrutsInternalTestCase { - - ActionInvocation invocation; - HttpHeaderResult result; - HttpServletResponse response; - Mock responseMock; - ReflectionProvider reflectionProvider; - - public void testHeaderValuesAreNotParsedWhenParseIsFalse() throws Exception { - Map<String, String> params = new HashMap<String, String>(); - params.put("headers.foo", "${bar}"); - params.put("headers.baz", "baz"); - - Map<String, String> values = new HashMap<String, String>(); - values.put("bar", "abc"); - ActionContext.getContext().getValueStack().push(values); - - reflectionProvider.setProperties(params, result); - - responseMock.expect("addHeader", C.args(C.eq("foo"), C.eq("${bar}"))); - responseMock.expect("addHeader", C.args(C.eq("baz"), C.eq("baz"))); - result.setParse(false); - result.execute(invocation); - responseMock.verify(); - } - - public void testHeaderValuesAreParsedAndSet() throws Exception { - Map<String, String> params = new HashMap<String, String>(); - params.put("headers.foo", "${bar}"); - params.put("headers.baz", "baz"); - - Map<String, String> values = new HashMap<String, String>(); - values.put("bar", "abc"); - ActionContext.getContext().getValueStack().push(values); - - reflectionProvider.setProperties(params, result); - - responseMock.expect("addHeader", C.args(C.eq("foo"), C.eq("abc"))); - responseMock.expect("addHeader", C.args(C.eq("baz"), C.eq("baz"))); - result.execute(invocation); - responseMock.verify(); - } - - public void testErrorMessageIsParsedAndSet() throws Exception { - ActionContext.getContext().getValueStack().set("errMsg", "abc"); - ActionContext.getContext().getValueStack().set("errCode", "404"); - result.setError("${errCode}"); - result.setErrorMessage("${errMsg}"); - - responseMock.expect("sendError", C.args(C.eq(404), C.eq("abc"))); - result.execute(invocation); - responseMock.verify(); - } - - public void testErrorMessageIsNotParsedAndSet() throws Exception { - ActionContext.getContext().getValueStack().set("errMsg", "abc"); - result.setError("404"); - result.setParse(false); - result.setErrorMessage("${errMsg}"); - - responseMock.expect("sendError", C.args(C.eq(404), C.eq("${errMsg}"))); - result.execute(invocation); - responseMock.verify(); - } - - public void testStatusIsSet() throws Exception { - responseMock.expect("setStatus", C.eq(123)); - result.setStatus(123); - result.execute(invocation); - responseMock.verify(); - } - - public void testErrorIsSet() throws Exception { - responseMock.expect("sendError", C.eq(404)); - result.setError("404"); - result.execute(invocation); - responseMock.verify(); - } - - protected void setUp() throws Exception { - super.setUp(); - result = new HttpHeaderResult(); - responseMock = new Mock(HttpServletResponse.class); - response = (HttpServletResponse) responseMock.proxy(); - invocation = (ActionInvocation) new Mock(ActionInvocation.class).proxy(); - reflectionProvider = container.getInstance(ReflectionProvider.class); - ServletActionContext.setResponse(response); - } - - protected void tearDown() throws Exception { - super.tearDown(); - ActionContext.setContext(null); - } - -}
http://git-wip-us.apache.org/repos/asf/struts/blob/6bc99ab9/core/src/test/java/org/apache/struts2/dispatcher/PlainTextResultTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/struts2/dispatcher/PlainTextResultTest.java b/core/src/test/java/org/apache/struts2/dispatcher/PlainTextResultTest.java deleted file mode 100644 index 959458a..0000000 --- a/core/src/test/java/org/apache/struts2/dispatcher/PlainTextResultTest.java +++ /dev/null @@ -1,156 +0,0 @@ -/* - * $Id$ - * - * 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.dispatcher; - -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.mock.MockActionInvocation; -import com.opensymphony.xwork2.util.ClassLoaderUtil; -import com.opensymphony.xwork2.util.ValueStack; -import org.apache.struts2.StrutsStatics; -import org.apache.struts2.StrutsInternalTestCase; -import org.apache.struts2.views.jsp.AbstractUITagTest; -import org.apache.struts2.views.jsp.StrutsMockHttpServletResponse; -import org.apache.struts2.views.jsp.StrutsMockServletContext; - -import java.io.InputStream; -import java.io.PrintWriter; -import java.io.StringWriter; - -/** - * Test case for PlainTextResult. - * - */ -public class PlainTextResultTest extends StrutsInternalTestCase { - - ValueStack stack; - MockActionInvocation invocation; - ActionContext context; - StrutsMockHttpServletResponse response; - PrintWriter writer; - StringWriter stringWriter; - StrutsMockServletContext servletContext; - - - public void testPlainText() throws Exception { - PlainTextResult result = new PlainTextResult(); - result.setLocation("/someJspFile.jsp"); - - response.setExpectedContentType("text/plain"); - response.setExpectedHeader("Content-Disposition", "inline"); - - try (InputStream jspResourceInputStream = - ClassLoaderUtil.getResourceAsStream( - "org/apache/struts2/dispatcher/someJspFile.jsp", - PlainTextResultTest.class)) { - servletContext.setResourceAsStream(jspResourceInputStream); - result.execute(invocation); - - String r = AbstractUITagTest.normalize(stringWriter.getBuffer().toString(), true); - String e = AbstractUITagTest.normalize( - readAsString("org/apache/struts2/dispatcher/someJspFile.jsp"), true); - assertEquals(r, e); - } - } - - public void testPlainTextWithoutSlash() throws Exception { - PlainTextResult result = new PlainTextResult(); - result.setLocation("someJspFile.jsp"); - - response.setExpectedContentType("text/plain"); - response.setExpectedHeader("Content-Disposition", "inline"); - - try (InputStream jspResourceInputStream = - ClassLoaderUtil.getResourceAsStream("org/apache/struts2/dispatcher/someJspFile.jsp", PlainTextResultTest.class)) { - servletContext.setResourceAsStream(jspResourceInputStream); - result.execute(invocation); - - String r = AbstractUITagTest.normalize(stringWriter.getBuffer().toString(), true); - String e = AbstractUITagTest.normalize(readAsString("org/apache/struts2/dispatcher/someJspFile.jsp"), true); - assertEquals(r, e); - } - } - - public void testPlainTextWithEncoding() throws Exception { - PlainTextResult result = new PlainTextResult(); - result.setLocation("/someJspFile.jsp"); - result.setCharSet("UTF-8"); - - response.setExpectedContentType("text/plain; charset=UTF-8"); - response.setExpectedHeader("Content-Disposition", "inline"); - - try (InputStream jspResourceInputStream = - ClassLoaderUtil.getResourceAsStream( - "org/apache/struts2/dispatcher/someJspFile.jsp", - PlainTextResultTest.class)) { - servletContext.setResourceAsStream(jspResourceInputStream); - result.execute(invocation); - - String r = AbstractUITagTest.normalize(stringWriter.getBuffer().toString(), true); - String e = AbstractUITagTest.normalize( - readAsString("org/apache/struts2/dispatcher/someJspFile.jsp"), true); - assertEquals(r, e); - } - } - - protected String readAsString(String resource) throws Exception { - try (InputStream is = ClassLoaderUtil.getResourceAsStream(resource, PlainTextResultTest.class)) { - int sizeRead = 0; - byte[] buffer = new byte[1024]; - StringBuilder stringBuilder = new StringBuilder(); - while((sizeRead = is.read(buffer)) != -1) { - stringBuilder.append(new String(buffer, 0, sizeRead)); - } - return stringBuilder.toString(); - } - } - - - protected void setUp() throws Exception { - super.setUp(); - - stringWriter = new StringWriter(); - writer = new PrintWriter(stringWriter); - response = new StrutsMockHttpServletResponse(); - response.setWriter(writer); - servletContext = new StrutsMockServletContext(); - stack = ActionContext.getContext().getValueStack(); - context = new ActionContext(stack.getContext()); - context.put(StrutsStatics.HTTP_RESPONSE, response); - context.put(StrutsStatics.SERVLET_CONTEXT, servletContext); - invocation = new MockActionInvocation(); - invocation.setStack(stack); - invocation.setInvocationContext(context); - } - - - protected void tearDown() throws Exception { - stack = null; - invocation = null; - context = null; - response = null; - writer = null; - stringWriter = null; - servletContext = null; - - super.tearDown(); - } -} http://git-wip-us.apache.org/repos/asf/struts/blob/6bc99ab9/core/src/test/java/org/apache/struts2/dispatcher/ServletActionRedirectResultTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/struts2/dispatcher/ServletActionRedirectResultTest.java b/core/src/test/java/org/apache/struts2/dispatcher/ServletActionRedirectResultTest.java deleted file mode 100644 index 168ea04..0000000 --- a/core/src/test/java/org/apache/struts2/dispatcher/ServletActionRedirectResultTest.java +++ /dev/null @@ -1,188 +0,0 @@ -/* - * $Id$ - * - * 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.dispatcher; - -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.ActionInvocation; -import com.opensymphony.xwork2.ActionProxy; -import com.opensymphony.xwork2.ObjectFactory; -import com.opensymphony.xwork2.config.entities.ActionConfig; -import com.opensymphony.xwork2.config.entities.ResultConfig; -import com.opensymphony.xwork2.util.ValueStack; -import org.apache.struts2.ServletActionContext; -import org.apache.struts2.StrutsInternalTestCase; -import org.apache.struts2.dispatcher.mapper.ActionMapper; -import org.apache.struts2.views.util.DefaultUrlHelper; -import org.easymock.IMocksControl; -import org.springframework.mock.web.MockHttpServletRequest; -import org.springframework.mock.web.MockHttpServletResponse; - -import java.util.HashMap; -import java.util.Map; - -import static org.easymock.EasyMock.createControl; -import static org.easymock.EasyMock.expect; - - -/** - * @version $Date$ $Id$ - */ -public class ServletActionRedirectResultTest extends StrutsInternalTestCase { - - public void testIncludeParameterInResultWithConditionParseOn() throws Exception { - - ResultConfig resultConfig = new ResultConfig.Builder("", "") - .addParam("actionName", "someActionName") - .addParam("namespace", "someNamespace") - .addParam("encode", "true") - .addParam("parse", "true") - .addParam("location", "someLocation") - .addParam("prependServletContext", "true") - .addParam("method", "someMethod") - .addParam("statusCode", "333") - .addParam("param1", "${#value1}") - .addParam("param2", "${#value2}") - .addParam("param3", "${#value3}") - .addParam("anchor", "${#fragment}") - .build(); - - - - ActionContext context = ActionContext.getContext(); - ValueStack stack = context.getValueStack(); - context.getContextMap().put("value1", "value 1"); - context.getContextMap().put("value2", "value 2"); - context.getContextMap().put("value3", "value 3"); - MockHttpServletRequest req = new MockHttpServletRequest(); - MockHttpServletResponse res = new MockHttpServletResponse(); - context.put(ServletActionContext.HTTP_REQUEST, req); - context.put(ServletActionContext.HTTP_RESPONSE, res); - - - Map<String, ResultConfig> results= new HashMap<String, ResultConfig>(); - results.put("myResult", resultConfig); - - ActionConfig actionConfig = new ActionConfig.Builder("", "", "") - .addResultConfigs(results).build(); - - ServletActionRedirectResult result = new ServletActionRedirectResult(); - result.setActionName("myAction"); - result.setNamespace("/myNamespace"); - result.setParse(true); - result.setEncode(false); - result.setPrependServletContext(false); - result.setAnchor("fragment"); - result.setUrlHelper(new DefaultUrlHelper()); - - IMocksControl control = createControl(); - ActionProxy mockActionProxy = control.createMock(ActionProxy.class); - ActionInvocation mockInvocation = control.createMock(ActionInvocation.class); - expect(mockInvocation.getProxy()).andReturn(mockActionProxy); - expect(mockInvocation.getResultCode()).andReturn("myResult"); - expect(mockActionProxy.getConfig()).andReturn(actionConfig); - expect(mockInvocation.getInvocationContext()).andReturn(context); - expect(mockInvocation.getStack()).andReturn(stack).anyTimes(); - - control.replay(); - result.setActionMapper(container.getInstance(ActionMapper.class)); - result.execute(mockInvocation); - assertEquals("/myNamespace/myAction.action?param1=value+1¶m2=value+2¶m3=value+3#fragment", res.getRedirectedUrl()); - - control.verify(); - } - - public void testIncludeParameterInResult() throws Exception { - - ResultConfig resultConfig = new ResultConfig.Builder("", "") - .addParam("actionName", "someActionName") - .addParam("namespace", "someNamespace") - .addParam("encode", "true") - .addParam("parse", "true") - .addParam("location", "someLocation") - .addParam("prependServletContext", "true") - .addParam("method", "someMethod") - .addParam("param1", "value 1") - .addParam("param2", "value 2") - .addParam("param3", "value 3") - .addParam("anchor", "fragment") - .build(); - - ActionContext context = ActionContext.getContext(); - MockHttpServletRequest req = new MockHttpServletRequest(); - MockHttpServletResponse res = new MockHttpServletResponse(); - context.put(ServletActionContext.HTTP_REQUEST, req); - context.put(ServletActionContext.HTTP_RESPONSE, res); - - - Map<String, ResultConfig> results= new HashMap<String, ResultConfig>(); - results.put("myResult", resultConfig); - - ActionConfig actionConfig = new ActionConfig.Builder("", "", "") - .addResultConfigs(results).build(); - - ServletActionRedirectResult result = new ServletActionRedirectResult(); - result.setActionName("myAction"); - result.setNamespace("/myNamespace"); - result.setParse(false); - result.setEncode(false); - result.setPrependServletContext(false); - result.setAnchor("fragment"); - result.setUrlHelper(new DefaultUrlHelper()); - - IMocksControl control = createControl(); - ActionProxy mockActionProxy = control.createMock(ActionProxy.class); - ActionInvocation mockInvocation = control.createMock(ActionInvocation.class); - expect(mockInvocation.getProxy()).andReturn(mockActionProxy); - expect(mockInvocation.getResultCode()).andReturn("myResult"); - expect(mockActionProxy.getConfig()).andReturn(actionConfig); - expect(mockInvocation.getInvocationContext()).andReturn(context); - - control.replay(); - result.setActionMapper(container.getInstance(ActionMapper.class)); - result.execute(mockInvocation); - assertEquals("/myNamespace/myAction.action?param1=value+1¶m2=value+2¶m3=value+3#fragment", res.getRedirectedUrl()); - - control.verify(); - } - - public void testBuildResultWithParameter() throws Exception { - - ResultConfig resultConfig = new ResultConfig.Builder("", ServletActionRedirectResult.class.getName()) - .addParam("actionName", "someActionName") - .addParam("namespace", "someNamespace") - .addParam("encode", "true") - .addParam("parse", "true") - .addParam("location", "someLocation") - .addParam("prependServletContext", "true") - .addParam("method", "someMethod") - .addParam("param1", "value 1") - .addParam("param2", "value 2") - .addParam("param3", "value 3") - .addParam("anchor", "fragment") - .build(); - - ObjectFactory factory = container.getInstance(ObjectFactory.class); - ServletActionRedirectResult result = (ServletActionRedirectResult) factory.buildResult(resultConfig, new HashMap<String, Object>()); - assertNotNull(result); - } - -} http://git-wip-us.apache.org/repos/asf/struts/blob/6bc99ab9/core/src/test/java/org/apache/struts2/dispatcher/ServletDispatcherResultTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/struts2/dispatcher/ServletDispatcherResultTest.java b/core/src/test/java/org/apache/struts2/dispatcher/ServletDispatcherResultTest.java deleted file mode 100644 index 2d93b8c..0000000 --- a/core/src/test/java/org/apache/struts2/dispatcher/ServletDispatcherResultTest.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * $Id$ - * - * 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.dispatcher; - -import javax.servlet.RequestDispatcher; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import ognl.Ognl; - -import org.apache.struts2.ServletActionContext; -import org.apache.struts2.StrutsInternalTestCase; -import org.apache.struts2.StrutsStatics; - -import com.mockobjects.dynamic.C; -import com.mockobjects.dynamic.Mock; -import com.opensymphony.xwork2.ActionContext; - - -/** - * - */ -public class ServletDispatcherResultTest extends StrutsInternalTestCase implements StrutsStatics { - - public void testInclude() { - ServletDispatcherResult view = new ServletDispatcherResult(); - view.setLocation("foo.jsp"); - - Mock dispatcherMock = new Mock(RequestDispatcher.class); - dispatcherMock.expect("include", C.ANY_ARGS); - - Mock requestMock = new Mock(HttpServletRequest.class); - requestMock.expectAndReturn("getAttribute", "struts.actiontag.invocation", null); - requestMock.expectAndReturn("getRequestDispatcher", C.args(C.eq("foo.jsp")), dispatcherMock.proxy()); - - Mock responseMock = new Mock(HttpServletResponse.class); - responseMock.expectAndReturn("isCommitted", Boolean.TRUE); - - ActionContext ac = new ActionContext(Ognl.createDefaultContext(null)); - ActionContext.setContext(ac); - ServletActionContext.setRequest((HttpServletRequest) requestMock.proxy()); - ServletActionContext.setResponse((HttpServletResponse) responseMock.proxy()); - - try { - view.execute(null); - } catch (Exception e) { - e.printStackTrace(); - fail(); - } - - dispatcherMock.verify(); - requestMock.verify(); - dispatcherMock.verify(); - } - - public void testSimple() { - ServletDispatcherResult view = new ServletDispatcherResult(); - view.setLocation("foo.jsp"); - - Mock dispatcherMock = new Mock(RequestDispatcher.class); - dispatcherMock.expect("forward", C.ANY_ARGS); - - Mock requestMock = new Mock(HttpServletRequest.class); - requestMock.expectAndReturn("getAttribute", "struts.actiontag.invocation", null); - requestMock.expectAndReturn("getAttribute", "javax.servlet.include.servlet_path", null); - requestMock.expectAndReturn("getRequestDispatcher", C.args(C.eq("foo.jsp")), dispatcherMock.proxy()); - requestMock.expect("setAttribute", C.ANY_ARGS); // this is a bad mock, but it works - requestMock.expect("setAttribute", C.ANY_ARGS); // this is a bad mock, but it works - requestMock.matchAndReturn("getRequestURI", "foo.jsp"); - - Mock responseMock = new Mock(HttpServletResponse.class); - responseMock.expectAndReturn("isCommitted", Boolean.FALSE); - - ActionContext ac = new ActionContext(Ognl.createDefaultContext(null)); - ActionContext.setContext(ac); - ServletActionContext.setRequest((HttpServletRequest) requestMock.proxy()); - ServletActionContext.setResponse((HttpServletResponse) responseMock.proxy()); - - try { - view.execute(null); - } catch (Exception e) { - e.printStackTrace(); - fail(); - } - - dispatcherMock.verify(); - requestMock.verify(); - dispatcherMock.verify(); - } -} http://git-wip-us.apache.org/repos/asf/struts/blob/6bc99ab9/core/src/test/java/org/apache/struts2/dispatcher/ServletRedirectResultTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/struts2/dispatcher/ServletRedirectResultTest.java b/core/src/test/java/org/apache/struts2/dispatcher/ServletRedirectResultTest.java deleted file mode 100644 index ab40dfc..0000000 --- a/core/src/test/java/org/apache/struts2/dispatcher/ServletRedirectResultTest.java +++ /dev/null @@ -1,360 +0,0 @@ -/* - * $Id$ - * - * 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.dispatcher; - -import static javax.servlet.http.HttpServletResponse.SC_SEE_OTHER; -import static org.easymock.EasyMock.createControl; -import static org.easymock.EasyMock.createNiceMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; - -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import ognl.Ognl; - -import org.apache.struts2.ServletActionContext; -import org.apache.struts2.StrutsInternalTestCase; -import org.apache.struts2.StrutsStatics; -import org.apache.struts2.dispatcher.mapper.ActionMapper; -import org.apache.struts2.views.util.DefaultUrlHelper; -import org.easymock.IMocksControl; -import org.springframework.mock.web.MockHttpServletRequest; -import org.springframework.mock.web.MockHttpServletResponse; - -import com.mockobjects.dynamic.C; -import com.mockobjects.dynamic.Mock; -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.ActionInvocation; -import com.opensymphony.xwork2.ActionProxy; -import com.opensymphony.xwork2.config.entities.ActionConfig; -import com.opensymphony.xwork2.config.entities.PackageConfig; -import com.opensymphony.xwork2.config.entities.ResultConfig; -import com.opensymphony.xwork2.mock.MockActionInvocation; -import com.opensymphony.xwork2.util.ValueStack; - - -/** - */ -public class ServletRedirectResultTest extends StrutsInternalTestCase implements StrutsStatics { - - protected ServletRedirectResult view; - private Mock requestMock; - private Mock responseMock; - protected ActionInvocation ai; - - - public void testAbsoluteRedirect() { - view.setLocation("/bar/foo.jsp"); - responseMock.expectAndReturn("encodeRedirectURL", "/context/bar/foo.jsp", "/context/bar/foo.jsp"); - responseMock.expect("sendRedirect", C.args(C.eq("/context/bar/foo.jsp"))); - - try { - view.execute(ai); - requestMock.verify(); - responseMock.verify(); - } catch (Exception e) { - e.printStackTrace(); - fail(); - } - } - - public void testFullUrlRedirect() { - view.setLocation("http://localhost/bar/foo.jsp"); - responseMock.expectAndReturn("encodeRedirectURL", C.args(C.eq("http://localhost/bar/foo.jsp")), "http://localhost/bar/foo.jsp"); - responseMock.expect("sendRedirect", C.args(C.eq("http://localhost/bar/foo.jsp"))); - - try { - view.execute(ai); - requestMock.verify(); - responseMock.verify(); - } catch (Exception e) { - e.printStackTrace(); - fail(); - } - } - - public void testFullUrlRedirectWithSpaces() { - view.setLocation("http://localhost/bar/foo some.pdf"); - responseMock.expectAndReturn("encodeRedirectURL", C.args(C.eq("http://localhost/bar/foo some.pdf")), "http://localhost/bar/foo some.pdf"); - responseMock.expect("sendRedirect", C.args(C.eq("http://localhost/bar/foo some.pdf"))); - - try { - view.execute(ai); - requestMock.verify(); - responseMock.verify(); - } catch (Exception e) { - e.printStackTrace(); - fail(); - } - } - - public void testFullUrlRedirectWithParams() { - view.setLocation("http://localhost/bar/foo.action?param=1¶m 2=3"); - responseMock.expectAndReturn("encodeRedirectURL", C.args(C.eq("http://localhost/bar/foo.action?param=1¶m 2=3")), "http://localhost/bar/foo.action?param=1¶m 2=3"); - responseMock.expect("sendRedirect", C.args(C.eq("http://localhost/bar/foo.action?param=1¶m 2=3"))); - - try { - view.execute(ai); - requestMock.verify(); - responseMock.verify(); - } catch (Exception e) { - e.printStackTrace(); - fail(); - } - } - - public void testAbsoluteRedirect303() { - view.setLocation("/bar/foo.jsp"); - view.setStatusCode(303); - responseMock.expectAndReturn("encodeRedirectURL", "/context/bar/foo.jsp", "/context/bar/foo.jsp"); - responseMock.expect("setStatus", C.args(C.eq(SC_SEE_OTHER))); - responseMock.expect("setHeader", C.args(C.eq("Location"), C.eq("/context/bar/foo.jsp"))); - StringWriter writer = new StringWriter(); - responseMock.matchAndReturn("getWriter", new PrintWriter(writer)); - - try { - view.execute(ai); - requestMock.verify(); - responseMock.verify(); - } catch (Exception e) { - e.printStackTrace(); - fail(); - } - assertEquals("/context/bar/foo.jsp", writer.toString()); - } - - public void testAbsoluteRedirectAnchor() { - view.setLocation("/bar/foo.jsp"); - view.setAnchor("fragment"); - responseMock.expectAndReturn("encodeRedirectURL", "/context/bar/foo.jsp#fragment", "/context/bar/foo.jsp#fragment"); - responseMock.expect("sendRedirect", C.args(C.eq("/context/bar/foo.jsp#fragment"))); - - try { - view.execute(ai); - requestMock.verify(); - responseMock.verify(); - } catch (Exception e) { - e.printStackTrace(); - fail(); - } - } - public void testPrependServletContextFalse() { - view.setLocation("/bar/foo.jsp"); - view.setPrependServletContext(false); - responseMock.expectAndReturn("encodeRedirectURL", "/bar/foo.jsp", "/bar/foo.jsp"); - responseMock.expect("sendRedirect", C.args(C.eq("/bar/foo.jsp"))); - - try { - view.execute(ai); - requestMock.verify(); - responseMock.verify(); - } catch (Exception e) { - e.printStackTrace(); - fail(); - } - } - - public void testRelativeRedirect() throws Exception { - view.setLocation("foo.jsp"); - requestMock.expectAndReturn("getParameterMap", new HashMap()); - requestMock.expectAndReturn("getServletPath", "/namespace/some.action"); - requestMock.expectAndReturn("getRequestURI", "/namespace/some.action"); - requestMock.expectAndReturn("getAttribute", C.ANY_ARGS, null); - responseMock.expectAndReturn("encodeRedirectURL", "/context/namespace/foo.jsp", "/context/namespace/foo.jsp"); - responseMock.expect("sendRedirect", C.args(C.eq("/context/namespace/foo.jsp"))); - - view.execute(ai); - - requestMock.verify(); - responseMock.verify(); - } - - public void testMultipleParametersRedirect() throws Exception { - view.setLocation("foo.jsp?foo=bar&baz=jim"); - requestMock.expectAndReturn("getParameterMap", new HashMap()); - requestMock.expectAndReturn("getServletPath", "/namespace/some.action"); - requestMock.expectAndReturn("getRequestURI", "/namespace/some.action"); - requestMock.expectAndReturn("getAttribute", C.ANY_ARGS, null); - responseMock.expectAndReturn("encodeRedirectURL", "/context/namespace/foo.jsp?foo=bar&baz=jim", "/context/namespace/foo.jsp?foo=bar&baz=jim"); - responseMock.expect("sendRedirect", C.args(C.eq("/context/namespace/foo.jsp?foo=bar&baz=jim"))); - - view.execute(ai); - - requestMock.verify(); - responseMock.verify(); - } - - public void testIncludeParameterInResult() throws Exception { - - ResultConfig resultConfig = new ResultConfig.Builder("", "") - .addParam("namespace", "someNamespace") - .addParam("encode", "true") - .addParam("parse", "true") - .addParam("location", "someLocation") - .addParam("prependServletContext", "true") - .addParam("method", "someMethod") - .addParam("statusCode", "333") - .addParam("param1", "value 1") - .addParam("param2", "value 2") - .addParam("param3", "value 3") - .build(); - - ActionContext context = ActionContext.getContext(); - MockHttpServletRequest req = new MockHttpServletRequest(); - MockHttpServletResponse res = new MockHttpServletResponse(); - context.put(ServletActionContext.HTTP_REQUEST, req); - context.put(ServletActionContext.HTTP_RESPONSE, res); - - - Map<String, ResultConfig> results= new HashMap<String, ResultConfig>(); - results.put("myResult", resultConfig); - - ActionConfig actionConfig = new ActionConfig.Builder("", "", "") - .addResultConfigs(results).build(); - - ServletRedirectResult result = new ServletRedirectResult(); - result.setLocation("/myNamespace/myAction.action"); - result.setParse(false); - result.setEncode(false); - result.setPrependServletContext(false); - result.setAnchor("fragment"); - result.setUrlHelper(new DefaultUrlHelper()); - - IMocksControl control = createControl(); - ActionProxy mockActionProxy = control.createMock(ActionProxy.class); - ActionInvocation mockInvocation = control.createMock(ActionInvocation.class); - expect(mockInvocation.getProxy()).andReturn(mockActionProxy); - expect(mockInvocation.getResultCode()).andReturn("myResult"); - expect(mockActionProxy.getConfig()).andReturn(actionConfig); - expect(mockInvocation.getInvocationContext()).andReturn(context); - - control.replay(); - result.setActionMapper(container.getInstance(ActionMapper.class)); - result.execute(mockInvocation); - assertEquals("/myNamespace/myAction.action?param1=value+1¶m2=value+2¶m3=value+3#fragment", res.getRedirectedUrl()); - control.verify(); - } - - public void testIncludeCollectionParameterInResult() throws Exception { - List<String> paramValues = new ArrayList<String>(); - paramValues.add("value 1"); - paramValues.add(""); - paramValues.add("value 2"); - paramValues.add(null); - - ResultConfig resultConfig = new ResultConfig.Builder("", "") - .addParam("namespace", "someNamespace") - .addParam("param", "${list}") - .build(); - - ActionContext context = ActionContext.getContext(); - MockHttpServletRequest req = new MockHttpServletRequest(); - MockHttpServletResponse res = new MockHttpServletResponse(); - context.put(ServletActionContext.HTTP_REQUEST, req); - context.put(ServletActionContext.HTTP_RESPONSE, res); - - Map<String, ResultConfig> results= new HashMap<String, ResultConfig>(); - results.put("myResult", resultConfig); - - ActionConfig actionConfig = new ActionConfig.Builder("", "", "") - .addResultConfigs(results).build(); - - ServletRedirectResult result = new ServletRedirectResult(); - result.setLocation("/myNamespace/myAction.action"); - result.setParse(true); - result.setEncode(false); - result.setPrependServletContext(false); - result.setUrlHelper(new DefaultUrlHelper()); - result.setSuppressEmptyParameters(true); - - IMocksControl control = createControl(); - ActionProxy mockActionProxy = control.createMock(ActionProxy.class); - ActionInvocation mockInvocation = control.createMock(ActionInvocation.class); - - ValueStack mockValueStack = control.createMock(ValueStack.class); - Map<String, Object> mockContext = new HashMap<String, Object>(); - mockContext.put(ActionContext.CONTAINER, container); - - expect(mockInvocation.getStack()).andReturn(mockValueStack); - expect(mockValueStack.getContext()).andReturn(mockContext); - - expect(mockInvocation.getStack()).andReturn(mockValueStack); - - expect(mockValueStack.findValue("list")).andReturn(paramValues); // no asType !!! - - expect(mockInvocation.getProxy()).andReturn(mockActionProxy); - expect(mockInvocation.getResultCode()).andReturn("myResult"); - expect(mockActionProxy.getConfig()).andReturn(actionConfig); - expect(mockInvocation.getInvocationContext()).andReturn(context); - - expect(mockValueStack.getContext()).andReturn(mockContext); - - control.replay(); - result.setActionMapper(container.getInstance(ActionMapper.class)); - result.execute(mockInvocation); - assertEquals("/myNamespace/myAction.action?param=value+1¶m=value+2", res.getRedirectedUrl()); - control.verify(); - } - - protected void setUp() throws Exception { - super.setUp(); - configurationManager.getConfiguration(). - addPackageConfig("foo", new PackageConfig.Builder("foo").namespace("/namespace").build()); - - view = new ServletRedirectResult(); - container.inject(view); - - responseMock = new Mock(HttpServletResponse.class); - - requestMock = new Mock(HttpServletRequest.class); - requestMock.matchAndReturn("getContextPath", "/context"); - - ResultConfig resultConfig = new ResultConfig.Builder("", "").build(); - - Map<String, ResultConfig> results= new HashMap<String, ResultConfig>(); - results.put("myResult", resultConfig); - - ActionConfig actionConfig = new ActionConfig.Builder("", "", "") - .addResultConfigs(results).build(); - - ActionContext ac = new ActionContext(Ognl.createDefaultContext(null)); - ac.put(ServletActionContext.HTTP_REQUEST, requestMock.proxy()); - ac.put(ServletActionContext.HTTP_RESPONSE, responseMock.proxy()); - MockActionInvocation ai = new MockActionInvocation(); - ai.setInvocationContext(ac); - ai.setResultCode("myResult"); - ActionProxy mockActionProxy = createNiceMock(ActionProxy.class); - ai.setProxy(mockActionProxy); - expect(mockActionProxy.getConfig()).andReturn(actionConfig).anyTimes(); - replay(mockActionProxy); - this.ai = ai; - ai.setStack(ActionContext.getContext().getValueStack()); - } -} http://git-wip-us.apache.org/repos/asf/struts/blob/6bc99ab9/core/src/test/java/org/apache/struts2/dispatcher/StreamResultTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/struts2/dispatcher/StreamResultTest.java b/core/src/test/java/org/apache/struts2/dispatcher/StreamResultTest.java deleted file mode 100644 index 147823d..0000000 --- a/core/src/test/java/org/apache/struts2/dispatcher/StreamResultTest.java +++ /dev/null @@ -1,277 +0,0 @@ -/* - * $Id$ - * - * 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.dispatcher; - -import com.opensymphony.xwork2.Action; -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.mock.MockActionInvocation; -import com.opensymphony.xwork2.util.ClassLoaderUtil; -import com.opensymphony.xwork2.util.ValueStack; -import org.apache.struts2.ServletActionContext; -import org.apache.struts2.StrutsInternalTestCase; -import org.springframework.mock.web.MockHttpServletResponse; - -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStream; -import java.net.URI; -import java.net.URL; - -/** - * Unit test for {@link StreamResult}. - * - */ -public class StreamResultTest extends StrutsInternalTestCase { - - private StreamResult result; - private MockHttpServletResponse response; - - private MockActionInvocation mai; - private ValueStack stack; - private int contentLength = 0; - - public void testStreamResultNoInputName() throws Exception { - result.setParse(false); - result.setInputName(null); - - try { - result.doExecute("helloworld", mai); - fail("Should have thrown an IllegalArgumentException"); - } catch (IllegalArgumentException e) { - // success - } - } - - public void testStreamResultParseNoInputName() throws Exception { - result.setParse(true); - result.setInputName("${top}"); - - try { - result.doExecute("helloworld", mai); - fail("Should have thrown an IllegalArgumentException"); - } catch (IllegalArgumentException e) { - // success - } - } - - public void testStreamResultDefault() throws Exception { - result.setInputName("streamForImage"); - - result.doExecute("helloworld", mai); - - assertEquals(String.valueOf(contentLength), result.getContentLength()); - assertEquals("text/plain", result.getContentType()); - assertEquals("streamForImage", result.getInputName()); - assertEquals(1024, result.getBufferSize()); // 1024 is default - assertEquals("inline", result.getContentDisposition()); - - assertEquals("text/plain", response.getContentType()); - assertEquals(contentLength, response.getContentLength()); - assertEquals("inline", response.getHeader("Content-disposition")); - } - - public void testStreamResultWithCharSet() throws Exception { - result.setInputName("streamForImage"); - result.setContentCharSet("ISO-8859-1"); - result.doExecute("helloworld", mai); - - assertEquals(String.valueOf(contentLength), result.getContentLength()); - assertEquals("text/plain", result.getContentType()); - assertEquals("streamForImage", result.getInputName()); - assertEquals(1024, result.getBufferSize()); // 1024 is default - assertEquals("inline", result.getContentDisposition()); - assertEquals("text/plain;charset=ISO-8859-1", response.getContentType()); - assertEquals(contentLength, response.getContentLength()); - assertEquals("inline", response.getHeader("Content-disposition")); - } - - public void testStreamResultWithCharSet2() throws Exception { - result.setParse(true); - result.setInputName("streamForImage"); - result.setContentCharSet("${contentCharSetMethod}"); - - result.doExecute("helloworld", mai); - - assertEquals(String.valueOf(contentLength), result.getContentLength()); - assertEquals("text/plain", result.getContentType()); - assertEquals("streamForImage", result.getInputName()); - assertEquals(1024, result.getBufferSize()); // 1024 is default - assertEquals("inline", result.getContentDisposition()); - assertEquals("text/plain;charset=UTF-8", response.getContentType()); - assertEquals(contentLength, response.getContentLength()); - assertEquals("inline", response.getHeader("Content-disposition")); - } - - public void testAllowCacheDefault() throws Exception { - result.setInputName("streamForImage"); - - result.doExecute("helloworld", mai); - - //check that that headers are not set by default - assertNull(response.getHeader("Pragma")); - assertNull(response.getHeader("Cache-Control")); - } - - public void testAllowCacheFalse() throws Exception { - result.setInputName("streamForImage"); - result.setAllowCaching(false); - result.doExecute("helloworld", mai); - - //check that that headers are not set by default - assertEquals("no-cache", response.getHeader("Pragma")); - assertEquals("no-cache", response.getHeader("Cache-Control")); - } - - public void testStreamResultNoDefault() throws Exception { - // it's not easy to test using easymock as we use getOutputStream on HttpServletResponse. - result.setParse(false); - result.setInputName("streamForImage"); - result.setBufferSize(128); - result.setContentLength(String.valueOf(contentLength)); - result.setContentDisposition("filename=\"logo.png\""); - result.setContentType("image/jpeg"); - - result.doExecute("helloworld", mai); - - assertEquals(String.valueOf(contentLength), result.getContentLength()); - assertEquals("image/jpeg", result.getContentType()); - assertEquals("streamForImage", result.getInputName()); - assertEquals(128, result.getBufferSize()); - assertEquals("filename=\"logo.png\"", result.getContentDisposition()); - - assertEquals("image/jpeg", response.getContentType()); - assertEquals(contentLength, response.getContentLength()); - assertEquals("filename=\"logo.png\"", response.getHeader("Content-disposition")); - } - - public void testStreamResultParse1() throws Exception { - /////////////////// - result.setParse(true); - // ${...} conditionalParse of Result, returns String, - // which gets evaluated to the stack, that's how it works. - // We use ${streamForImageAsString} that returns "streamForImage" - // which is a property that returns an InputStream object. - result.setInputName("${streamForImageAsString}"); - result.setBufferSize(128); - result.setContentLength(String.valueOf(contentLength)); - result.setContentDisposition("filename=\"logo.png\""); - result.setContentType("image/jpeg"); - - result.doExecute("helloworld", mai); - - assertEquals(String.valueOf(contentLength), result.getContentLength()); - assertEquals("image/jpeg", result.getContentType()); - assertEquals("${streamForImageAsString}", result.getInputName()); - assertEquals(128, result.getBufferSize()); - assertEquals("filename=\"logo.png\"", result.getContentDisposition()); - - assertEquals("image/jpeg", response.getContentType()); - assertEquals(contentLength, response.getContentLength()); - assertEquals("filename=\"logo.png\"", response.getHeader("Content-disposition")); - } - - public void testStreamResultParse2() throws Exception { - /////////////////// - result.setParse(true); - // This time we dun use ${...}, so streamForImage will - // be evaluated to the stack, which should reaturn an - // InputStream object, cause there's such a property in - // the action object itself. - result.setInputName("streamForImage"); - result.setBufferSize(128); - result.setContentLength(String.valueOf(contentLength)); - result.setContentDisposition("filename=\"logo.png\""); - result.setContentType("image/jpeg"); - - result.doExecute("helloworld", mai); - - assertEquals(String.valueOf(contentLength), result.getContentLength()); - assertEquals("image/jpeg", result.getContentType()); - assertEquals("streamForImage", result.getInputName()); - assertEquals(128, result.getBufferSize()); - assertEquals("filename=\"logo.png\"", result.getContentDisposition()); - - assertEquals("image/jpeg", response.getContentType()); - assertEquals(contentLength, response.getContentLength()); - assertEquals("filename=\"logo.png\"", response.getHeader("Content-disposition")); - } - - protected void setUp() throws Exception { - super.setUp(); - response = new MockHttpServletResponse(); - - result = new StreamResult(); - stack = ActionContext.getContext().getValueStack(); - - MyImageAction action = new MyImageAction(); - contentLength = (int) action.getContentLength(); - - mai = new com.opensymphony.xwork2.mock.MockActionInvocation(); - mai.setAction(action); - mai.setStack(stack); - mai.setInvocationContext(ActionContext.getContext()); - stack.push(action); - - ActionContext.getContext().put(ServletActionContext.HTTP_RESPONSE, response); - } - - - - protected void tearDown() throws Exception { - super.tearDown(); - response = null; - result = null; - stack = null; - contentLength = 0; - mai = null; - } - - public class MyImageAction implements Action { - - public InputStream getStreamForImage() throws Exception { - // just use src/test/log4j2.xml as test file - URL url = ClassLoaderUtil.getResource("log4j2.xml", StreamResultTest.class); - File file = new File(new URI(url.toString())); - FileInputStream fis = new FileInputStream(file); - return fis; - } - - public String execute() throws Exception { - return SUCCESS; - } - - public long getContentLength() throws Exception { - URL url = ClassLoaderUtil.getResource("log4j2.xml", StreamResultTest.class); - File file = new File(new URI(url.toString())); - return file.length(); - } - - public String getStreamForImageAsString() { - return "streamForImage"; - } - - public String getContentCharSetMethod() { - return "UTF-8"; - } - } - -} http://git-wip-us.apache.org/repos/asf/struts/blob/6bc99ab9/core/src/test/java/org/apache/struts2/dispatcher/StrutsResultSupportTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/struts2/dispatcher/StrutsResultSupportTest.java b/core/src/test/java/org/apache/struts2/dispatcher/StrutsResultSupportTest.java deleted file mode 100644 index cc4bf6c..0000000 --- a/core/src/test/java/org/apache/struts2/dispatcher/StrutsResultSupportTest.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * $Id$ - * - * 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.dispatcher; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import org.apache.struts2.StrutsInternalTestCase; -import org.easymock.EasyMock; - -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.ActionInvocation; -import com.opensymphony.xwork2.ActionSupport; -import com.opensymphony.xwork2.util.ValueStack; - -/** - * Test case for StrutsResultSupport. - */ -public class StrutsResultSupportTest extends StrutsInternalTestCase { - - - public void testParse() throws Exception { - ValueStack stack = ActionContext.getContext().getValueStack(); - stack.push(new ActionSupport() { - public String getMyLocation() { - return "ThisIsMyLocation"; - } - }); - - ActionInvocation mockActionInvocation = EasyMock.createNiceMock(ActionInvocation.class); - mockActionInvocation.getStack(); - EasyMock.expectLastCall().andReturn(stack); - EasyMock.replay(mockActionInvocation); - - InternalStrutsResultSupport result = new InternalStrutsResultSupport(); - result.setParse(true); - result.setEncode(false); - result.setLocation("/pages/myJsp.jsp?location=${myLocation}"); - - result.execute(mockActionInvocation); - - assertNotNull(result.getInternalLocation()); - assertEquals("/pages/myJsp.jsp?location=ThisIsMyLocation", result.getInternalLocation()); - EasyMock.verify(mockActionInvocation); - } - - public void testParseAndEncode() throws Exception { - ValueStack stack = ActionContext.getContext().getValueStack(); - stack.push(new ActionSupport() { - public String getMyLocation() { - return "/myPage?param=value¶m1=value1"; - } - }); - - ActionInvocation mockActionInvocation = EasyMock.createNiceMock(ActionInvocation.class); - mockActionInvocation.getStack(); - EasyMock.expectLastCall().andReturn(stack); - EasyMock.replay(mockActionInvocation); - - InternalStrutsResultSupport result = new InternalStrutsResultSupport(); - result.setParse(true); - result.setEncode(true); - result.setLocation("/pages/myJsp.jsp?location=${myLocation}"); - - result.execute(mockActionInvocation); - - assertNotNull(result.getInternalLocation()); - assertEquals("/pages/myJsp.jsp?location=%2FmyPage%3Fparam%3Dvalue%26param1%3Dvalue1", result.getInternalLocation()); - EasyMock.verify(mockActionInvocation); - } - - - public void testNoParseAndEncode() throws Exception { - ValueStack stack = ActionContext.getContext().getValueStack(); - stack.push(new ActionSupport() { - public String getMyLocation() { - return "myLocation.jsp"; - } - }); - - ActionInvocation mockActionInvocation = EasyMock.createNiceMock(ActionInvocation.class); - EasyMock.replay(mockActionInvocation); - - InternalStrutsResultSupport result = new InternalStrutsResultSupport(); - result.setParse(false); - result.setEncode(false); // don't really need this, as encode is only valid when parse is true. - result.setLocation("/pages/myJsp.jsp?location=${myLocation}"); - - result.execute(mockActionInvocation); - - assertNotNull(result.getInternalLocation()); - assertEquals("/pages/myJsp.jsp?location=${myLocation}", result.getInternalLocation()); - EasyMock.verify(mockActionInvocation); - } - - public void testConditionalParseCollection() throws Exception { - ValueStack stack = ActionContext.getContext().getValueStack(); - stack.push(new ActionSupport() { - public List<String> getList() { - return new ArrayList<String>(){{ - add("val 1"); - add("val 2"); - }}; - } - }); - - ActionInvocation mockActionInvocation = EasyMock.createNiceMock(ActionInvocation.class); - mockActionInvocation.getStack(); - EasyMock.expectLastCall().andReturn(stack); - EasyMock.replay(mockActionInvocation); - - InternalStrutsResultSupport result = new InternalStrutsResultSupport(); - result.setParse(true); - result.setEncode(true); - - Collection<String> collection = result.conditionalParseCollection("${list}", mockActionInvocation, true); - - assertNotNull(collection); - assertEquals(2, collection.size()); - assertTrue(collection.contains("val+1")); - assertTrue(collection.contains("val+2")); - EasyMock.verify(mockActionInvocation); - } - - public static class InternalStrutsResultSupport extends StrutsResultSupport { - private String _internalLocation = null; - - protected void doExecute(String finalLocation, ActionInvocation invocation) throws Exception { - _internalLocation = finalLocation; - } - - public String getInternalLocation() { - return _internalLocation; - } - } -} http://git-wip-us.apache.org/repos/asf/struts/blob/6bc99ab9/core/src/test/java/org/apache/struts2/dispatcher/VelocityResultTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/struts2/dispatcher/VelocityResultTest.java b/core/src/test/java/org/apache/struts2/dispatcher/VelocityResultTest.java deleted file mode 100644 index 383e2c7..0000000 --- a/core/src/test/java/org/apache/struts2/dispatcher/VelocityResultTest.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * $Id$ - * - * 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.dispatcher; - -import org.apache.struts2.StrutsInternalTestCase; -import org.apache.velocity.Template; -import org.apache.velocity.app.VelocityEngine; -import org.apache.velocity.exception.ParseErrorException; -import org.apache.velocity.exception.ResourceNotFoundException; - -import com.mockobjects.dynamic.Mock; -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.ActionInvocation; -import com.opensymphony.xwork2.ActionProxy; -import com.opensymphony.xwork2.util.ValueStack; - - -/** - * - */ -public class VelocityResultTest extends StrutsInternalTestCase { - - ActionInvocation actionInvocation; - Mock mockActionProxy; - ValueStack stack; - String namespace; - TestVelocityEngine velocity; - VelocityResult result; - - - public void testCanResolveLocationUsingOgnl() throws Exception { - TestResult result = new TestResult(); - - String location = "/myaction.action"; - Bean bean = new Bean(); - bean.setLocation(location); - - ValueStack stack = ActionContext.getContext().getValueStack(); - stack.push(bean); - - assertEquals(location, stack.findValue("location")); - - result.setLocation("${location}"); - result.execute(actionInvocation); - assertEquals(location, result.finalLocation); - } - - public void testCanResolveLocationUsingStaticExpression() throws Exception { - TestResult result = new TestResult(); - String location = "/any.action"; - result.setLocation("${'" + location + "'}"); - result.execute(actionInvocation); - assertEquals(location, result.finalLocation); - } - - public void testResourcesFoundUsingAbsolutePath() throws Exception { - String location = "/WEB-INF/views/registration.vm"; - - Template template = result.getTemplate(stack, velocity, actionInvocation, location, "UTF-8"); - assertNotNull(template); - assertEquals("expect absolute locations to be handled as is", location, velocity.templateName); - } - - public void testResourcesFoundUsingNames() throws Exception { - String location = "Registration.vm"; - String expectedTemplateName = namespace + "/" + location; - - Template template = result.getTemplate(stack, velocity, actionInvocation, location, "UTF-8"); - assertNotNull(template); - assertEquals("expect the prefix to be appended to the path when the location is not absolute", expectedTemplateName, velocity.templateName); - } - - protected void setUp() throws Exception { - super.setUp(); - namespace = "/html"; - result = new VelocityResult(); - stack = ActionContext.getContext().getValueStack(); - ActionContext.getContext().setValueStack(stack); - velocity = new TestVelocityEngine(); - mockActionProxy = new Mock(ActionProxy.class); - mockActionProxy.expectAndReturn("getNamespace", "/html"); - - Mock mockActionInvocation = new Mock(ActionInvocation.class); - mockActionInvocation.expectAndReturn("getProxy", mockActionProxy.proxy()); - mockActionInvocation.expectAndReturn("getStack", stack); - actionInvocation = (ActionInvocation) mockActionInvocation.proxy(); - } - - - class Bean { - private String location; - - public void setLocation(String location) { - this.location = location; - } - - public String getLocation() { - return location; - } - } - - class TestResult extends StrutsResultSupport { - - private static final long serialVersionUID = -1512206785088317315L; - - public String finalLocation; - - protected void doExecute(String finalLocation, ActionInvocation invocation) throws Exception { - this.finalLocation = finalLocation; - } - } - - class TestVelocityEngine extends VelocityEngine { - public String templateName; - - public Template getTemplate(String templateName) throws ResourceNotFoundException, ParseErrorException, Exception { - this.templateName = templateName; - - return new Template(); - } - - public Template getTemplate(String templateName, String charSet) throws ResourceNotFoundException, ParseErrorException, Exception { - this.templateName = templateName; - - return new Template(); - } - } -} http://git-wip-us.apache.org/repos/asf/struts/blob/6bc99ab9/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java b/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java index 29bf8ad..4314672 100644 --- a/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java +++ b/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java @@ -31,7 +31,7 @@ import com.opensymphony.xwork2.config.entities.PackageConfig; import com.opensymphony.xwork2.config.impl.DefaultConfiguration; import org.apache.struts2.ServletActionContext; import org.apache.struts2.StrutsInternalTestCase; -import org.apache.struts2.dispatcher.StrutsResultSupport; +import org.apache.struts2.result.StrutsResultSupport; import org.apache.struts2.views.jsp.StrutsMockHttpServletRequest; import java.util.Arrays; http://git-wip-us.apache.org/repos/asf/struts/blob/6bc99ab9/core/src/test/java/org/apache/struts2/interceptor/MessageStoreInterceptorTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/struts2/interceptor/MessageStoreInterceptorTest.java b/core/src/test/java/org/apache/struts2/interceptor/MessageStoreInterceptorTest.java index 3ba76c2..a419a18 100644 --- a/core/src/test/java/org/apache/struts2/interceptor/MessageStoreInterceptorTest.java +++ b/core/src/test/java/org/apache/struts2/interceptor/MessageStoreInterceptorTest.java @@ -28,7 +28,7 @@ import java.util.List; import java.util.Map; import org.apache.struts2.StrutsInternalTestCase; -import org.apache.struts2.dispatcher.ServletActionRedirectResult; +import org.apache.struts2.result.ServletActionRedirectResult; import org.easymock.EasyMock; import com.opensymphony.xwork2.Action; http://git-wip-us.apache.org/repos/asf/struts/blob/6bc99ab9/core/src/test/java/org/apache/struts2/result/HttpHeaderResultTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/struts2/result/HttpHeaderResultTest.java b/core/src/test/java/org/apache/struts2/result/HttpHeaderResultTest.java new file mode 100644 index 0000000..85849f1 --- /dev/null +++ b/core/src/test/java/org/apache/struts2/result/HttpHeaderResultTest.java @@ -0,0 +1,134 @@ +/* + * $Id$ + * + * 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.result; + +import com.mockobjects.dynamic.C; +import com.mockobjects.dynamic.Mock; +import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.ActionInvocation; +import com.opensymphony.xwork2.util.reflection.ReflectionProvider; +import org.apache.struts2.ServletActionContext; +import org.apache.struts2.StrutsInternalTestCase; +import org.apache.struts2.result.HttpHeaderResult; + +import javax.servlet.http.HttpServletResponse; +import java.util.HashMap; +import java.util.Map; + +/** + * HttpHeaderResultTest + */ +public class HttpHeaderResultTest extends StrutsInternalTestCase { + + ActionInvocation invocation; + HttpHeaderResult result; + HttpServletResponse response; + Mock responseMock; + ReflectionProvider reflectionProvider; + + public void testHeaderValuesAreNotParsedWhenParseIsFalse() throws Exception { + Map<String, String> params = new HashMap<String, String>(); + params.put("headers.foo", "${bar}"); + params.put("headers.baz", "baz"); + + Map<String, String> values = new HashMap<String, String>(); + values.put("bar", "abc"); + ActionContext.getContext().getValueStack().push(values); + + reflectionProvider.setProperties(params, result); + + responseMock.expect("addHeader", C.args(C.eq("foo"), C.eq("${bar}"))); + responseMock.expect("addHeader", C.args(C.eq("baz"), C.eq("baz"))); + result.setParse(false); + result.execute(invocation); + responseMock.verify(); + } + + public void testHeaderValuesAreParsedAndSet() throws Exception { + Map<String, String> params = new HashMap<String, String>(); + params.put("headers.foo", "${bar}"); + params.put("headers.baz", "baz"); + + Map<String, String> values = new HashMap<String, String>(); + values.put("bar", "abc"); + ActionContext.getContext().getValueStack().push(values); + + reflectionProvider.setProperties(params, result); + + responseMock.expect("addHeader", C.args(C.eq("foo"), C.eq("abc"))); + responseMock.expect("addHeader", C.args(C.eq("baz"), C.eq("baz"))); + result.execute(invocation); + responseMock.verify(); + } + + public void testErrorMessageIsParsedAndSet() throws Exception { + ActionContext.getContext().getValueStack().set("errMsg", "abc"); + ActionContext.getContext().getValueStack().set("errCode", "404"); + result.setError("${errCode}"); + result.setErrorMessage("${errMsg}"); + + responseMock.expect("sendError", C.args(C.eq(404), C.eq("abc"))); + result.execute(invocation); + responseMock.verify(); + } + + public void testErrorMessageIsNotParsedAndSet() throws Exception { + ActionContext.getContext().getValueStack().set("errMsg", "abc"); + result.setError("404"); + result.setParse(false); + result.setErrorMessage("${errMsg}"); + + responseMock.expect("sendError", C.args(C.eq(404), C.eq("${errMsg}"))); + result.execute(invocation); + responseMock.verify(); + } + + public void testStatusIsSet() throws Exception { + responseMock.expect("setStatus", C.eq(123)); + result.setStatus(123); + result.execute(invocation); + responseMock.verify(); + } + + public void testErrorIsSet() throws Exception { + responseMock.expect("sendError", C.eq(404)); + result.setError("404"); + result.execute(invocation); + responseMock.verify(); + } + + protected void setUp() throws Exception { + super.setUp(); + result = new HttpHeaderResult(); + responseMock = new Mock(HttpServletResponse.class); + response = (HttpServletResponse) responseMock.proxy(); + invocation = (ActionInvocation) new Mock(ActionInvocation.class).proxy(); + reflectionProvider = container.getInstance(ReflectionProvider.class); + ServletActionContext.setResponse(response); + } + + protected void tearDown() throws Exception { + super.tearDown(); + ActionContext.setContext(null); + } + +} http://git-wip-us.apache.org/repos/asf/struts/blob/6bc99ab9/core/src/test/java/org/apache/struts2/result/PlainTextResultTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/struts2/result/PlainTextResultTest.java b/core/src/test/java/org/apache/struts2/result/PlainTextResultTest.java new file mode 100644 index 0000000..faa631f --- /dev/null +++ b/core/src/test/java/org/apache/struts2/result/PlainTextResultTest.java @@ -0,0 +1,156 @@ +/* + * $Id$ + * + * 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.result; + +import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.mock.MockActionInvocation; +import com.opensymphony.xwork2.util.ClassLoaderUtil; +import com.opensymphony.xwork2.util.ValueStack; +import org.apache.struts2.StrutsStatics; +import org.apache.struts2.StrutsInternalTestCase; +import org.apache.struts2.views.jsp.AbstractUITagTest; +import org.apache.struts2.views.jsp.StrutsMockHttpServletResponse; +import org.apache.struts2.views.jsp.StrutsMockServletContext; + +import java.io.InputStream; +import java.io.PrintWriter; +import java.io.StringWriter; + +/** + * Test case for PlainTextResult. + * + */ +public class PlainTextResultTest extends StrutsInternalTestCase { + + ValueStack stack; + MockActionInvocation invocation; + ActionContext context; + StrutsMockHttpServletResponse response; + PrintWriter writer; + StringWriter stringWriter; + StrutsMockServletContext servletContext; + + + public void testPlainText() throws Exception { + PlainTextResult result = new PlainTextResult(); + result.setLocation("/someJspFile.jsp"); + + response.setExpectedContentType("text/plain"); + response.setExpectedHeader("Content-Disposition", "inline"); + + try (InputStream jspResourceInputStream = + ClassLoaderUtil.getResourceAsStream( + "org/apache/struts2/dispatcher/someJspFile.jsp", + PlainTextResultTest.class)) { + servletContext.setResourceAsStream(jspResourceInputStream); + result.execute(invocation); + + String r = AbstractUITagTest.normalize(stringWriter.getBuffer().toString(), true); + String e = AbstractUITagTest.normalize( + readAsString("org/apache/struts2/dispatcher/someJspFile.jsp"), true); + assertEquals(r, e); + } + } + + public void testPlainTextWithoutSlash() throws Exception { + PlainTextResult result = new PlainTextResult(); + result.setLocation("someJspFile.jsp"); + + response.setExpectedContentType("text/plain"); + response.setExpectedHeader("Content-Disposition", "inline"); + + try (InputStream jspResourceInputStream = + ClassLoaderUtil.getResourceAsStream("org/apache/struts2/dispatcher/someJspFile.jsp", PlainTextResultTest.class)) { + servletContext.setResourceAsStream(jspResourceInputStream); + result.execute(invocation); + + String r = AbstractUITagTest.normalize(stringWriter.getBuffer().toString(), true); + String e = AbstractUITagTest.normalize(readAsString("org/apache/struts2/dispatcher/someJspFile.jsp"), true); + assertEquals(r, e); + } + } + + public void testPlainTextWithEncoding() throws Exception { + PlainTextResult result = new PlainTextResult(); + result.setLocation("/someJspFile.jsp"); + result.setCharSet("UTF-8"); + + response.setExpectedContentType("text/plain; charset=UTF-8"); + response.setExpectedHeader("Content-Disposition", "inline"); + + try (InputStream jspResourceInputStream = + ClassLoaderUtil.getResourceAsStream( + "org/apache/struts2/dispatcher/someJspFile.jsp", + PlainTextResultTest.class)) { + servletContext.setResourceAsStream(jspResourceInputStream); + result.execute(invocation); + + String r = AbstractUITagTest.normalize(stringWriter.getBuffer().toString(), true); + String e = AbstractUITagTest.normalize( + readAsString("org/apache/struts2/dispatcher/someJspFile.jsp"), true); + assertEquals(r, e); + } + } + + protected String readAsString(String resource) throws Exception { + try (InputStream is = ClassLoaderUtil.getResourceAsStream(resource, PlainTextResultTest.class)) { + int sizeRead = 0; + byte[] buffer = new byte[1024]; + StringBuilder stringBuilder = new StringBuilder(); + while((sizeRead = is.read(buffer)) != -1) { + stringBuilder.append(new String(buffer, 0, sizeRead)); + } + return stringBuilder.toString(); + } + } + + + protected void setUp() throws Exception { + super.setUp(); + + stringWriter = new StringWriter(); + writer = new PrintWriter(stringWriter); + response = new StrutsMockHttpServletResponse(); + response.setWriter(writer); + servletContext = new StrutsMockServletContext(); + stack = ActionContext.getContext().getValueStack(); + context = new ActionContext(stack.getContext()); + context.put(StrutsStatics.HTTP_RESPONSE, response); + context.put(StrutsStatics.SERVLET_CONTEXT, servletContext); + invocation = new MockActionInvocation(); + invocation.setStack(stack); + invocation.setInvocationContext(context); + } + + + protected void tearDown() throws Exception { + stack = null; + invocation = null; + context = null; + response = null; + writer = null; + stringWriter = null; + servletContext = null; + + super.tearDown(); + } +} http://git-wip-us.apache.org/repos/asf/struts/blob/6bc99ab9/core/src/test/java/org/apache/struts2/result/ServletActionRedirectResultTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/struts2/result/ServletActionRedirectResultTest.java b/core/src/test/java/org/apache/struts2/result/ServletActionRedirectResultTest.java new file mode 100644 index 0000000..2bea0a1 --- /dev/null +++ b/core/src/test/java/org/apache/struts2/result/ServletActionRedirectResultTest.java @@ -0,0 +1,189 @@ +/* + * $Id$ + * + * 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.result; + +import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.ActionInvocation; +import com.opensymphony.xwork2.ActionProxy; +import com.opensymphony.xwork2.ObjectFactory; +import com.opensymphony.xwork2.config.entities.ActionConfig; +import com.opensymphony.xwork2.config.entities.ResultConfig; +import com.opensymphony.xwork2.util.ValueStack; +import org.apache.struts2.ServletActionContext; +import org.apache.struts2.StrutsInternalTestCase; +import org.apache.struts2.dispatcher.mapper.ActionMapper; +import org.apache.struts2.result.ServletActionRedirectResult; +import org.apache.struts2.views.util.DefaultUrlHelper; +import org.easymock.IMocksControl; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.mock.web.MockHttpServletResponse; + +import java.util.HashMap; +import java.util.Map; + +import static org.easymock.EasyMock.createControl; +import static org.easymock.EasyMock.expect; + + +/** + * @version $Date$ $Id$ + */ +public class ServletActionRedirectResultTest extends StrutsInternalTestCase { + + public void testIncludeParameterInResultWithConditionParseOn() throws Exception { + + ResultConfig resultConfig = new ResultConfig.Builder("", "") + .addParam("actionName", "someActionName") + .addParam("namespace", "someNamespace") + .addParam("encode", "true") + .addParam("parse", "true") + .addParam("location", "someLocation") + .addParam("prependServletContext", "true") + .addParam("method", "someMethod") + .addParam("statusCode", "333") + .addParam("param1", "${#value1}") + .addParam("param2", "${#value2}") + .addParam("param3", "${#value3}") + .addParam("anchor", "${#fragment}") + .build(); + + + + ActionContext context = ActionContext.getContext(); + ValueStack stack = context.getValueStack(); + context.getContextMap().put("value1", "value 1"); + context.getContextMap().put("value2", "value 2"); + context.getContextMap().put("value3", "value 3"); + MockHttpServletRequest req = new MockHttpServletRequest(); + MockHttpServletResponse res = new MockHttpServletResponse(); + context.put(ServletActionContext.HTTP_REQUEST, req); + context.put(ServletActionContext.HTTP_RESPONSE, res); + + + Map<String, ResultConfig> results= new HashMap<String, ResultConfig>(); + results.put("myResult", resultConfig); + + ActionConfig actionConfig = new ActionConfig.Builder("", "", "") + .addResultConfigs(results).build(); + + ServletActionRedirectResult result = new ServletActionRedirectResult(); + result.setActionName("myAction"); + result.setNamespace("/myNamespace"); + result.setParse(true); + result.setEncode(false); + result.setPrependServletContext(false); + result.setAnchor("fragment"); + result.setUrlHelper(new DefaultUrlHelper()); + + IMocksControl control = createControl(); + ActionProxy mockActionProxy = control.createMock(ActionProxy.class); + ActionInvocation mockInvocation = control.createMock(ActionInvocation.class); + expect(mockInvocation.getProxy()).andReturn(mockActionProxy); + expect(mockInvocation.getResultCode()).andReturn("myResult"); + expect(mockActionProxy.getConfig()).andReturn(actionConfig); + expect(mockInvocation.getInvocationContext()).andReturn(context); + expect(mockInvocation.getStack()).andReturn(stack).anyTimes(); + + control.replay(); + result.setActionMapper(container.getInstance(ActionMapper.class)); + result.execute(mockInvocation); + assertEquals("/myNamespace/myAction.action?param1=value+1¶m2=value+2¶m3=value+3#fragment", res.getRedirectedUrl()); + + control.verify(); + } + + public void testIncludeParameterInResult() throws Exception { + + ResultConfig resultConfig = new ResultConfig.Builder("", "") + .addParam("actionName", "someActionName") + .addParam("namespace", "someNamespace") + .addParam("encode", "true") + .addParam("parse", "true") + .addParam("location", "someLocation") + .addParam("prependServletContext", "true") + .addParam("method", "someMethod") + .addParam("param1", "value 1") + .addParam("param2", "value 2") + .addParam("param3", "value 3") + .addParam("anchor", "fragment") + .build(); + + ActionContext context = ActionContext.getContext(); + MockHttpServletRequest req = new MockHttpServletRequest(); + MockHttpServletResponse res = new MockHttpServletResponse(); + context.put(ServletActionContext.HTTP_REQUEST, req); + context.put(ServletActionContext.HTTP_RESPONSE, res); + + + Map<String, ResultConfig> results= new HashMap<String, ResultConfig>(); + results.put("myResult", resultConfig); + + ActionConfig actionConfig = new ActionConfig.Builder("", "", "") + .addResultConfigs(results).build(); + + ServletActionRedirectResult result = new ServletActionRedirectResult(); + result.setActionName("myAction"); + result.setNamespace("/myNamespace"); + result.setParse(false); + result.setEncode(false); + result.setPrependServletContext(false); + result.setAnchor("fragment"); + result.setUrlHelper(new DefaultUrlHelper()); + + IMocksControl control = createControl(); + ActionProxy mockActionProxy = control.createMock(ActionProxy.class); + ActionInvocation mockInvocation = control.createMock(ActionInvocation.class); + expect(mockInvocation.getProxy()).andReturn(mockActionProxy); + expect(mockInvocation.getResultCode()).andReturn("myResult"); + expect(mockActionProxy.getConfig()).andReturn(actionConfig); + expect(mockInvocation.getInvocationContext()).andReturn(context); + + control.replay(); + result.setActionMapper(container.getInstance(ActionMapper.class)); + result.execute(mockInvocation); + assertEquals("/myNamespace/myAction.action?param1=value+1¶m2=value+2¶m3=value+3#fragment", res.getRedirectedUrl()); + + control.verify(); + } + + public void testBuildResultWithParameter() throws Exception { + + ResultConfig resultConfig = new ResultConfig.Builder("", ServletActionRedirectResult.class.getName()) + .addParam("actionName", "someActionName") + .addParam("namespace", "someNamespace") + .addParam("encode", "true") + .addParam("parse", "true") + .addParam("location", "someLocation") + .addParam("prependServletContext", "true") + .addParam("method", "someMethod") + .addParam("param1", "value 1") + .addParam("param2", "value 2") + .addParam("param3", "value 3") + .addParam("anchor", "fragment") + .build(); + + ObjectFactory factory = container.getInstance(ObjectFactory.class); + ServletActionRedirectResult result = (ServletActionRedirectResult) factory.buildResult(resultConfig, new HashMap<String, Object>()); + assertNotNull(result); + } + +}
