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 }