|
@@ -16,7 +16,11 @@
|
|
package org.springframework.security.cas.web;
|
|
package org.springframework.security.cas.web;
|
|
|
|
|
|
import static org.junit.Assert.*;
|
|
import static org.junit.Assert.*;
|
|
|
|
+import static org.mockito.Mockito.*;
|
|
|
|
|
|
|
|
+import javax.servlet.FilterChain;
|
|
|
|
+
|
|
|
|
+import org.jasig.cas.client.proxy.ProxyGrantingTicketStorage;
|
|
import org.junit.Test;
|
|
import org.junit.Test;
|
|
import org.springframework.mock.web.MockHttpServletRequest;
|
|
import org.springframework.mock.web.MockHttpServletRequest;
|
|
import org.springframework.mock.web.MockHttpServletResponse;
|
|
import org.springframework.mock.web.MockHttpServletResponse;
|
|
@@ -30,6 +34,7 @@ import org.springframework.security.core.AuthenticationException;
|
|
* Tests {@link CasAuthenticationFilter}.
|
|
* Tests {@link CasAuthenticationFilter}.
|
|
*
|
|
*
|
|
* @author Ben Alex
|
|
* @author Ben Alex
|
|
|
|
+ * @author Rob Winch
|
|
*/
|
|
*/
|
|
public class CasAuthenticationFilterTests {
|
|
public class CasAuthenticationFilterTests {
|
|
//~ Methods ========================================================================================================
|
|
//~ Methods ========================================================================================================
|
|
@@ -67,4 +72,58 @@ public class CasAuthenticationFilterTests {
|
|
|
|
|
|
filter.attemptAuthentication(new MockHttpServletRequest(), new MockHttpServletResponse());
|
|
filter.attemptAuthentication(new MockHttpServletRequest(), new MockHttpServletResponse());
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ public void testRequiresAuthenticationFilterProcessUrl() {
|
|
|
|
+ CasAuthenticationFilter filter = new CasAuthenticationFilter();
|
|
|
|
+ MockHttpServletRequest request = new MockHttpServletRequest();
|
|
|
|
+ MockHttpServletResponse response = new MockHttpServletResponse();
|
|
|
|
+
|
|
|
|
+ request.setRequestURI(filter.getFilterProcessesUrl());
|
|
|
|
+ assertTrue(filter.requiresAuthentication(request, response));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ public void testRequiresAuthenticationProxyRequest() {
|
|
|
|
+ CasAuthenticationFilter filter = new CasAuthenticationFilter();
|
|
|
|
+ MockHttpServletRequest request = new MockHttpServletRequest();
|
|
|
|
+ MockHttpServletResponse response = new MockHttpServletResponse();
|
|
|
|
+
|
|
|
|
+ request.setRequestURI("/pgtCallback");
|
|
|
|
+ assertFalse(filter.requiresAuthentication(request, response));
|
|
|
|
+ filter.setProxyReceptorUrl(request.getRequestURI());
|
|
|
|
+ assertFalse(filter.requiresAuthentication(request, response));
|
|
|
|
+ filter.setProxyGrantingTicketStorage(mock(ProxyGrantingTicketStorage.class));
|
|
|
|
+ assertTrue(filter.requiresAuthentication(request, response));
|
|
|
|
+ request.setRequestURI("/other");
|
|
|
|
+ assertFalse(filter.requiresAuthentication(request, response));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ public void testAuthenticateProxyUrl() throws Exception {
|
|
|
|
+ CasAuthenticationFilter filter = new CasAuthenticationFilter();
|
|
|
|
+ MockHttpServletRequest request = new MockHttpServletRequest();
|
|
|
|
+ MockHttpServletResponse response = new MockHttpServletResponse();
|
|
|
|
+
|
|
|
|
+ request.setRequestURI("/pgtCallback");
|
|
|
|
+ filter.setProxyGrantingTicketStorage(mock(ProxyGrantingTicketStorage.class));
|
|
|
|
+ filter.setProxyReceptorUrl(request.getRequestURI());
|
|
|
|
+ assertNull(filter.attemptAuthentication(request, response));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // SEC-1592
|
|
|
|
+ @Test
|
|
|
|
+ public void testChainNotInvokedForProxy() throws Exception {
|
|
|
|
+ CasAuthenticationFilter filter = new CasAuthenticationFilter();
|
|
|
|
+ MockHttpServletRequest request = new MockHttpServletRequest();
|
|
|
|
+ MockHttpServletResponse response = new MockHttpServletResponse();
|
|
|
|
+ FilterChain chain = mock(FilterChain.class);
|
|
|
|
+
|
|
|
|
+ request.setRequestURI("/pgtCallback");
|
|
|
|
+ filter.setProxyGrantingTicketStorage(mock(ProxyGrantingTicketStorage.class));
|
|
|
|
+ filter.setProxyReceptorUrl(request.getRequestURI());
|
|
|
|
+
|
|
|
|
+ filter.doFilter(request,response,chain);
|
|
|
|
+ verifyZeroInteractions(chain);
|
|
|
|
+ }
|
|
}
|
|
}
|