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 com.google.common.collect.Iterators;
22 import org.easymock.Capture;
23 import org.easymock.IMocksControl;
24 import org.junit.Test;
25
26 import javax.servlet.Filter;
27 import javax.servlet.FilterChain;
28 import javax.servlet.ServletRequest;
29 import javax.servlet.ServletResponse;
30
31 import static org.easymock.EasyMock.*;
32
33 public class SimpleFilterChainTest {
34 @Test
35 public void testDoFilter() throws Exception {
36 IMocksControl ctrl = createStrictControl();
37
38 FilterChain originalChain = ctrl.createMock(FilterChain.class);
39 Filter filter1 = ctrl.createMock("filter1", Filter.class);
40 Filter filter2 = ctrl.createMock("filter2", Filter.class);
41
42 ServletRequest request = ctrl.createMock(ServletRequest.class);
43 ServletResponse response = ctrl.createMock(ServletResponse.class);
44
45 Capture<FilterChain> fc1 = new Capture<FilterChain>();
46 Capture<FilterChain> fc2 = new Capture<FilterChain>();
47 filter1.doFilter(same(request), same(response), and(anyObject(FilterChain.class), capture(fc1)));
48 filter2.doFilter(same(request), same(response), and(anyObject(FilterChain.class), capture(fc2)));
49 originalChain.doFilter(request, response);
50
51 ctrl.replay();
52
53 SimpleFilterChain underTest = new SimpleFilterChain(originalChain, Iterators.forArray(filter1, filter2));
54
55
56
57 underTest.doFilter(request, response);
58 fc1.getValue().doFilter(request, response);
59 fc2.getValue().doFilter(request, response);
60
61 ctrl.verify();
62 }
63 }