1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.struts2.dispatcher.ng;
22
23 import com.opensymphony.xwork2.ActionContext;
24 import junit.framework.TestCase;
25 import org.apache.struts2.dispatcher.Dispatcher;
26 import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;
27 import org.springframework.mock.web.MockFilterChain;
28 import org.springframework.mock.web.MockFilterConfig;
29 import org.springframework.mock.web.MockHttpServletRequest;
30 import org.springframework.mock.web.MockHttpServletResponse;
31
32 import javax.servlet.ServletException;
33 import javax.servlet.ServletRequest;
34 import javax.servlet.ServletResponse;
35 import java.io.IOException;
36
37 /***
38 * Integration tests for the filter
39 */
40 public class StrutsPrepareAndExecuteFilterIntegrationTest extends TestCase {
41
42 public void test404() throws ServletException, IOException {
43 MockHttpServletRequest request = new MockHttpServletRequest();
44 MockHttpServletResponse response = new MockHttpServletResponse();
45 MockFilterConfig filterConfig = new MockFilterConfig();
46 MockFilterChain filterChain = new MockFilterChain() {
47 @Override
48 public void doFilter(ServletRequest req, ServletResponse res) {
49 fail("Shouldn't get here");
50 }
51 };
52
53 request.setRequestURI("/foo.action");
54 StrutsPrepareAndExecuteFilter filter = new StrutsPrepareAndExecuteFilter();
55 filter.init(filterConfig);
56 filter.doFilter(request, response, filterChain);
57 assertEquals(404, response.getStatus());
58 assertNull(ActionContext.getContext());
59 assertNull(Dispatcher.getInstance());
60 }
61
62 public void test200() throws ServletException, IOException {
63 MockHttpServletRequest request = new MockHttpServletRequest();
64 MockHttpServletResponse response = new MockHttpServletResponse();
65 MockFilterConfig filterConfig = new MockFilterConfig();
66 MockFilterChain filterChain = new MockFilterChain() {
67 @Override
68 public void doFilter(ServletRequest req, ServletResponse res) {
69 fail("Shouldn't get here");
70 }
71 };
72
73 request.setRequestURI("/hello.action");
74 StrutsPrepareAndExecuteFilter filter = new StrutsPrepareAndExecuteFilter();
75 filter.init(filterConfig);
76 filter.doFilter(request, response, filterChain);
77 assertEquals(200, response.getStatus());
78 assertNull(ActionContext.getContext());
79 assertNull(Dispatcher.getInstance());
80 }
81
82 public void testStaticFallthrough() throws ServletException, IOException {
83 MockHttpServletRequest request = new MockHttpServletRequest();
84 MockHttpServletResponse response = new MockHttpServletResponse();
85 MockFilterConfig filterConfig = new MockFilterConfig();
86 MockFilterChain filterChain = new MockFilterChain() {
87 @Override
88 public void doFilter(ServletRequest req, ServletResponse res) {
89 assertNotNull(ActionContext.getContext());
90 assertNotNull(Dispatcher.getInstance());
91 try {
92 res.getWriter().write("found");
93 } catch (IOException e) {
94 fail(e.getMessage());
95 }
96 }
97 };
98
99 request.setRequestURI("/foo.txt");
100 StrutsPrepareAndExecuteFilter filter = new StrutsPrepareAndExecuteFilter();
101 filter.init(filterConfig);
102 filter.doFilter(request, response, filterChain);
103 assertEquals(200, response.getStatus());
104 assertEquals("found", response.getContentAsString());
105 assertNull(ActionContext.getContext());
106 assertNull(Dispatcher.getInstance());
107 }
108
109 public void testStaticExecute() throws ServletException, IOException {
110 MockHttpServletRequest request = new MockHttpServletRequest();
111 MockHttpServletResponse response = new MockHttpServletResponse();
112 MockFilterConfig filterConfig = new MockFilterConfig();
113 MockFilterChain filterChain = new MockFilterChain() {
114 @Override
115 public void doFilter(ServletRequest req, ServletResponse res) {
116 fail("Should never get here");
117 }
118 };
119
120 request.setRequestURI("/struts/utils.js");
121 StrutsPrepareAndExecuteFilter filter = new StrutsPrepareAndExecuteFilter();
122 filter.init(filterConfig);
123 filter.doFilter(request, response, filterChain);
124 assertEquals(200, response.getStatus());
125 assertTrue(response.getContentAsString().contains("StrutsUtils"));
126 assertNull(ActionContext.getContext());
127 assertNull(Dispatcher.getInstance());
128 }
129 }