use of org.apache.shiro.session.Session in project shiro by apache.
the class AbstractValidatingSessionManagerTest method testValidateSessions.
/**
* Tests that both SessionListeners are called and that invalid sessions are deleted by default.
* Verifies <a href="https://issues.apache.org/jira/browse/SHIRO-199">SHIRO-199</a>.
*/
@Test
public void testValidateSessions() {
final SimpleSession validSession = new SimpleSession();
validSession.setId(1);
final SimpleSession invalidSession = new SimpleSession();
// set to a time in the past:
Calendar cal = Calendar.getInstance();
Long expiredTimeout = AbstractSessionManager.DEFAULT_GLOBAL_SESSION_TIMEOUT + 1;
cal.add(Calendar.MILLISECOND, -(expiredTimeout.intValue()));
Date past = cal.getTime();
invalidSession.setStartTimestamp(past);
invalidSession.setLastAccessTime(past);
invalidSession.setId(2);
final AtomicInteger expirationCount = new AtomicInteger();
SessionListener sessionListener = new SessionListenerAdapter() {
@Override
public void onExpiration(Session session) {
expirationCount.incrementAndGet();
}
};
AbstractValidatingSessionManager sessionManager = new AbstractValidatingSessionManager() {
@Override
protected Session retrieveSession(SessionKey key) throws UnknownSessionException {
throw new UnsupportedOperationException("Should not be called in this test.");
}
@Override
protected Session doCreateSession(SessionContext initData) throws AuthorizationException {
throw new UnsupportedOperationException("Should not be called in this test.");
}
@Override
protected Collection<Session> getActiveSessions() {
Collection<Session> sessions = new ArrayList<Session>(2);
sessions.add(validSession);
sessions.add(invalidSession);
return sessions;
}
};
sessionManager.setSessionListeners(Arrays.asList(sessionListener));
sessionManager.validateSessions();
assertEquals(1, expirationCount.intValue());
}
use of org.apache.shiro.session.Session in project shiro by apache.
the class DefaultSessionManagerTest method testSessionListenerStopNotification.
@Test
public void testSessionListenerStopNotification() {
final boolean[] stopped = new boolean[1];
SessionListener listener = new SessionListenerAdapter() {
public void onStop(Session session) {
stopped[0] = true;
}
};
sm.getSessionListeners().add(listener);
Session session = sm.start(null);
sm.stop(new DefaultSessionKey(session.getId()));
assertTrue(stopped[0]);
}
use of org.apache.shiro.session.Session in project shiro by apache.
the class DefaultSessionManagerTest method testSessionListenerStopNotificationWithReadAttribute.
// asserts fix for SHIRO-388:
// Ensures that a session attribute can be accessed in the listener without
// causing a stack overflow exception.
@Test
public void testSessionListenerStopNotificationWithReadAttribute() {
final boolean[] stopped = new boolean[1];
final String[] value = new String[1];
SessionListener listener = new SessionListenerAdapter() {
public void onStop(Session session) {
stopped[0] = true;
value[0] = (String) session.getAttribute("foo");
}
};
sm.getSessionListeners().add(listener);
Session session = sm.start(null);
session.setAttribute("foo", "bar");
sm.stop(new DefaultSessionKey(session.getId()));
assertTrue(stopped[0]);
assertEquals("bar", value[0]);
}
use of org.apache.shiro.session.Session in project shiro by apache.
the class DefaultSessionManagerTest method testGlobalTimeout.
@Test
public void testGlobalTimeout() {
long timeout = 1000;
sm.setGlobalSessionTimeout(timeout);
Session session = sm.start(null);
assertNotNull(session);
assertNotNull(session.getId());
assertEquals(session.getTimeout(), timeout);
}
use of org.apache.shiro.session.Session in project shiro by apache.
the class DefaultSessionManagerTest method testEnablingOfCustomSessionValidationScheduler.
/**
* Tests a bug introduced by SHIRO-443, where a custom sessionValidationScheduler would not be started.
*/
@Test
public void testEnablingOfCustomSessionValidationScheduler() {
// using the default impl of sessionValidationScheduler, as the but effects any scheduler we set directly via
// sessionManager.setSessionValidationScheduler(), commonly used in INI configuration.
ExecutorServiceSessionValidationScheduler sessionValidationScheduler = new ExecutorServiceSessionValidationScheduler();
DefaultSessionManager sessionManager = new DefaultSessionManager();
sessionManager.setSessionValidationScheduler(sessionValidationScheduler);
// starting a session will trigger the starting of the validator
try {
Session session = sessionManager.start(null);
// now sessionValidationScheduler should be enabled
assertTrue("sessionValidationScheduler was not enabled", sessionValidationScheduler.isEnabled());
} finally {
// cleanup after test
sessionManager.destroy();
}
}
Aggregations