1   /*
2    * Copyright 2004-2010 the Seasar Foundation and the Others.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13   * either express or implied. See the License for the specific language
14   * governing permissions and limitations under the License.
15   */
16  
17  package org.seasar.cubby.filter;
18  
19  import static org.easymock.EasyMock.createMock;
20  import static org.easymock.EasyMock.expect;
21  import static org.easymock.EasyMock.isA;
22  import static org.easymock.EasyMock.replay;
23  import static org.easymock.EasyMock.verify;
24  
25  import javax.servlet.FilterChain;
26  import javax.servlet.FilterConfig;
27  import javax.servlet.ServletRequest;
28  import javax.servlet.ServletResponse;
29  import javax.servlet.http.HttpServletRequest;
30  import javax.servlet.http.HttpServletResponse;
31  
32  import org.junit.Test;
33  
34  public class SendErrorFilterTest {
35  
36  	@Test
37  	public void doFilter1() throws Exception {
38  		FilterConfig config = createMock(FilterConfig.class);
39  		expect(config.getInitParameter("statusCode")).andReturn(null);
40  		expect(config.getInitParameter("ignorePathPattern")).andReturn(null);
41  		HttpServletRequest request = createMock(HttpServletRequest.class);
42  		expect(request.getServletPath()).andReturn("/bar/").anyTimes();
43  		HttpServletResponse response = createMock(HttpServletResponse.class);
44  		response.sendError(403);
45  		FilterChain chain = createMock(FilterChain.class);
46  		replay(config, request, response, chain);
47  
48  		SendErrorFilter filter = new SendErrorFilter();
49  		filter.init(config);
50  		filter.doFilter(request, response, chain);
51  		filter.destroy();
52  
53  		verify(config, request, response, chain);
54  	}
55  
56  	@Test
57  	public void doFilter2() throws Exception {
58  		FilterConfig config = createMock(FilterConfig.class);
59  		expect(config.getInitParameter("statusCode")).andReturn("404");
60  		expect(config.getInitParameter("ignorePathPattern")).andReturn(null);
61  		HttpServletRequest request = createMock(HttpServletRequest.class);
62  		expect(request.getServletPath()).andReturn("/bar/").anyTimes();
63  		HttpServletResponse response = createMock(HttpServletResponse.class);
64  		response.sendError(404);
65  		FilterChain chain = createMock(FilterChain.class);
66  		replay(config, request, response, chain);
67  
68  		SendErrorFilter filter = new SendErrorFilter();
69  		filter.init(config);
70  		filter.doFilter(request, response, chain);
71  		filter.destroy();
72  
73  		verify(config, request, response, chain);
74  	}
75  
76  	@Test
77  	public void doFilter3() throws Exception {
78  		FilterConfig config = createMock(FilterConfig.class);
79  		expect(config.getInitParameter("statusCode")).andReturn("404");
80  		expect(config.getInitParameter("ignorePathPattern")).andReturn(
81  				".*\\.jsp,.*\\.html");
82  		HttpServletRequest request = createMock(HttpServletRequest.class);
83  		expect(request.getServletPath()).andReturn("/foo/bar.html").anyTimes();
84  		HttpServletResponse response = createMock(HttpServletResponse.class);
85  		FilterChain chain = createMock(FilterChain.class);
86  		chain.doFilter(isA(ServletRequest.class), isA(ServletResponse.class));
87  		replay(config, request, response, chain);
88  
89  		SendErrorFilter filter = new SendErrorFilter();
90  		filter.init(config);
91  		filter.doFilter(request, response, chain);
92  		filter.destroy();
93  
94  		verify(config, request, response, chain);
95  	}
96  
97  	@Test
98  	public void doFilter4() throws Exception {
99  		FilterConfig config = createMock(FilterConfig.class);
100 		expect(config.getInitParameter("statusCode")).andReturn("404");
101 		expect(config.getInitParameter("ignorePathPattern")).andReturn(
102 				".*\\.jsp,.*\\.html");
103 		HttpServletRequest request = createMock(HttpServletRequest.class);
104 		expect(request.getServletPath()).andReturn("/foo/bar.html").anyTimes();
105 		HttpServletResponse response = createMock(HttpServletResponse.class);
106 		FilterChain chain = createMock(FilterChain.class);
107 		chain.doFilter(isA(ServletRequest.class), isA(ServletResponse.class));
108 		replay(config, request, response, chain);
109 
110 		SendErrorFilter filter = new SendErrorFilter();
111 		filter.init(config);
112 		filter.doFilter(request, response, chain);
113 		filter.destroy();
114 
115 		verify(config, request, response, chain);
116 	}
117 
118 	@Test
119 	public void doFilter5() throws Exception {
120 		FilterConfig config = createMock(FilterConfig.class);
121 		expect(config.getInitParameter("statusCode")).andReturn("404");
122 		expect(config.getInitParameter("ignorePathPattern")).andReturn(
123 				".*\\.jsp,.*\\.html");
124 		HttpServletRequest request = createMock(HttpServletRequest.class);
125 		expect(request.getServletPath()).andReturn("/bar/").anyTimes();
126 		HttpServletResponse response = createMock(HttpServletResponse.class);
127 		response.sendError(404);
128 		FilterChain chain = createMock(FilterChain.class);
129 
130 		replay(config, request, response, chain);
131 
132 		SendErrorFilter filter = new SendErrorFilter();
133 		filter.init(config);
134 		filter.doFilter(request, response, chain);
135 		filter.destroy();
136 
137 		verify(config, request, response, chain);
138 	}
139 
140 }