Skip to content

Commit 9516234

Browse files
committed
WW-5486 Simplifies test to avoid using mocks
1 parent 24e6041 commit 9516234

File tree

1 file changed

+43
-77
lines changed

1 file changed

+43
-77
lines changed

core/src/test/java/org/apache/struts2/result/ServletDispatcherResultTest.java

Lines changed: 43 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -18,125 +18,91 @@
1818
*/
1919
package org.apache.struts2.result;
2020

21-
import com.mockobjects.dynamic.C;
22-
import com.mockobjects.dynamic.Mock;
23-
import jakarta.servlet.RequestDispatcher;
24-
import jakarta.servlet.http.HttpServletRequest;
25-
import jakarta.servlet.http.HttpServletResponse;
2621
import org.apache.struts2.ActionContext;
27-
import org.apache.struts2.ServletActionContext;
2822
import org.apache.struts2.StrutsInternalTestCase;
2923
import org.apache.struts2.StrutsStatics;
30-
import org.apache.struts2.dispatcher.DispatcherConstants;
31-
import org.apache.struts2.dispatcher.Parameter;
3224
import org.apache.struts2.mock.MockActionInvocation;
25+
import org.apache.struts2.util.ValueStack;
3326
import org.apache.struts2.util.ValueStackFactory;
34-
35-
import java.util.Map;
27+
import org.springframework.mock.web.MockHttpServletRequest;
28+
import org.springframework.mock.web.MockHttpServletResponse;
3629

3730
public class ServletDispatcherResultTest extends StrutsInternalTestCase implements StrutsStatics {
3831

39-
public void testInclude() {
32+
private MockHttpServletRequest request;
33+
private MockHttpServletResponse response;
34+
private MockActionInvocation invocation;
35+
private ValueStack stack;
36+
37+
public void testForward() {
4038
ServletDispatcherResult view = new ServletDispatcherResult();
4139
view.setLocation("foo.jsp");
4240

43-
Mock dispatcherMock = new Mock(RequestDispatcher.class);
44-
dispatcherMock.expect("include", C.ANY_ARGS);
45-
46-
Mock requestMock = new Mock(HttpServletRequest.class);
47-
requestMock.expectAndReturn("getAttribute", "struts.actiontag.invocation", null);
48-
requestMock.expectAndReturn("getRequestDispatcher", C.args(C.eq("foo.jsp")), dispatcherMock.proxy());
41+
request.setAttribute("struts.actiontag.invocation", null);
42+
request.setAttribute("jakarta.servlet.include.servlet_path", null);
43+
request.setRequestURI("foo.jsp");
4944

50-
Mock responseMock = new Mock(HttpServletResponse.class);
51-
responseMock.expectAndReturn("isCommitted", Boolean.TRUE);
52-
53-
ServletActionContext.setRequest((HttpServletRequest) requestMock.proxy());
54-
ServletActionContext.setResponse((HttpServletResponse) responseMock.proxy());
45+
response.setCommitted(Boolean.FALSE);
5546

5647
try {
57-
view.execute(null);
48+
view.execute(invocation);
5849
} catch (Exception e) {
5950
fail(e.getMessage());
6051
}
6152

62-
dispatcherMock.verify();
63-
requestMock.verify();
64-
dispatcherMock.verify();
53+
assertEquals("foo.jsp", response.getForwardedUrl());
6554
}
6655

67-
public void testSimple() {
56+
public void testInclude() {
6857
ServletDispatcherResult view = new ServletDispatcherResult();
6958
view.setLocation("foo.jsp");
7059

71-
Mock dispatcherMock = new Mock(RequestDispatcher.class);
72-
dispatcherMock.expect("forward", C.ANY_ARGS);
73-
74-
Mock requestMock = new Mock(HttpServletRequest.class);
75-
requestMock.expectAndReturn("getAttribute", "struts.actiontag.invocation", null);
76-
requestMock.expectAndReturn("getAttribute", "jakarta.servlet.include.servlet_path", null);
77-
requestMock.expectAndReturn("getRequestDispatcher", C.args(C.eq("foo.jsp")), dispatcherMock.proxy());
78-
requestMock.expect("setAttribute", C.ANY_ARGS); // this is a bad mock, but it works
79-
requestMock.expect("setAttribute", C.ANY_ARGS); // this is a bad mock, but it works
80-
requestMock.matchAndReturn("getRequestURI", "foo.jsp");
81-
82-
Mock responseMock = new Mock(HttpServletResponse.class);
83-
responseMock.expectAndReturn("isCommitted", Boolean.FALSE);
84-
85-
ServletActionContext.setRequest((HttpServletRequest) requestMock.proxy());
86-
ServletActionContext.setResponse((HttpServletResponse) responseMock.proxy());
60+
request.setAttribute("struts.actiontag.invocation", null);
61+
response.setCommitted(Boolean.TRUE);
62+
request.setRequestURI("foo.jsp");
8763

8864
try {
89-
view.execute(null);
65+
view.execute(invocation);
9066
} catch (Exception e) {
9167
fail(e.getMessage());
9268
}
9369

94-
dispatcherMock.verify();
95-
requestMock.verify();
96-
dispatcherMock.verify();
70+
assertEquals("foo.jsp", response.getIncludedUrl());
9771
}
9872

9973
public void testWithParameter() {
10074
ServletDispatcherResult view = container.inject(ServletDispatcherResult.class);
10175
view.setLocation("foo.jsp?bar=1");
10276

103-
Mock dispatcherMock = new Mock(RequestDispatcher.class);
104-
dispatcherMock.expect("forward", C.ANY_ARGS);
105-
106-
Mock requestMock = new Mock(HttpServletRequest.class);
107-
requestMock.expectAndReturn("getAttribute", "struts.actiontag.invocation", null);
108-
requestMock.expectAndReturn("getAttribute", "jakarta.servlet.include.servlet_path", null);
109-
requestMock.expectAndReturn("getRequestDispatcher", C.args(C.eq("foo.jsp?bar=1")), dispatcherMock.proxy());
110-
requestMock.expect("setAttribute", C.ANY_ARGS); // this is a bad mock, but it works
111-
requestMock.expect("setAttribute", C.ANY_ARGS); // this is a bad mock, but it works
112-
requestMock.matchAndReturn("getRequestURI", "foo.jsp");
113-
114-
Mock responseMock = new Mock(HttpServletResponse.class);
115-
responseMock.expectAndReturn("isCommitted", Boolean.FALSE);
116-
117-
ServletActionContext.setRequest((HttpServletRequest) requestMock.proxy());
118-
ServletActionContext.setResponse((HttpServletResponse) responseMock.proxy());
119-
120-
MockActionInvocation mockActionInvocation = new MockActionInvocation();
121-
mockActionInvocation.setInvocationContext(ActionContext.getContext());
122-
mockActionInvocation.setStack(container.getInstance(ValueStackFactory.class).createValueStack());
123-
12477
try {
125-
view.execute(mockActionInvocation);
78+
view.execute(invocation);
12679
} catch (Exception e) {
12780
fail(e.getMessage());
12881
}
12982

130-
assertTrue(mockActionInvocation.getInvocationContext().getParameters().contains("bar"));
131-
assertEquals("1", mockActionInvocation.getInvocationContext().getParameters().get("bar").getValue());
83+
assertTrue(invocation.getInvocationContext().getParameters().contains("bar"));
84+
assertEquals("1", invocation.getInvocationContext().getParameters().get("bar").getValue());
13285

13386
// See https://issues.apache.org/jira/browse/WW-5486
134-
Map<String, Parameter> contextMap = (Map<String, Parameter>) mockActionInvocation.getInvocationContext().getContextMap().get(DispatcherConstants.PARAMETERS);
135-
assertTrue(contextMap.containsKey("bar"));
136-
assertEquals("1", contextMap.get("bar").getValue());
87+
assertEquals("1", stack.findString("#parameters.bar"));
88+
}
13789

138-
dispatcherMock.verify();
139-
requestMock.verify();
140-
dispatcherMock.verify();
90+
public void setUp() throws Exception {
91+
super.setUp();
92+
invocation = new MockActionInvocation();
93+
request = new MockHttpServletRequest();
94+
response = new MockHttpServletResponse();
95+
stack = container.getInstance(ValueStackFactory.class).createValueStack();
96+
invocation.setStack(stack);
97+
98+
stack.getActionContext()
99+
.withServletRequest(request)
100+
.withServletResponse(response)
101+
.withActionInvocation(invocation)
102+
.withValueStack(stack)
103+
.bind();
104+
105+
invocation.setInvocationContext(ActionContext.getContext());
141106
}
107+
142108
}

0 commit comments

Comments
 (0)