/*
* Copyright 2006-2008 Sxip Identity Corporation
*/
package org.openid4java.server;
import junit.framework.Test;
import junit.framework.TestSuite;
import junit.framework.TestCase;
import java.util.Set;
import java.util.HashSet;
import java.util.Date;
import java.text.ParseException;
import org.openid4java.util.InternetDateFormat;
/**
* @author Marius Scurtescu, Johnny Bufu
*/
public abstract class AbstractNonceGeneratorTest extends TestCase
{
protected InternetDateFormat _dateFormat = new InternetDateFormat();
protected NonceGenerator _nonceGenerator;
public AbstractNonceGeneratorTest(String name)
{
super(name);
}
public void setUp() throws Exception
{
_nonceGenerator = createGenerator();
}
public abstract NonceGenerator createGenerator();
public void testUniqueLoop()
{
Set seen = new HashSet();
for (int i = 0; i < 100; i++)
{
String nonce = _nonceGenerator.next();
if (seen.contains(nonce))
fail("Double nonce!");
seen.add(nonce);
}
}
public void testUniqueSequential()
{
String nonce1 = _nonceGenerator.next();
String nonce2 = _nonceGenerator.next();
String nonce3 = _nonceGenerator.next();
assertFalse(nonce1.equals(nonce2));
assertFalse(nonce2.equals(nonce3));
}
public void testTimestamp() throws ParseException
{
String nonce = _nonceGenerator.next();
Date nonceDate = _dateFormat.parse(nonce);
assertNotNull(nonceDate);
assertTrue(nonceDate.before(new Date()));
}
public static Test suite()
{
return new TestSuite(AbstractNonceGeneratorTest.class);
}
}