/*
* 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: TestPurgingDatabaseRemember.java 3918 2008-04-14 17:35:35Z gbevin $
*/
package com.uwyn.rife.authentication.remembermanagers;
import com.uwyn.rife.authentication.exceptions.RememberManagerException;
import com.uwyn.rife.database.Datasource;
import com.uwyn.rife.ioc.HierarchicalProperties;
import com.uwyn.rife.tools.ExceptionUtils;
import junit.framework.TestCase;
public class TestPurgingDatabaseRemember extends TestCase
{
private Datasource mDatasource = null;
private HierarchicalProperties mProperties = null;
public TestPurgingDatabaseRemember(Datasource datasource, String datasourceName, String name)
{
super(name);
mDatasource = datasource;
mProperties = new HierarchicalProperties();
mProperties.put("datasource", mDatasource);
}
public void testInstantiation()
{
DatabaseRemember manager = new DatabaseRememberFactory().getRememberManager(mProperties);
assertNotNull(manager);
}
public void testStartSession()
{
PurgingRememberManager remember = new PurgingRememberManager(new DatabaseRememberFactory().getRememberManager(mProperties));
remember.setRememberPurgeFrequency(0);
int user_id = 143;
String remember_id = null;
try
{
((DatabaseRemember)remember.getRememberManager()).install();
remember_id = remember.createRememberId(user_id, "123.98.23.3");
assertNotNull(remember_id);
assertTrue(remember_id.length() > 0);
assertEquals(user_id, remember.getRememberedUserId(remember_id));
}
catch (RememberManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
finally
{
try
{
((DatabaseRemember)remember.getRememberManager()).remove();
}
catch (RememberManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
}
public void testPurgeRemember()
{
PurgingRememberManager remember = new PurgingRememberManager(new DatabaseRememberFactory().getRememberManager(mProperties));
remember.setRememberDuration(2000);
remember.setRememberPurgeFrequency(1);
remember.setRememberPurgeScale(1);
try
{
((DatabaseRemember)remember.getRememberManager()).install();
remember.eraseAllRememberIds();
int user_id1 = 143;
String remember_id1 = remember.createRememberId(user_id1, "123.98.23.3");
assertEquals(user_id1, remember.getRememberedUserId(remember_id1));
Thread.sleep(2000);
int user_id2 = 143;
String remember_id2 = remember.createRememberId(user_id2, "123.98.23.39");
assertEquals(user_id2, remember.getRememberedUserId(remember_id2));
assertEquals(-1, remember.getRememberedUserId(remember_id1));
}
catch (InterruptedException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
catch (RememberManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
finally
{
try
{
((DatabaseRemember)remember.getRememberManager()).remove();
}
catch (RememberManagerException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
}
}
}