package com.cloudbees.jenkins;
import org.junit.Before;
import org.junit.Test;
import javax.servlet.FilterChain;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import static junit.framework.Assert.assertFalse;
import static junit.framework.TestCase.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
public class GitHubWebHookCrumbExclusionTest {
private GitHubWebHookCrumbExclusion exclusion;
private HttpServletRequest req;
private HttpServletResponse resp;
private FilterChain chain;
@Before
public void before() {
exclusion = new GitHubWebHookCrumbExclusion();
req = mock(HttpServletRequest.class);
resp = mock(HttpServletResponse.class);
chain = mock(FilterChain.class);
}
@Test
public void testFullPath() throws Exception {
when(req.getPathInfo()).thenReturn("/github-webhook/");
assertTrue(exclusion.process(req, resp, chain));
verify(chain, times(1)).doFilter(req, resp);
}
@Test
public void testFullPathWithoutSlash() throws Exception {
when(req.getPathInfo()).thenReturn("/github-webhook");
assertTrue(exclusion.process(req, resp, chain));
verify(chain, times(1)).doFilter(req, resp);
}
@Test
public void testInvalidPath() throws Exception {
when(req.getPathInfo()).thenReturn("/some-other-url/");
assertFalse(exclusion.process(req, resp, chain));
verify(chain, never()).doFilter(req, resp);
}
@Test
public void testNullPath() throws Exception {
when(req.getPathInfo()).thenReturn(null);
assertFalse(exclusion.process(req, resp, chain));
verify(chain, never()).doFilter(req, resp);
}
@Test
public void testEmptyPath() throws Exception {
when(req.getPathInfo()).thenReturn("");
assertFalse(exclusion.process(req, resp, chain));
verify(chain, never()).doFilter(req, resp);
}
}