package com.limegroup.gnutella.licenses;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import junit.framework.Test;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.limewire.http.httpclient.LimeHttpClient;
import org.limewire.inject.Providers;
import org.limewire.util.BaseTestCase;
public class LicenseVerifierTest extends BaseTestCase {
public LicenseVerifierTest(String name) {
super(name);
}
public static Test suite() {
return buildTestSuite(LicenseVerifierTest.class);
}
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
public void testVerify() throws Exception {
Mockery context = new Mockery();
final LicenseCache licenseCache = new LicenseCache();
final LicenseVerifier licenseVerifier = new LicenseVerifier(Providers.of(licenseCache), Providers.nullProvider(LimeHttpClient.class));
final License license = context.mock(License.class);
context.checking(new Expectations() {{
one(license).verify(licenseCache, null);
}});
Listener listener = new Listener();
licenseVerifier.verify(license, listener);
assertTrue(listener.latch.await(500, TimeUnit.MILLISECONDS));
context.assertIsSatisfied();
}
public void testVerifyAndWait() throws Exception {
Mockery context = new Mockery();
final LicenseCache licenseCache = new LicenseCache();
final LicenseVerifier licenseVerifier = new LicenseVerifier(Providers.of(licenseCache), Providers.nullProvider(LimeHttpClient.class));
final License license = context.mock(License.class);
context.checking(new Expectations() {{
one(license).verify(licenseCache, null);
}});
Listener listener = new Listener();
licenseVerifier.verifyAndWait(license, listener);
assertEquals(0, listener.latch.getCount());
context.assertIsSatisfied();
}
private class Listener implements VerificationListener {
CountDownLatch latch = new CountDownLatch(1);
public void licenseVerified(License license) {
latch.countDown();
}
}
}