/*
* Copyright 2006-2008 Sxip Identity Corporation
*/
package org.openid4java.consumer;
import junit.framework.Test;
import junit.framework.TestSuite;
import junit.framework.TestCase;
import org.openid4java.util.InternetDateFormat;
import org.openid4java.server.NonceGenerator;
import org.openid4java.server.IncrementalNonceGenerator;
import java.util.Date;
/**
* @author Marius Scurtescu, Johnny Bufu
*/
public abstract class AbstractNonceVerifierTest extends TestCase
{
protected NonceVerifier _nonceVerifier;
protected InternetDateFormat _dateFormat = new InternetDateFormat();
public static final int MAX_AGE = 60;
public AbstractNonceVerifierTest(String name)
{
super(name);
}
public void setUp() throws Exception
{
_nonceVerifier = createVerifier(MAX_AGE);
}
public abstract NonceVerifier createVerifier(int maxAge);
public void tearDown() throws Exception
{
super.tearDown();
}
public void testSeen()
{
String nonce = _dateFormat.format(new Date()) + "abc";
assertEquals(NonceVerifier.OK, _nonceVerifier.seen("op1", nonce));
assertEquals(NonceVerifier.SEEN, _nonceVerifier.seen("op1", nonce));
assertEquals(NonceVerifier.OK, _nonceVerifier.seen("op2", nonce));
}
public void testMalformed()
{
assertEquals(NonceVerifier.INVALID_TIMESTAMP, _nonceVerifier.seen("op1", "xyz"));
}
public void testExpired()
{
Date now = new Date();
Date past = new Date(now.getTime() - (MAX_AGE + 1) * 1000);
String nonce = _dateFormat.format(past) + "abc";
assertEquals(NonceVerifier.TOO_OLD, _nonceVerifier.seen("op1", nonce));
}
public void testNonceCleanup() throws Exception
{
NonceGenerator nonceGenerator = new IncrementalNonceGenerator();
_nonceVerifier = createVerifier(1);
assertEquals(NonceVerifier.OK, _nonceVerifier.seen("http://example.com", nonceGenerator.next()));
assertEquals(NonceVerifier.OK, _nonceVerifier.seen("http://example.com", nonceGenerator.next()));
assertEquals(NonceVerifier.OK, _nonceVerifier.seen("http://example.com", nonceGenerator.next()));
assertEquals(NonceVerifier.OK, _nonceVerifier.seen("http://example.com", nonceGenerator.next()));
assertEquals(NonceVerifier.OK, _nonceVerifier.seen("http://example.net", nonceGenerator.next()));
assertEquals(NonceVerifier.OK, _nonceVerifier.seen("http://example.net", nonceGenerator.next()));
assertEquals(NonceVerifier.OK, _nonceVerifier.seen("http://example.net", nonceGenerator.next()));
assertEquals(NonceVerifier.OK, _nonceVerifier.seen("http://example.net", nonceGenerator.next()));
Thread.sleep(1000);
assertEquals(NonceVerifier.OK, _nonceVerifier.seen("http://example.org", nonceGenerator.next()));
}
public static Test suite()
{
return new TestSuite(AbstractNonceVerifierTest.class);
}
}