package com.limegroup.gnutella.dht.db;
import java.util.Set;
import junit.framework.Test;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.limewire.io.ConnectableImpl;
import org.limewire.io.IpPort;
import org.limewire.io.IpPortSet;
import org.limewire.io.NetworkUtils;
import org.limewire.util.BaseTestCase;
import com.limegroup.gnutella.PushEndpoint;
import com.limegroup.gnutella.PushEndpointFactory;
import com.limegroup.gnutella.stubs.NetworkManagerStub;
public class PushProxiesValueForSelfTest extends BaseTestCase {
private Mockery context;
public PushProxiesValueForSelfTest(String name) {
super(name);
}
public static Test suite() {
return buildTestSuite(PushProxiesValueForSelfTest.class);
}
@Override
protected void setUp() throws Exception {
context = new Mockery();
}
public void testGetPushProxiesReturnsSelf() throws Exception {
NetworkManagerStub networkManagerStub = new NetworkManagerStub();
final PushEndpointFactory pushEndpointFactory = context.mock(PushEndpointFactory.class);
final PushEndpoint selfEndpoint = context.mock(PushEndpoint.class);
context.checking(new Expectations() {{
allowing(pushEndpointFactory).createForSelf();
will(returnValue(selfEndpoint));
}});
PushProxiesValueForSelf value = new PushProxiesValueForSelf(networkManagerStub, pushEndpointFactory, null);
networkManagerStub.setAcceptedIncomingConnection(true);
Set<? extends IpPort> proxies = value.getPushProxies();
assertEquals(1, proxies.size());
assertContains(proxies, new ConnectableImpl(NetworkUtils.ip2string(networkManagerStub.getAddress()), networkManagerStub.getPort(), networkManagerStub.isIncomingTLSEnabled()));
// let's go firewalled
networkManagerStub.setAcceptedIncomingConnection(false);
final IpPortSet pushProxies = new IpPortSet(new ConnectableImpl("199.49.49.3", 45454, false), new ConnectableImpl("202.2.23.3", 1000, true));
context.checking(new Expectations() {{
one(selfEndpoint).getProxies();
will(returnValue(pushProxies));
}});
assertEquals(pushProxies, value.getPushProxies());
context.assertIsSatisfied();
}
}