|
|
|
|
@ -1,26 +1,46 @@
@@ -1,26 +1,46 @@
|
|
|
|
|
package org.springframework.security.web.authentication.rememberme; |
|
|
|
|
|
|
|
|
|
import static org.junit.Assert.assertTrue; |
|
|
|
|
import static org.mockito.Mockito.mock; |
|
|
|
|
import static org.mockito.Matchers.eq; |
|
|
|
|
import static org.mockito.Matchers.same; |
|
|
|
|
import static org.mockito.Mockito.verify; |
|
|
|
|
import static org.mockito.Mockito.when; |
|
|
|
|
import static org.powermock.api.mockito.PowerMockito.mock; |
|
|
|
|
import static org.powermock.api.mockito.PowerMockito.spy; |
|
|
|
|
import static org.powermock.api.mockito.PowerMockito.verifyStatic; |
|
|
|
|
import static org.powermock.api.mockito.PowerMockito.when; |
|
|
|
|
|
|
|
|
|
import java.lang.reflect.Method; |
|
|
|
|
|
|
|
|
|
import javax.servlet.http.Cookie; |
|
|
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
|
|
|
|
|
|
|
import org.junit.Before; |
|
|
|
|
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.security.core.userdetails.UserDetailsService; |
|
|
|
|
import org.springframework.security.web.authentication.rememberme.AbstractRememberMeServicesTests.MockRememberMeServices; |
|
|
|
|
import org.springframework.util.ReflectionUtils; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Note: This test will fail in the IDE since it needs to be ran with servlet 3.0 and servlet 2.5 is also on the classpath. |
|
|
|
|
* |
|
|
|
|
* @author Rob Winch |
|
|
|
|
*/ |
|
|
|
|
@RunWith(PowerMockRunner.class) |
|
|
|
|
@PrepareForTest({Method.class, ReflectionUtils.class}) |
|
|
|
|
public class AbstractRememberMeServicesServlet3Tests { |
|
|
|
|
@Mock |
|
|
|
|
private Method method; |
|
|
|
|
|
|
|
|
|
@Before |
|
|
|
|
public void setUp() throws Exception { |
|
|
|
|
spy(ReflectionUtils.class); |
|
|
|
|
|
|
|
|
|
when(ReflectionUtils.findMethod(Cookie.class, "setHttpOnly", boolean.class)).thenReturn(method); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
public void httpOnlySetInServlet30DefaultConstructor() throws Exception { |
|
|
|
|
@ -31,8 +51,8 @@ public class AbstractRememberMeServicesServlet3Tests {
@@ -31,8 +51,8 @@ public class AbstractRememberMeServicesServlet3Tests {
|
|
|
|
|
MockRememberMeServices services = new MockRememberMeServices(); |
|
|
|
|
services.setCookie(new String[] {"mycookie"}, 1000, request, response); |
|
|
|
|
verify(response).addCookie(cookie.capture()); |
|
|
|
|
Cookie rememberme = cookie.getValue(); |
|
|
|
|
assertTrue((Boolean)ReflectionUtils.invokeMethod(rememberme.getClass().getMethod("isHttpOnly"),rememberme)); |
|
|
|
|
verifyStatic(); |
|
|
|
|
ReflectionUtils.invokeMethod(same(method), eq(cookie.getValue()), eq(true)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
@ -44,7 +64,7 @@ public class AbstractRememberMeServicesServlet3Tests {
@@ -44,7 +64,7 @@ public class AbstractRememberMeServicesServlet3Tests {
|
|
|
|
|
MockRememberMeServices services = new MockRememberMeServices("key",mock(UserDetailsService.class)); |
|
|
|
|
services.setCookie(new String[] {"mycookie"}, 1000, request, response); |
|
|
|
|
verify(response).addCookie(cookie.capture()); |
|
|
|
|
Cookie rememberme = cookie.getValue(); |
|
|
|
|
assertTrue((Boolean)ReflectionUtils.invokeMethod(rememberme.getClass().getMethod("isHttpOnly"),rememberme)); |
|
|
|
|
verifyStatic(); |
|
|
|
|
ReflectionUtils.invokeMethod(same(method), eq(cookie.getValue()), eq(true)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|