View Javadoc

1   /*
2    * $Id: DefaultActionSupport.java 651946 2008-04-27 13:41:38Z apetrelli $
3    *
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
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 }