package org.limewire.xmpp.client.impl.messages.filetransfer; import org.limewire.util.BaseTestCase; import org.limewire.xmpp.client.impl.messages.IQTestUtils; import org.limewire.friend.impl.FileMetaDataImpl; import org.limewire.xmpp.client.impl.messages.InvalidIQException; import org.xmlpull.v1.XmlPullParser; public class XMPPFileMetaDataTest extends BaseTestCase { public XMPPFileMetaDataTest(String name) { super(name); } public void testInvalidElementReadFromXML() throws Exception { XmlPullParser parser = IQTestUtils.createParser("<file><name>hello</name><invalidtag>harhar</invalidtag><size>2</size><index>0</index><createTime>50005</createTime><urns>urn:sha1:PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB</urns></file>"); parser.next(); FileMetaDataImpl metaDataImpl = new XMPPFileMetaData(parser); assertEquals("hello", metaDataImpl.getName()); assertEquals(2, metaDataImpl.getSize()); assertEquals(0, metaDataImpl.getIndex()); } public void testRandomUnescapedText() throws Exception { XmlPullParser parser = IQTestUtils.createParser("<file><name>"&\\//[[hello\"'kdf;;.?---</name><size>2</size><index>0</index><createTime>50005</createTime><urns>urn:sha1:PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB</urns></file>"); parser.next(); FileMetaDataImpl metaData = new XMPPFileMetaData(parser); assertEquals("\"&\\//[[hello\"'kdf;;.?---", metaData.getName()); } public void testHandlesMissingNonMandatoryParsedElementsGracefully() throws Exception { XmlPullParser parser = IQTestUtils.createParser("<file><urns>urn:sha1:PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB</urns><name>hello</name><size>2</size><index>0</index><createTime>50005</createTime></file>"); parser.next(); FileMetaDataImpl metaData = new XMPPFileMetaData(parser); metaData.getCreateTime(); metaData.getName(); assertNull(metaData.getDescription()); metaData.getSize(); assertNull(metaData.getId()); metaData.getIndex(); metaData.getUrns(); } public void assertFieldIsMandatory(String incompleteInput, String missingField) throws Exception { try { XmlPullParser parser = IQTestUtils.createParser("<file>" + incompleteInput + "</file>"); parser.next(); new XMPPFileMetaData(parser); fail("invalid iq exception expected for missing field: " + missingField); } catch (InvalidIQException iie) { } XmlPullParser parser = IQTestUtils.createParser("<file>" + incompleteInput + missingField + "</file>"); parser.next(); new XMPPFileMetaData(parser); } public void testUrnsAreMandatory() throws Exception { assertFieldIsMandatory("<name>hello</name><size>2</size><index>0</index><createTime>50005</createTime>", "<urns>urn:sha1:PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB</urns>"); } public void testNameIsMandatory() throws Exception { assertFieldIsMandatory("<urns>urn:sha1:PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB</urns><size>2</size><index>0</index><createTime>50005</createTime>", "<name>name</name>"); } public void testSizeIsMandatory() throws Exception { assertFieldIsMandatory("<name>name</name><urns>urn:sha1:PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB</urns><index>0</index><createTime>50005</createTime>", "<size>2</size>"); } public void testIndexIsMandatory() throws Exception { assertFieldIsMandatory("<size>2</size><name>name</name><urns>urn:sha1:PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB</urns><createTime>50005</createTime>", "<index>0</index>"); } public void testCreateTimeIsMandatory() throws Exception { assertFieldIsMandatory("<index>0</index><size>2</size><name>name</name><urns>urn:sha1:PLSTHIPQGSSZTS5FJUPAKUZWUGYQYPFB</urns>", "<createTime>50005</createTime>"); } }