/*
* Copyright 2006-2008 Sxip Identity Corporation
*/
package org.openid4java.server;
import junit.framework.Test;
import junit.framework.TestSuite;
import junit.framework.TestCase;
import org.openid4java.association.Association;
import org.openid4java.association.AssociationException;
/**
* @author Marius Scurtescu, Johnny Bufu
*/
public abstract class AbstractServerAssociationStoreTest extends TestCase
{
protected ServerAssociationStore _associationStore;
public AbstractServerAssociationStoreTest(String name)
{
super(name);
}
public void setUp() throws Exception
{
_associationStore = createStore();
}
public abstract ServerAssociationStore createStore();
public void testGenerate() throws AssociationException
{
Association association = _associationStore.generate(Association.TYPE_HMAC_SHA1, 60);
assertNotNull(association);
assertSame(association, _associationStore.load(association.getHandle()));
association = _associationStore.generate(Association.TYPE_HMAC_SHA256, 60);
assertNotNull(association);
assertSame(association, _associationStore.load(association.getHandle()));
}
public void testGenerateBadType()
{
try
{
String badType = "xyz";
_associationStore.generate(badType, 60);
fail("Should throw exception for bad associtation type: " + badType);
}
catch (AssociationException e)
{
}
}
public void testLoad() throws AssociationException
{
assertNull(_associationStore.load(null));
assertNull(_associationStore.load(""));
assertNull(_associationStore.load("xyz"));
String handle = _associationStore.generate(Association.TYPE_HMAC_SHA1, 60).getHandle();
assertNotNull(_associationStore.load(handle));
assertNotNull(_associationStore.load(handle));
}
public void testExpiry() throws AssociationException, InterruptedException
{
String handle = _associationStore.generate(Association.TYPE_HMAC_SHA1, 1).getHandle();
assertNotNull(_associationStore.load(handle));
Thread.sleep(2000);
assertNull(_associationStore.load(handle));
}
public void testRemove() throws AssociationException
{
String handle = _associationStore.generate(Association.TYPE_HMAC_SHA1, 1).getHandle();
assertNotNull(_associationStore.load(handle));
_associationStore.remove(handle);
assertNull(_associationStore.load(handle));
}
public void testCleanup() throws AssociationException, InterruptedException
{
_associationStore.generate(Association.TYPE_HMAC_SHA1, 1);
_associationStore.generate(Association.TYPE_HMAC_SHA1, 1);
_associationStore.generate(Association.TYPE_HMAC_SHA1, 1);
_associationStore.generate(Association.TYPE_HMAC_SHA1, 1);
Thread.sleep(2000);
_associationStore.generate(Association.TYPE_HMAC_SHA1, 1);
}
public static Test suite()
{
return new TestSuite(AbstractServerAssociationStoreTest.class);
}
}