|
|
|
|
@ -15,23 +15,28 @@
@@ -15,23 +15,28 @@
|
|
|
|
|
*/ |
|
|
|
|
package org.springframework.security.web.csrf; |
|
|
|
|
|
|
|
|
|
import java.lang.reflect.Method; |
|
|
|
|
|
|
|
|
|
import javax.servlet.http.Cookie; |
|
|
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
|
|
|
|
|
|
|
import org.junit.Test; |
|
|
|
|
import org.junit.runner.RunWith; |
|
|
|
|
import org.mockito.ArgumentCaptor; |
|
|
|
|
import org.mockito.Mock; |
|
|
|
|
import org.powermock.core.classloader.annotations.PrepareForTest; |
|
|
|
|
import org.powermock.modules.junit4.PowerMockRunner; |
|
|
|
|
import org.springframework.util.ReflectionUtils; |
|
|
|
|
|
|
|
|
|
import javax.servlet.http.Cookie; |
|
|
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
|
|
import java.lang.reflect.Method; |
|
|
|
|
import org.springframework.util.ReflectionUtils; |
|
|
|
|
|
|
|
|
|
import static org.mockito.Matchers.eq; |
|
|
|
|
import static org.mockito.Matchers.same; |
|
|
|
|
import static org.mockito.Mockito.mock; |
|
|
|
|
import static org.mockito.Mockito.*; |
|
|
|
|
import static org.mockito.Mockito.never; |
|
|
|
|
import static org.mockito.Mockito.verify; |
|
|
|
|
import static org.powermock.api.mockito.PowerMockito.spy; |
|
|
|
|
import static org.powermock.api.mockito.PowerMockito.*; |
|
|
|
|
import static org.powermock.api.mockito.PowerMockito.verifyStatic; |
|
|
|
|
import static org.powermock.api.mockito.PowerMockito.when; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
@ -39,7 +44,7 @@ import static org.powermock.api.mockito.PowerMockito.when;
@@ -39,7 +44,7 @@ import static org.powermock.api.mockito.PowerMockito.when;
|
|
|
|
|
* @since 4.1 |
|
|
|
|
*/ |
|
|
|
|
@RunWith(PowerMockRunner.class) |
|
|
|
|
@PrepareForTest({ReflectionUtils.class, Method.class}) |
|
|
|
|
@PrepareForTest({ ReflectionUtils.class, Method.class }) |
|
|
|
|
public class CookieCsrfTokenRepositoryServlet3Tests { |
|
|
|
|
|
|
|
|
|
@Mock |
|
|
|
|
@ -48,8 +53,8 @@ public class CookieCsrfTokenRepositoryServlet3Tests {
@@ -48,8 +53,8 @@ public class CookieCsrfTokenRepositoryServlet3Tests {
|
|
|
|
|
@Test |
|
|
|
|
public void httpOnlyServlet30() throws Exception { |
|
|
|
|
spy(ReflectionUtils.class); |
|
|
|
|
when(ReflectionUtils.findMethod(Cookie.class, "setHttpOnly", |
|
|
|
|
boolean.class)).thenReturn(method); |
|
|
|
|
when(ReflectionUtils.findMethod(Cookie.class, "setHttpOnly", boolean.class)) |
|
|
|
|
.thenReturn(this.method); |
|
|
|
|
|
|
|
|
|
HttpServletRequest request = mock(HttpServletRequest.class); |
|
|
|
|
when(request.getContextPath()).thenReturn("/contextpath"); |
|
|
|
|
@ -63,14 +68,14 @@ public class CookieCsrfTokenRepositoryServlet3Tests {
@@ -63,14 +68,14 @@ public class CookieCsrfTokenRepositoryServlet3Tests {
|
|
|
|
|
|
|
|
|
|
verify(response).addCookie(cookie.capture()); |
|
|
|
|
verifyStatic(); |
|
|
|
|
ReflectionUtils.invokeMethod(same(method), eq(cookie.getValue()), eq(true)); |
|
|
|
|
ReflectionUtils.invokeMethod(same(this.method), eq(cookie.getValue()), eq(true)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
public void httpOnlyPreServlet30() throws Exception { |
|
|
|
|
spy(ReflectionUtils.class); |
|
|
|
|
when(ReflectionUtils.findMethod(Cookie.class, "setHttpOnly", |
|
|
|
|
boolean.class)).thenReturn(null); |
|
|
|
|
when(ReflectionUtils.findMethod(Cookie.class, "setHttpOnly", boolean.class)) |
|
|
|
|
.thenReturn(null); |
|
|
|
|
|
|
|
|
|
HttpServletRequest request = mock(HttpServletRequest.class); |
|
|
|
|
when(request.getContextPath()).thenReturn("/contextpath"); |
|
|
|
|
@ -84,7 +89,7 @@ public class CookieCsrfTokenRepositoryServlet3Tests {
@@ -84,7 +89,7 @@ public class CookieCsrfTokenRepositoryServlet3Tests {
|
|
|
|
|
|
|
|
|
|
verify(response).addCookie(cookie.capture()); |
|
|
|
|
verifyStatic(never()); |
|
|
|
|
ReflectionUtils.invokeMethod(same(method), eq(cookie.getValue()), eq(true)); |
|
|
|
|
ReflectionUtils.invokeMethod(same(this.method), eq(cookie.getValue()), eq(true)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |