You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shiro.apache.org by lh...@apache.org on 2009/07/18 17:43:13 UTC
svn commit: r795387 -
/incubator/shiro/trunk/web/src/test/java/org/apache/shiro/web/DefaultWebSecurityManagerTest.java
Author: lhazlewood
Date: Sat Jul 18 15:43:12 2009
New Revision: 795387
URL: http://svn.apache.org/viewvc?rev=795387&view=rev
Log:
Added another test case for sessionTimeout
Modified:
incubator/shiro/trunk/web/src/test/java/org/apache/shiro/web/DefaultWebSecurityManagerTest.java
Modified: incubator/shiro/trunk/web/src/test/java/org/apache/shiro/web/DefaultWebSecurityManagerTest.java
URL: http://svn.apache.org/viewvc/incubator/shiro/trunk/web/src/test/java/org/apache/shiro/web/DefaultWebSecurityManagerTest.java?rev=795387&r1=795386&r2=795387&view=diff
==============================================================================
--- incubator/shiro/trunk/web/src/test/java/org/apache/shiro/web/DefaultWebSecurityManagerTest.java (original)
+++ incubator/shiro/trunk/web/src/test/java/org/apache/shiro/web/DefaultWebSecurityManagerTest.java Sat Jul 18 15:43:12 2009
@@ -19,9 +19,22 @@
package org.apache.shiro.web;
import org.apache.shiro.util.ThreadContext;
+import org.apache.shiro.session.Session;
+import org.apache.shiro.session.mgt.AbstractSessionManager;
+import org.apache.shiro.subject.Subject;
+import org.apache.shiro.authc.UsernamePasswordToken;
+import org.apache.shiro.authc.AuthenticationInfo;
+import org.apache.shiro.authc.SimpleAuthenticationInfo;
+import org.apache.shiro.mgt.DefaultSecurityManager;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import static org.junit.Assert.*;
+import static org.easymock.EasyMock.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.Serializable;
/**
* @author Les Hazlewood
@@ -48,4 +61,43 @@
sm.setSessionMode(DefaultWebSecurityManager.NATIVE_SESSION_MODE);
}
+ protected void sleep(long millis) {
+ try {
+ Thread.sleep(millis);
+ } catch (InterruptedException e) {
+ throw new IllegalStateException(e);
+ }
+ }
+
+ @Test
+ public void testSessionTimeout() {
+ shiroSessionModeInit();
+ long globalTimeout = 50;
+ sm.setGlobalSessionTimeout(globalTimeout);
+
+ HttpServletRequest mockRequest = createNiceMock(HttpServletRequest.class);
+ WebUtils.bind(mockRequest);
+ HttpServletResponse mockResponse = createNiceMock(HttpServletResponse.class);
+ WebUtils.bind(mockResponse);
+
+ expect(mockRequest.getCookies()).andReturn(null);
+ expect(mockRequest.getContextPath()).andReturn("/");
+
+ replay(mockRequest);
+
+ Subject subject = sm.getSubject();
+ Session session = subject.getSession();
+ Serializable origId = session.getId();
+ assertEquals(session.getTimeout(), globalTimeout);
+ session.setTimeout(100);
+ assertEquals(session.getTimeout(), 100);
+ sleep(100);
+ //now the underlying session should have been expired and a new one replaced by default.
+ //so ensure the replaced session has the default session timeout:
+ assertEquals(session.getTimeout(), globalTimeout);
+ assertFalse(origId.equals(session.getId())); //new ID would have been generated
+
+ //verify(mockRequest);
+ }
+
}