1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.shiro.guice.web;
20
21 import java.util.Arrays;
22
23 import javax.servlet.Filter;
24 import javax.servlet.FilterChain;
25 import javax.servlet.ServletRequest;
26 import javax.servlet.ServletResponse;
27
28 import org.easymock.Capture;
29 import org.easymock.IMocksControl;
30 import org.junit.Test;
31
32 import static org.easymock.EasyMock.and;
33 import static org.easymock.EasyMock.anyObject;
34 import static org.easymock.EasyMock.capture;
35 import static org.easymock.EasyMock.createStrictControl;
36 import static org.easymock.EasyMock.same;
37
38 public class SimpleFilterChainTest {
39 @Test
40 public void testDoFilter() throws Exception {
41 IMocksControl ctrl = createStrictControl();
42
43 FilterChain originalChain = ctrl.createMock(FilterChain.class);
44 Filter filter1 = ctrl.createMock("filter1", Filter.class);
45 Filter filter2 = ctrl.createMock("filter2", Filter.class);
46
47 ServletRequest request = ctrl.createMock(ServletRequest.class);
48 ServletResponse response = ctrl.createMock(ServletResponse.class);
49
50 Capture<FilterChain> fc1 = Capture.newInstance();
51 Capture<FilterChain> fc2 = Capture.newInstance();
52 filter1.doFilter(same(request), same(response), and(anyObject(FilterChain.class), capture(fc1)));
53 filter2.doFilter(same(request), same(response), and(anyObject(FilterChain.class), capture(fc2)));
54 originalChain.doFilter(request, response);
55
56 ctrl.replay();
57
58 SimpleFilterChain underTest = new SimpleFilterChain(originalChain, Arrays.asList(filter1, filter2).iterator());
59
60
61
62 underTest.doFilter(request, response);
63 fc1.getValue().doFilter(request, response);
64 fc2.getValue().doFilter(request, response);
65
66 ctrl.verify();
67 }
68 }