View Javadoc
1   package com.atlassian.plugin.servlet.filter;
2   
3   import com.atlassian.plugin.servlet.ServletModuleManager;
4   import org.junit.Rule;
5   import org.junit.Test;
6   import org.mockito.Mock;
7   import org.mockito.junit.MockitoJUnit;
8   import org.mockito.junit.MockitoRule;
9   
10  import javax.servlet.DispatcherType;
11  import javax.servlet.Filter;
12  import javax.servlet.FilterChain;
13  import javax.servlet.FilterConfig;
14  import javax.servlet.ServletException;
15  import javax.servlet.ServletRequest;
16  import javax.servlet.ServletResponse;
17  import javax.servlet.http.HttpServletRequest;
18  import javax.servlet.http.HttpServletResponse;
19  import java.io.IOException;
20  import java.util.Collections;
21  
22  import static org.mockito.Mockito.any;
23  import static org.mockito.Mockito.eq;
24  import static org.mockito.Mockito.verify;
25  import static org.mockito.Mockito.when;
26  import static org.mockito.MockitoAnnotations.initMocks;
27  
28  public class TestServletFilterModuleContainerFilter {
29      @Rule
30      public final MockitoRule mockitoRule = MockitoJUnit.rule();
31  
32      @Mock
33      private ServletModuleManager moduleManager;
34      @Mock
35      private HttpServletRequest request;
36      @Mock
37      private HttpServletResponse response;
38      @Mock
39      private FilterChain filterChain;
40  
41      @Test
42      public void testFilter() throws IOException, ServletException {
43          when(moduleManager.getFilters(any(FilterLocation.class), eq("/myfilter"), any(FilterConfig.class), eq(DispatcherType.REQUEST)))
44                  .thenReturn(Collections.emptyList());
45  
46          MyFilter filter = new MyFilter(moduleManager);
47  
48          when(request.getContextPath()).thenReturn("/myapp");
49          when(request.getRequestURI()).thenReturn("/myapp/myfilter");
50          when(request.getDispatcherType()).thenReturn(DispatcherType.REQUEST);
51  
52          filter.doFilter(request, response, filterChain);
53          verify(filterChain).doFilter(any(ServletRequest.class), any(ServletResponse.class));
54      }
55  
56      @Test
57      public void testNoServletModuleManager() throws IOException, ServletException {
58          MyFilter filter = new MyFilter(null);
59          filter.doFilter(request, response, filterChain);
60          verify(filterChain).doFilter(any(ServletRequest.class), any(ServletResponse.class));
61      }
62  
63      static class MyFilter extends ServletFilterModuleContainerFilter {
64          @Mock
65          private FilterConfig filterConfig;
66  
67          private final ServletModuleManager moduleManager;
68  
69          public MyFilter(ServletModuleManager moduleManager) throws ServletException {
70              initMocks(this);
71              this.moduleManager = moduleManager;
72              when(filterConfig.getInitParameter("location")).thenReturn("after-encoding");
73              init(filterConfig);
74          }
75  
76          protected ServletModuleManager getServletModuleManager() {
77              return moduleManager;
78          }
79      }
80  }