package org.limewire.xmpp.client.impl; import java.util.ArrayList; import java.util.List; import org.jivesoftware.smack.ConnectionConfiguration; import org.jmock.Expectations; import org.jmock.Mockery; import org.limewire.friend.api.FriendConnectionConfiguration; import org.limewire.io.UnresolvedIpPort; import org.limewire.io.UnresolvedIpPortImpl; import org.limewire.util.BaseTestCase; public class FallbackConnectionConfigurationFactoryTest extends BaseTestCase { public FallbackConnectionConfigurationFactoryTest(String name) { super(name); } public void testHasMoreNoFallbacks() { FallbackConnectionConfigurationFactory factory = new FallbackConnectionConfigurationFactory(); Mockery mockery = new Mockery(); final FriendConnectionConfiguration connectionConfiguration = mockery.mock(FriendConnectionConfiguration.class); ConnectionConfigurationFactory.RequestContext requestContext = new ConnectionConfigurationFactory.RequestContext(); final List<UnresolvedIpPort> fallbackServers = new ArrayList<UnresolvedIpPort>(); mockery.checking(new Expectations() {{ allowing(connectionConfiguration).getDefaultServers(); will(returnValue(fallbackServers)); }}); assertFalse(factory.hasMore(connectionConfiguration, requestContext)); mockery.assertIsSatisfied(); } public void testHasMoreWithFallbacks() { FallbackConnectionConfigurationFactory factory = new FallbackConnectionConfigurationFactory(); Mockery mockery = new Mockery(); final FriendConnectionConfiguration connectionConfiguration = mockery.mock(FriendConnectionConfiguration.class); ConnectionConfigurationFactory.RequestContext requestContext = new ConnectionConfigurationFactory.RequestContext(); final List<UnresolvedIpPort> fallbackServers = new ArrayList<UnresolvedIpPort>(); fallbackServers.add(new UnresolvedIpPortImpl("foo.com", 1234)); fallbackServers.add(new UnresolvedIpPortImpl("bar.com", 5678)); mockery.checking(new Expectations() {{ allowing(connectionConfiguration).getDefaultServers(); will(returnValue(fallbackServers)); }}); assertTrue(factory.hasMore(connectionConfiguration, requestContext)); requestContext.incrementRequests(); assertTrue(factory.hasMore(connectionConfiguration, requestContext)); requestContext.incrementRequests(); assertFalse(factory.hasMore(connectionConfiguration, requestContext)); mockery.assertIsSatisfied(); } public void testGetConnectionConfigurationNoConfigs() { FallbackConnectionConfigurationFactory factory = new FallbackConnectionConfigurationFactory(); Mockery mockery = new Mockery(); final FriendConnectionConfiguration connectionConfiguration = mockery.mock(FriendConnectionConfiguration.class); ConnectionConfigurationFactory.RequestContext requestContext = new ConnectionConfigurationFactory.RequestContext(); final List<UnresolvedIpPort> fallbackServers = new ArrayList<UnresolvedIpPort>(); mockery.checking(new Expectations() {{ allowing(connectionConfiguration).getDefaultServers(); will(returnValue(fallbackServers)); }}); try { factory.getConnectionConfiguration(connectionConfiguration, requestContext); fail(); } catch (IllegalStateException e) { } mockery.assertIsSatisfied(); } public void testGetConnectionConfiguration() { FallbackConnectionConfigurationFactory factory = new FallbackConnectionConfigurationFactory(); Mockery mockery = new Mockery(); final FriendConnectionConfiguration connectionConfiguration = mockery.mock(FriendConnectionConfiguration.class); ConnectionConfigurationFactory.RequestContext requestContext = new ConnectionConfigurationFactory.RequestContext(); final List<UnresolvedIpPort> fallbackServers = new ArrayList<UnresolvedIpPort>(); fallbackServers.add(new UnresolvedIpPortImpl("foo.com", 1234)); fallbackServers.add(new UnresolvedIpPortImpl("bar.com", 5678)); mockery.checking(new Expectations() {{ allowing(connectionConfiguration).getDefaultServers(); will(returnValue(fallbackServers)); allowing(connectionConfiguration).getServiceName(); will(returnValue("foo")); }}); ConnectionConfiguration configuration = factory.getConnectionConfiguration(connectionConfiguration, requestContext); assertEquals("foo.com", configuration.getHost()); assertEquals(1234, configuration.getPort()); requestContext.incrementRequests(); configuration = factory.getConnectionConfiguration(connectionConfiguration, requestContext); assertEquals("bar.com", configuration.getHost()); assertEquals(5678, configuration.getPort()); mockery.assertIsSatisfied(); } }