View Javadoc

1   package com.atlassian.plugin.servlet.filter;
2   
3   import com.atlassian.plugin.servlet.ServletModuleManager;
4   import junit.framework.TestCase;
5   import org.mockito.Mock;
6   
7   import javax.servlet.Filter;
8   import javax.servlet.FilterChain;
9   import javax.servlet.FilterConfig;
10  import javax.servlet.ServletException;
11  import javax.servlet.ServletRequest;
12  import javax.servlet.ServletResponse;
13  import javax.servlet.http.HttpServletRequest;
14  import javax.servlet.http.HttpServletResponse;
15  import java.io.IOException;
16  import java.util.Collections;
17  
18  import static org.mockito.Mockito.any;
19  import static org.mockito.Mockito.eq;
20  import static org.mockito.Mockito.verify;
21  import static org.mockito.Mockito.when;
22  import static org.mockito.MockitoAnnotations.initMocks;
23  
24  public class TestServletFilterModuleContainerFilter extends TestCase
25  {
26      @Mock private ServletModuleManager moduleManager;
27      @Mock private HttpServletRequest request;
28      @Mock private HttpServletResponse response;
29      @Mock private FilterChain filterChain;
30  
31      public void setUp() {
32          initMocks(this);
33      }
34  
35      public void testFilter() throws IOException, ServletException
36      {
37          when(moduleManager.getFilters(any(FilterLocation.class), eq("/myfilter"), any(FilterConfig.class), eq(FilterDispatcherCondition.REQUEST))).thenReturn(Collections.<Filter>emptyList());
38  
39          MyFilter filter = new MyFilter(moduleManager);
40  
41          when(request.getContextPath()).thenReturn("/myapp");
42          when(request.getRequestURI()).thenReturn("/myapp/myfilter");
43  
44          filter.doFilter(request, response, filterChain);
45          verify(filterChain).doFilter(any(ServletRequest.class), any(ServletResponse.class));
46      }
47  
48      public void testFilterNoDispatcher() throws IOException, ServletException
49      {
50          when(moduleManager.getFilters(any(FilterLocation.class), eq("/myfilter"), any(FilterConfig.class), eq(FilterDispatcherCondition.REQUEST))).thenReturn(Collections.<Filter>emptyList());
51  
52          try
53          {
54              new MyFilterNoDispatcher(moduleManager);
55              fail("Should have thrown exception on init due to lack of dispatcher value");
56          }
57          catch (ServletException ex)
58          {
59              // this is good
60          }
61      }
62  
63      public void testNoServletModuleManager() throws IOException, ServletException
64      {
65          MyFilter filter = new MyFilter(null);
66          filter.doFilter(request, response, filterChain);
67          verify(filterChain).doFilter(any(ServletRequest.class), any(ServletResponse.class));
68      }
69  
70      static class MyFilter extends ServletFilterModuleContainerFilter
71      {
72          @Mock private FilterConfig filterConfig;
73  
74          private final ServletModuleManager moduleManager;
75  
76          public MyFilter(ServletModuleManager moduleManager) throws ServletException
77          {
78              initMocks(this);
79              this.moduleManager = moduleManager;
80              when(filterConfig.getInitParameter("location")).thenReturn("after-encoding");
81              when(filterConfig.getInitParameter("dispatcher")).thenReturn("REQUEST");
82              init(filterConfig);
83          }
84  
85          protected ServletModuleManager getServletModuleManager()
86          {
87               return moduleManager;
88          }
89      }
90  
91      static class MyFilterNoDispatcher extends ServletFilterModuleContainerFilter
92      {
93          @Mock private FilterConfig filterConfig;
94  
95          private final ServletModuleManager moduleManager;
96  
97          public MyFilterNoDispatcher(ServletModuleManager moduleManager) throws ServletException
98          {
99              initMocks(this);
100             this.moduleManager = moduleManager;
101             when(filterConfig.getInitParameter("location")).thenReturn("after-encoding");
102             init(filterConfig);
103         }
104 
105         protected ServletModuleManager getServletModuleManager()
106         {
107              return moduleManager;
108         }
109     }
110 }