package com.globant.katari.core.security;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import junit.framework.TestCase;
import org.easymock.EasyMock;
/**
* Tests the Filter Chain Selector.
*
* @author rcunci
*/
public class SecurityEntryPointFilterTest extends TestCase {
/**
* Tests the filter selector in the case that the conditioned filter is not
* executed.
*
* @throws Exception
*/
public void testDoFilter_false() throws Exception {
ConditionedFilter conditionedFilter = EasyMock.createMock(
ConditionedFilter.class);
Filter defaultFilterChain = EasyMock.createMock(Filter.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);
defaultFilterChain.init(filterConfig);
EasyMock.expectLastCall().once();
defaultFilterChain.doFilter(request, response, filterChain);
EasyMock.expectLastCall().once();
defaultFilterChain.destroy();
EasyMock.expectLastCall().once();
conditionedFilter.init(filterConfig);
EasyMock.expectLastCall().once();
EasyMock.expect(conditionedFilter.doFilter(request, response, filterChain))
.andReturn(false).once();
conditionedFilter.destroy();
EasyMock.expectLastCall().once();
EasyMock.replay(conditionedFilter);
EasyMock.replay(defaultFilterChain);
EasyMock.replay(request);
EasyMock.replay(response);
EasyMock.replay(filterChain);
SecurityEntryPointFilter entryPointFilter =
new SecurityEntryPointFilter(defaultFilterChain, conditionedFilter);
entryPointFilter.init(filterConfig);
entryPointFilter.doFilter(request, response, filterChain);
entryPointFilter.destroy();
EasyMock.verify(conditionedFilter);
EasyMock.verify(defaultFilterChain);
EasyMock.verify(request);
EasyMock.verify(response);
EasyMock.verify(filterChain);
}
/**
* Tests the filter selector in the case that the conditioned filter is
* executed.
*
* @throws Exception
*/
public void testDoFilter_true() throws Exception {
ConditionedFilter conditionedFilter = EasyMock.createMock(
ConditionedFilter.class);
Filter defaultFilterChain = EasyMock.createMock(Filter.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);
defaultFilterChain.init(filterConfig);
EasyMock.expectLastCall().once();
defaultFilterChain.destroy();
EasyMock.expectLastCall().once();
conditionedFilter.init(filterConfig);
EasyMock.expectLastCall().once();
EasyMock.expect(conditionedFilter.doFilter(request, response, filterChain))
.andReturn(true).once();
conditionedFilter.destroy();
EasyMock.expectLastCall().once();
EasyMock.replay(conditionedFilter);
EasyMock.replay(defaultFilterChain);
EasyMock.replay(request);
EasyMock.replay(response);
EasyMock.replay(filterChain);
SecurityEntryPointFilter entryPointFilter =
new SecurityEntryPointFilter(defaultFilterChain, conditionedFilter);
entryPointFilter.init(filterConfig);
entryPointFilter.doFilter(request, response, filterChain);
entryPointFilter.destroy();
EasyMock.verify(conditionedFilter);
EasyMock.verify(defaultFilterChain);
EasyMock.verify(request);
EasyMock.verify(response);
EasyMock.verify(filterChain);
}
}