JDK and eclipse compatibility
JDK version 1.6 with eclipse 3.3 is the minimum requirement.
Preamble
Download using the download link. Import the eclipse project and run configuration for PublicCryptoKeyFilterTest.
Overview of project
The web project contain sample servlet filters for mock purpose. The sample implementation calls the filter with in the filter to simulate the testing environment.
This project uses the power of mock objects provided by Spring Mock , JUnit4 and some nice tweaking to leverage the mock classes to test filters.
Run the PublicCryptoKeyFilterTest configuration to see the test cases passing by calling the filters for testing.
Unit test case
@Test
public void testCryptoKeyFilter() throws Exception {
PublicCryptoKeyFilter filter = new PublicCryptoKeyFilter();
final MockRequestDispatcher requestDispatcher = new MockRequestDispatcher(
"");
// http servlet mocked for mocked dispatcher
MockHttpServletRequest request = new MockHttpServletRequest() {
@Override
public RequestDispatcher getRequestDispatcher(String mappingURI) {
setAttribute("mappingURI", mappingURI);
return requestDispatcher;
}
};
MockHttpServletResponse response = new MockHttpServletResponse();
MockFilterConfig config = new MockFilterConfig();
final PrivateCryptoKeyFilter dsFilter = new PrivateCryptoKeyFilter();
FilterChain filterChain = new MockFilterChain() {
@Override
public void doFilter(ServletRequest req, ServletResponse res) {
try {
dsFilter.doFilter(req, res, new MockFilterChain());
} catch (Exception e) {
}
}
};
request.setRequestURI("http://localhost:8080");
request.addHeader("Param1", "no-header");
config.addInitParameter("init-params", "config.props");
filter.init(config);
filter.doFilter(request, response, filterChain);
Assert.assertTrue((request.getAttribute("mappingURI").toString()
.equalsIgnoreCase("/jsp/error.jsp")));
}
Enjoy, if you like it please appreciate!