/*
* Copyright 2001-2008 Geert Bevin (gbevin[remove] at uwyn dot com) and
* Steven Grimm <koreth[remove] at midwinter dot com>
* Licensed under the Apache License, Version 2.0 (the "License")
* $Id: TestPurgingDatabaseSessions.java 3918 2008-04-14 17:35:35Z gbevin $
*/
package com.uwyn.rife.authentication.sessionmanagers;
import com.uwyn.rife.authentication.exceptions.SessionManagerException;
import com.uwyn.rife.database.Datasource;
import com.uwyn.rife.ioc.HierarchicalProperties;
import com.uwyn.rife.tools.ExceptionUtils;
import junit.framework.TestCase;
public class TestPurgingDatabaseSessions extends TestCase
{
private Datasource mDatasource = null;
private HierarchicalProperties mProperties = null;
public TestPurgingDatabaseSessions(Datasource datasource, String datasourceName, String name)
{
super(name);
mDatasource = datasource;
mProperties = new HierarchicalProperties();
mProperties.put("datasource", mDatasource);
}
public void testInstantiation()
{
PurgingSessionManager manager = new PurgingSessionManager(new DatabaseSessionsFactory().getManager(mProperties));
assertNotNull(manager);
}
public void testStartSession()
{
PurgingSessionManager sessions = new PurgingSessionManager(new DatabaseSessionsFactory().getManager(mProperties));
sessions.setSessionPurgeFrequency(0);
int user_id = 143;
String host_ip = "189.38.987.43";
String auth_id = null;
try
{
((DatabaseSessions)sessions.getSessionManager()).install();
auth_id = sessions.startSession(user_id, host_ip, false);
assertEquals(1, sessions.countSessions());
assertNotNull(auth_id);
assertTrue(auth_id.length() > 0);
}
catch (SessionManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
finally
{
try
{
((DatabaseSessions)sessions.getSessionManager()).remove();
}
catch (SessionManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
}
public void testPurgeSessions()
{
PurgingSessionManager sessions = new PurgingSessionManager(new DatabaseSessionsFactory().getManager(mProperties));
sessions.setSessionDuration(2000);
sessions.setSessionPurgeFrequency(1);
sessions.setSessionPurgeScale(1);
int user_id = 9478;
String host_ip = "98.232.12.456";
try
{
((DatabaseSessions)sessions.getSessionManager()).install();
sessions.eraseAllSessions();
assertEquals(0, sessions.countSessions());
sessions.startSession(user_id, host_ip, false);
assertEquals(1, sessions.countSessions());
Thread.sleep(2010);
sessions.startSession(user_id, host_ip, false);
assertEquals(1, sessions.countSessions());
}
catch (InterruptedException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
catch (SessionManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
finally
{
try
{
((DatabaseSessions)sessions.getSessionManager()).remove();
}
catch (SessionManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
}
}