package org.limewire.core.impl.friend; import java.util.HashSet; import java.util.Set; import org.jmock.Expectations; import org.jmock.Mockery; import org.jmock.lib.legacy.ClassImposteriser; import org.limewire.friend.impl.address.FriendAddress; import org.limewire.friend.impl.address.FriendAddressResolver; import org.limewire.net.address.AddressFactory; import org.limewire.security.SecureMessage.Status; import org.limewire.util.BaseTestCase; import com.limegroup.gnutella.Constants; import com.limegroup.gnutella.RemoteFileDesc; import com.limegroup.gnutella.URN; import com.limegroup.gnutella.downloader.RemoteFileDescFactory; import com.limegroup.gnutella.xml.LimeXMLDocument; public class FriendRemoteFileDescDeserializerTest extends BaseTestCase { public FriendRemoteFileDescDeserializerTest(String name) { super(name); } public void testRegister() { Mockery context = new Mockery(); final RemoteFileDescFactory remoteFileDescFactory = context.mock(RemoteFileDescFactory.class); final FriendRemoteFileDescDeserializer deserialiser = new FriendRemoteFileDescDeserializer(null, null); context.checking(new Expectations() { { exactly(1).of(remoteFileDescFactory).register(with(any(String.class)), with(same(deserialiser))); }}); deserialiser.register(remoteFileDescFactory); context.assertIsSatisfied(); } /** * Confirm FriendAddressResolver is properly stored and functional * after a clone. */ public void testCreateWithAddressResolver() { Mockery context = new Mockery() { { setImposteriser(ClassImposteriser.INSTANCE); } }; final AddressFactory addressFactory = context.mock(AddressFactory.class); final FriendAddressResolver addressResolver = context.mock(FriendAddressResolver.class); final FriendRemoteFileDescDeserializer deserialiser = new FriendRemoteFileDescDeserializer(addressFactory, addressResolver); final FriendAddress address = context.mock(FriendAddress.class); context.checking(new Expectations() { { // Ensure address resolver is active exactly(1).of(addressResolver).getPresence(address); will(returnValue(null)); }}); final long index = -10; final String fileName = "Aaaaaaaaasdasfffffffffffffffffffffffffffoiwequrfweiorwe"; final long size = Constants.MAX_FILE_SIZE; final byte[] clientGUID = new byte[] {}; final int speed = Integer.MAX_VALUE; final int quality = Integer.MIN_VALUE; final LimeXMLDocument xmlDoc = null; final Set<URN> urns = new HashSet<URN>(); final String vendor = null; final long createTime = Long.MIN_VALUE; final boolean http11 = true; RemoteFileDesc rfdNew = deserialiser.createRemoteFileDesc(address, index, fileName, size, clientGUID, speed, quality, xmlDoc, urns, vendor, createTime); assertEquals(address, rfdNew.getAddress()); assertEquals(index, rfdNew.getIndex()); assertEquals(fileName, rfdNew.getFileName()); assertEquals(size, rfdNew.getSize()); assertEquals(clientGUID, rfdNew.getClientGUID()); assertEquals(speed, rfdNew.getSpeed()); assertEquals(quality, rfdNew.getQuality());; assertTrue(rfdNew.isBrowseHostEnabled()); assertEquals(xmlDoc, rfdNew.getXMLDocument()); assertFalse(rfdNew.isReplyToMulticast()); assertEquals(urns, rfdNew.getUrns()); assertEquals(vendor, rfdNew.getVendor()); assertEquals(createTime, rfdNew.getCreationTime()); assertEquals(http11, rfdNew.isHTTP11()); assertFalse(rfdNew.isFromAlternateLocation()); assertFalse(rfdNew.isAltLocCapable()); assertFalse(rfdNew.isSpam()); assertEquals(0.0f, rfdNew.getSpamRating()); assertEquals(Status.INSECURE, rfdNew.getSecureStatus()); assertNotNull(rfdNew.toString()); assertNotEquals(rfdNew.toString(), ""); // Invoke a method that uses addressResolver rfdNew.getCredentials(); context.assertIsSatisfied(); } }