package com.globant.katari.core.security; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import junit.framework.TestCase; import org.acegisecurity.util.FilterChainProxy; import org.easymock.EasyMock; /** * Tests the Conditioned Filter. * * @author rcunci */ public class ConditionedFilterTest extends TestCase { /** * Tests the doFilter with a true predicate * * @throws Exception */ public void testDoFilter_true() throws Exception { FilterChainProxy filterChainProxy = EasyMock.createMock(FilterChainProxy.class); RequestPredicate predicate = EasyMock.createMock(RequestPredicate.class); FilterConfig filterConfig = EasyMock.createMock(FilterConfig.class); ServletRequest request = EasyMock.createMock(ServletRequest.class); ServletResponse response = EasyMock.createMock(ServletResponse.class); FilterChain filterChain = EasyMock.createMock(FilterChain.class); EasyMock.expect(predicate.evaluate(request)).andReturn(true).once(); filterChainProxy.init(filterConfig); EasyMock.expectLastCall().once(); filterChainProxy.doFilter(request, response, filterChain); EasyMock.expectLastCall().once(); filterChainProxy.destroy(); EasyMock.expectLastCall().once(); EasyMock.replay(filterChainProxy); EasyMock.replay(predicate); EasyMock.replay(filterConfig); EasyMock.replay(request); EasyMock.replay(response); EasyMock.replay(filterChain); ConditionedFilter filter = new ConditionedFilter(predicate, filterChainProxy); filter.init(filterConfig); assertTrue(filter.doFilter(request, response, filterChain)); filter.destroy(); EasyMock.verify(filterChainProxy); EasyMock.verify(predicate); EasyMock.verify(filterConfig); EasyMock.verify(request); EasyMock.verify(response); EasyMock.verify(filterChain); } /** * Tests the doFilter with a false predicate * * @throws Exception */ public void testDoFilter_false() throws Exception { FilterChainProxy filterChainProxy = EasyMock.createMock(FilterChainProxy.class); RequestPredicate predicate = EasyMock.createMock(RequestPredicate.class); FilterConfig filterConfig = EasyMock.createMock(FilterConfig.class); ServletRequest request = EasyMock.createMock(ServletRequest.class); ServletResponse response = EasyMock.createMock(ServletResponse.class); FilterChain filterChain = EasyMock.createMock(FilterChain.class); filterChainProxy.init(filterConfig); EasyMock.expectLastCall().once(); EasyMock.expect(predicate.evaluate(request)).andReturn(false).once(); filterChainProxy.destroy(); EasyMock.expectLastCall().once(); EasyMock.replay(filterChainProxy); EasyMock.replay(predicate); EasyMock.replay(filterConfig); EasyMock.replay(request); EasyMock.replay(response); EasyMock.replay(filterChain); ConditionedFilter filter = new ConditionedFilter(predicate, filterChainProxy); filter.init(filterConfig); assertFalse(filter.doFilter(request, response, filterChain)); filter.destroy(); EasyMock.verify(filterChainProxy); EasyMock.verify(predicate); EasyMock.verify(filterConfig); EasyMock.verify(request); EasyMock.verify(response); EasyMock.verify(filterChain); } /** * Tests the doFilter with no predicate * * @throws Exception */ public void testDoFilter_noPredicate() throws Exception { FilterConfig filterConfig = EasyMock.createMock(FilterConfig.class); ServletRequest request = EasyMock.createMock(ServletRequest.class); ServletResponse response = EasyMock.createMock(ServletResponse.class); FilterChain filterChain = EasyMock.createMock(FilterChain.class); EasyMock.replay(filterConfig); EasyMock.replay(request); EasyMock.replay(response); EasyMock.replay(filterChain); ConditionedFilter filter = new ConditionedFilter(); filter.init(filterConfig); assertFalse(filter.doFilter(request, response, filterChain)); filter.destroy(); EasyMock.verify(filterConfig); EasyMock.verify(request); EasyMock.verify(response); EasyMock.verify(filterChain); } }