blob: 1412e0b7e1ced0f871216ae022bd851c19aeb269 [file] [log] [blame]
package org.jsecurity.web;
import static org.easymock.EasyMock.*;
import org.jsecurity.authc.Account;
import org.jsecurity.authc.SimpleAccount;
import org.jsecurity.authc.UsernamePasswordToken;
import org.jsecurity.subject.PrincipalCollection;
import org.jsecurity.subject.SimplePrincipalCollection;
import org.jsecurity.util.ThreadContext;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* TODO - class javadoc
*
* @author Les Hazlewood
* @since Apr 23, 2008 9:16:47 AM
*/
public class WebRememberMeManagerTest {
@Test
public void onSuccessfulLogin() {
ServletRequest mockRequest = createMock(HttpServletRequest.class);
ThreadContext.bind(mockRequest);
ServletResponse mockResponse = createMock(HttpServletResponse.class);
ThreadContext.bind(mockResponse);
WebRememberMeManager mgr = new WebRememberMeManager();
UsernamePasswordToken token = new UsernamePasswordToken( "user", "secret" );
token.setRememberMe(true);
Account account = new SimpleAccount( "user", "secret", "test" );
mgr.onSuccessfulLogin(token, account);
}
@Test
public void getRememberedPrincipals() {
HttpServletRequest mockRequest = createMock(HttpServletRequest.class);
ThreadContext.bind(mockRequest);
HttpServletResponse mockResponse = createMock(HttpServletResponse.class);
ThreadContext.bind(mockResponse);
//The following base64 string was determined from the log output of the above test.
//This may have to change if the VM changes - not sure. L.H.
final String userPCBlowfishBase64 = "clJgEjFZVuRRN5lCpInkOsawSaKK4hLwegZK/QgR1Thk380v5wL9pA1NZo7QHr7eg8BYryoQaGq0KkrLytelnsl1lierxE9EJ1typI2GpgMeG+HmceNdrlN6KGh4AmjLG3zCUPo8E+QzGVs/EO3PIAGyYYtuYbW++oJDr5xfY9DwK4Omq5GijZSSmdpOHiYelPMa1XLwT0D/kNCUm6EVfG6TKwxViNtGdyzknY7abNU7ucw2UWfjFe24hH0SL0hZMXjPQYtMnPl5J5qfjU4EXX1a/Ijn0IKUEk5BmY+ipc6irMI/Rrmumr46XAIU3uwWMxlbPxDtzyABsmGLbmG1vvqCQ6+cX2PQJ37oNcKqr4mV7ObN2EvWZ1uVbJlUdXeEQgghL3/ayatTs3hWwFGdNhgef8c8iX9wM5bEvxqqY9TMXEyLYLZeA8H6gNvJc6hRd0TQFkzUhjs=";
Cookie[] cookies = new Cookie[] {
new Cookie(WebRememberMeManager.DEFAULT_REMEMBER_ME_COOKIE_NAME, userPCBlowfishBase64 )
};
expect(mockRequest.getParameter("rememberMe")).andReturn(null);
expect(mockRequest.getCookies()).andReturn(cookies);
replay(mockRequest);
WebRememberMeManager mgr = new WebRememberMeManager();
PrincipalCollection collection = mgr.getRememberedPrincipals();
verify(mockRequest);
assertTrue( collection != null );
assertTrue( collection.iterator().next().equals("user"));
}
@Test
public void onLogout() {
HttpServletRequest mockRequest = createMock(HttpServletRequest.class);
ThreadContext.bind(mockRequest);
HttpServletResponse mockResponse = createMock(HttpServletResponse.class);
ThreadContext.bind(mockResponse);
Cookie cookie = new Cookie(WebRememberMeManager.DEFAULT_REMEMBER_ME_COOKIE_NAME,"");
cookie.setMaxAge(0);
Cookie[] cookies = new Cookie[] { cookie };
expect(mockRequest.getCookies()).andReturn(cookies);
expect(mockRequest.getContextPath()).andReturn(null).anyTimes();
mockResponse.addCookie(eq(cookie));
replay(mockRequest);
replay(mockResponse);
PrincipalCollection pc = new SimplePrincipalCollection("test","user");
WebRememberMeManager mgr = new WebRememberMeManager();
mgr.onLogout(pc);
verify(mockRequest);
verify(mockResponse);
}
}