package org.limewire.xmpp.client.impl.messages.filetransfer; import java.util.Collections; import java.util.Date; import org.jmock.Expectations; import org.jmock.Mockery; import org.limewire.friend.api.FileMetaData; import org.limewire.friend.impl.FileMetaDataImpl; import org.limewire.util.BaseTestCase; import org.limewire.xmpp.client.impl.messages.IQTestUtils; import org.limewire.xmpp.client.impl.messages.InvalidIQException; import org.limewire.xmpp.client.impl.messages.filetransfer.FileTransferIQ.TransferType; public class FileTransferIQTest extends BaseTestCase { private Mockery context; public FileTransferIQTest(String name) { super(name); } @Override protected void setUp() throws Exception { context = new Mockery(); } public void testParsesOwnOutput() throws Exception { final FileMetaData metaData = context.mock(FileMetaData.class); final Date date = new Date(); context.checking(new Expectations() {{ one(metaData).getCreateTime(); will(returnValue(date)); one(metaData).getDescription(); will(returnValue("help & description>>>now]][[")); one(metaData).getId(); will(returnValue("id")); one(metaData).getIndex(); will(returnValue(Long.MIN_VALUE)); one(metaData).getName(); will(returnValue("hold <bold>this</bold>.html")); one(metaData).getSize(); will(returnValue(Long.MAX_VALUE)); one(metaData).getUrns(); will(returnValue(Collections.singleton("urn:sha1:PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB"))); }}); // need to copy to test FileMetaData#toXML() FileMetaData copy = new FileMetaDataImpl(metaData); context.assertIsSatisfied(); FileTransferIQ iq = new FileTransferIQ(copy, TransferType.OFFER); FileTransferIQ parsedIQ = new FileTransferIQ(IQTestUtils.createParser(iq.getChildElementXML())); FileMetaData parsedMetaData = parsedIQ.getFileMetaData(); assertEquals(date, parsedMetaData.getCreateTime()); assertEquals("help & description>>>now]][[", parsedMetaData.getDescription()); assertEquals("id", parsedMetaData.getId()); assertEquals(Long.MIN_VALUE, parsedMetaData.getIndex()); assertEquals("hold <bold>this</bold>.html", parsedMetaData.getName()); assertEquals(Long.MAX_VALUE, parsedMetaData.getSize()); assertEquals(Collections.singleton("urn:sha1:PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB"), parsedMetaData.getUrns()); } public void testParsesUnknownTransferTypeGracefully() throws Exception { try { new FileTransferIQ(IQTestUtils.createParser("<file-transfer xmlns='jabber:iq:lw-file-transfer' type='public-transfer'>" + "<file><name>hello</name><size>2</size><index>0</index><createTime>50005</createTime><urns>urn:sha1:PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB</urns></file>" + "</file-transfer>")); fail("expected invalid iq exception"); } catch (InvalidIQException iie) { } } public void testParsesMissingTransferTypeGracefully() throws Exception { try { new FileTransferIQ(IQTestUtils.createParser("<file-transfer xmlns='jabber:iq:lw-file-transfer'>" + "<file><name>hello</name><size>2</size><index>0</index><createTime>50005</createTime><urns>urn:sha1:PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB</urns></file>" + "</file-transfer>")); fail("expected invalid iq exception"); } catch (InvalidIQException iie) { } } }