@ -69,6 +69,10 @@ public class TokenBasedRememberMeServicesTests {
@@ -69,6 +69,10 @@ public class TokenBasedRememberMeServicesTests {
new UsernameNotFoundException ( "" ) ) ;
}
void udsWillReturnNull ( ) {
when ( uds . loadUserByUsername ( any ( String . class ) ) ) . thenReturn ( null ) ;
}
private long determineExpiryTimeFromBased64EncodedToken ( String validToken ) {
String cookieAsPlainText = new String ( Base64 . decodeBase64 ( validToken . getBytes ( ) ) ) ;
String [ ] cookieTokens = StringUtils . delimitedListToStringArray ( cookieAsPlainText ,
@ -230,6 +234,21 @@ public class TokenBasedRememberMeServicesTests {
@@ -230,6 +234,21 @@ public class TokenBasedRememberMeServicesTests {
assertThat ( returnedCookie . getMaxAge ( ) ) . isZero ( ) ;
}
@Test ( expected = IllegalArgumentException . class )
public void autoLoginClearsCookieIfUserServiceMisconfigured ( ) {
udsWillReturnNull ( ) ;
Cookie cookie = new Cookie ( SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY ,
generateCorrectCookieContentForToken (
System . currentTimeMillis ( ) + 1000000 , "someone" , "password" ,
"key" ) ) ;
MockHttpServletRequest request = new MockHttpServletRequest ( ) ;
request . setCookies ( cookie ) ;
MockHttpServletResponse response = new MockHttpServletResponse ( ) ;
services . autoLogin ( request , response ) ;
}
@Test
public void autoLoginWithValidTokenAndUserSucceeds ( ) throws Exception {
udsWillReturnUser ( ) ;