diff options
Diffstat (limited to 'test/com/isode/stroke/serializer/payloadserializers/JingleSerializersTest.java')
-rw-r--r-- | test/com/isode/stroke/serializer/payloadserializers/JingleSerializersTest.java | 287 |
1 files changed, 287 insertions, 0 deletions
diff --git a/test/com/isode/stroke/serializer/payloadserializers/JingleSerializersTest.java b/test/com/isode/stroke/serializer/payloadserializers/JingleSerializersTest.java new file mode 100644 index 0000000..ca9c5a8 --- /dev/null +++ b/test/com/isode/stroke/serializer/payloadserializers/JingleSerializersTest.java @@ -0,0 +1,287 @@ +/* + * Copyright (c) 2011 Tobias Markmann + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ +/* + * Copyright (c) 2015 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. + */ +/* + * Copyright (c) 2015 Tarun Gupta. + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +package com.isode.stroke.serializer.payloadserializers; + +import static org.junit.Assert.assertEquals; +import org.junit.Test; +import com.isode.stroke.serializer.payloadserializers.JingleFileTransferDescriptionSerializer; +import com.isode.stroke.serializer.payloadserializers.StreamInitiationFileInfoSerializer; +import com.isode.stroke.serializer.payloadserializers.JinglePayloadSerializer; +import com.isode.stroke.serializer.payloadserializers.FullPayloadSerializerCollection; +import com.isode.stroke.elements.JingleFileTransferDescription; +import com.isode.stroke.elements.JingleFileTransferFileInfo; +import com.isode.stroke.elements.JingleIBBTransportPayload; +import com.isode.stroke.elements.JingleS5BTransportPayload; +import com.isode.stroke.elements.JingleFileTransferHash; +import com.isode.stroke.elements.JinglePayload; +import com.isode.stroke.elements.HashElement; +import com.isode.stroke.elements.JingleContentPayload; +import com.isode.stroke.elements.StreamInitiationFileInfo; +import com.isode.stroke.base.DateTime; +import com.isode.stroke.stringcodecs.Base64; +import com.isode.stroke.jid.JID; +import com.isode.stroke.network.HostAddress; +import com.isode.stroke.network.HostAddressPort; +import java.net.InetAddress; +import java.net.UnknownHostException; + +public class JingleSerializersTest { + + private FullPayloadSerializerCollection collection = new FullPayloadSerializerCollection(); + + /** + * Default Constructor. + */ + public JingleSerializersTest() { + + } + + public JinglePayloadSerializer createTestling() { + return new JinglePayloadSerializer(collection); + } + + @Test + public void testSerialize_StreamInitiationFileInfo() { + String expected = "<file date=\"1969-07-21T02:56:15Z\" hash=\"552da749930852c69ae5d2141d3766b1\" name=\"test.txt\" size=\"1022\" xmlns=\"http://jabber.org/protocol/si/profile/file-transfer\"><desc>This is a test. If this were a real file...</desc><range/></file>"; + + StreamInitiationFileInfo fileInfo = new StreamInitiationFileInfo(); + fileInfo.setDate(DateTime.stringToDate("1969-07-21T02:56:15Z")); + fileInfo.setHash("552da749930852c69ae5d2141d3766b1"); + fileInfo.setSize(1022); + fileInfo.setName("test.txt"); + fileInfo.setDescription("This is a test. If this were a real file..."); + fileInfo.setSupportsRangeRequests(true); + + StreamInitiationFileInfoSerializer serializer = new StreamInitiationFileInfoSerializer(); + assertEquals(expected, serializer.serializePayload(fileInfo)); + } + + + @Test + public void testSerialize_StreamInitiationFileInfoRange() { + String expected = "<file hash=\"552da749930852c69ae5d2141d3766b1\" xmlns=\"http://jabber.org/protocol/si/profile/file-transfer\"><range offset=\"270336\"/></file>"; + + StreamInitiationFileInfo fileInfo = new StreamInitiationFileInfo(); + fileInfo.setHash("552da749930852c69ae5d2141d3766b1"); + fileInfo.setSupportsRangeRequests(true); + fileInfo.setRangeOffset(270336); + + StreamInitiationFileInfoSerializer serializer = new StreamInitiationFileInfoSerializer(); + assertEquals(expected, serializer.serializePayload(fileInfo)); + } + + + // IBB Transport Method Examples + + // http://xmpp.org/extensions/xep-0261.html#example-1 + @Test + public void testSerialize_Xep0261_Example1() { + String expected = "<jingle action=\"session-initiate\" initiator=\"romeo@montague.lit/orchard\" sid=\"a73sjjvkla37jfea\" xmlns=\"urn:xmpp:jingle:1\"><content creator=\"initiator\" name=\"ex\"><transport block-size=\"4096\" sid=\"ch3d9s71\" xmlns=\"urn:xmpp:jingle:transports:ibb:1\"/></content></jingle>"; + + JinglePayload payload = new JinglePayload(); + payload.setAction(JinglePayload.Action.SessionInitiate); + payload.setSessionID("a73sjjvkla37jfea"); + payload.setInitiator(new JID("romeo@montague.lit/orchard")); + + JingleIBBTransportPayload transport = new JingleIBBTransportPayload(); + transport.setBlockSize(4096); + transport.setSessionID("ch3d9s71"); + + JingleContentPayload content = new JingleContentPayload(); + content.setCreator(JingleContentPayload.Creator.InitiatorCreator); + content.setName("ex"); + content.addTransport(transport); + + payload.addPayload(content); + + assertEquals(expected, createTestling().serialize(payload)); + } + + // http://xmpp.org/extensions/xep-0261.html#example-9 + @Test + public void testSerialize_Xep0261_Example9() { + String expected = "<jingle action=\"transport-info\" initiator=\"romeo@montague.lit/orchard\" sid=\"a73sjjvkla37jfea\" xmlns=\"urn:xmpp:jingle:1\"><content creator=\"initiator\" name=\"ex\"><transport block-size=\"2048\" sid=\"bt8a71h6\" xmlns=\"urn:xmpp:jingle:transports:ibb:1\"/></content></jingle>"; + + JinglePayload payload = new JinglePayload(); + payload.setAction(JinglePayload.Action.TransportInfo); + payload.setInitiator(new JID("romeo@montague.lit/orchard")); + payload.setSessionID("a73sjjvkla37jfea"); + + JingleContentPayload content = new JingleContentPayload(); + content.setCreator(JingleContentPayload.Creator.InitiatorCreator); + content.setName("ex"); + + JingleIBBTransportPayload transport = new JingleIBBTransportPayload(); + transport.setBlockSize(2048); + transport.setSessionID("bt8a71h6"); + + content.addTransport(transport); + payload.addPayload(content); + + assertEquals(expected, createTestling().serialize(payload)); + } + + // http://xmpp.org/extensions/xep-0261.html#example-13 + @Test + public void testSerialize_Xep0261_Example13() { + String expected = "<jingle action=\"session-terminate\" initiator=\"romeo@montague.lit/orchard\" sid=\"a73sjjvkla37jfea\" xmlns=\"urn:xmpp:jingle:1\"><reason><success/></reason></jingle>"; + + JinglePayload payload = new JinglePayload(); + payload.setAction(JinglePayload.Action.SessionTerminate); + payload.setInitiator(new JID("romeo@montague.lit/orchard")); + payload.setSessionID("a73sjjvkla37jfea"); + payload.setReason(new JinglePayload.Reason(JinglePayload.Reason.Type.Success)); + + assertEquals(expected, createTestling().serialize(payload)); + } + + // http://xmpp.org/extensions/xep-0234.html#example-1 + @Test + public void testSerialize_Xep0234_Example1() { + String expected = "<description xmlns=\"urn:xmpp:jingle:apps:file-transfer:4\"><file><date>1969-07-21T02:56:15Z</date><desc>This is a test. If this were a real file...</desc><name>test.txt</name><range/><size>1022</size><hash algo=\"sha-1\" xmlns=\"urn:xmpp:hashes:1\">VS2nSZMIUsaa5dIUHTdmsQ==</hash></file></description>"; + + JingleFileTransferDescription desc = new JingleFileTransferDescription(); + JingleFileTransferFileInfo fileInfo = new JingleFileTransferFileInfo(); + + fileInfo.setDate(DateTime.stringToDate("1969-07-21T02:56:15Z")); + fileInfo.addHash(new HashElement("sha-1", Base64.decode("VS2nSZMIUsaa5dIUHTdmsQ=="))); + fileInfo.setSize(1022); + fileInfo.setName("test.txt"); + fileInfo.setDescription("This is a test. If this were a real file..."); + fileInfo.setSupportsRangeRequests(true); + + desc.setFileInfo(fileInfo); + + assertEquals(expected, new JingleFileTransferDescriptionSerializer().serialize(desc)); + } + + // http://xmpp.org/extensions/xep-0234.html#example-3 + @Test + public void testSerialize_Xep0234_Example3() { + String expected = "<jingle action=\"session-accept\" initiator=\"romeo@montague.lit/orchard\" sid=\"851ba2\" xmlns=\"urn:xmpp:jingle:1\"><content creator=\"initiator\" name=\"a-file-offer\"><description xmlns=\"urn:xmpp:jingle:apps:file-transfer:4\"><file><date>1969-07-21T02:56:15Z</date><desc>This is a test. If this were a real file...</desc><name>test.txt</name><range/><size>1022</size><hash algo=\"sha-1\" xmlns=\"urn:xmpp:hashes:1\">VS2nSZMIUsaa5dIUHTdmsQ==</hash></file></description></content></jingle>"; + + JinglePayload payload = new JinglePayload(); + payload.setAction(JinglePayload.Action.SessionAccept); + payload.setInitiator(new JID("romeo@montague.lit/orchard")); + payload.setSessionID("851ba2"); + + JingleContentPayload content = new JingleContentPayload(); + content.setCreator(JingleContentPayload.Creator.InitiatorCreator); + content.setName("a-file-offer"); + + JingleFileTransferDescription description = new JingleFileTransferDescription(); + JingleFileTransferFileInfo fileInfo = new JingleFileTransferFileInfo(); + fileInfo.setName("test.txt"); + fileInfo.setSize(1022); + fileInfo.addHash(new HashElement("sha-1", Base64.decode("VS2nSZMIUsaa5dIUHTdmsQ=="))); + fileInfo.setDate(DateTime.stringToDate("1969-07-21T02:56:15Z")); + fileInfo.setDescription("This is a test. If this were a real file..."); + fileInfo.setSupportsRangeRequests(true); + + description.setFileInfo(fileInfo); + content.addDescription(description); + payload.addPayload(content); + + assertEquals(expected, createTestling().serialize(payload)); + } + + // http://xmpp.org/extensions/xep-0234.html#example-5 + @Test + public void testSerialize_Xep0234_Example5() { + String expected = "<jingle action=\"transport-info\" initiator=\"romeo@montague.lit/orchard\" sid=\"a73sjjvkla37jfea\" xmlns=\"urn:xmpp:jingle:1\"><content creator=\"initiator\" name=\"ex\"/></jingle>"; + + JinglePayload payload = new JinglePayload(); + payload.setAction(JinglePayload.Action.TransportInfo); + payload.setInitiator(new JID("romeo@montague.lit/orchard")); + payload.setSessionID("a73sjjvkla37jfea"); + + JingleContentPayload content = new JingleContentPayload(); + content.setCreator(JingleContentPayload.Creator.InitiatorCreator); + content.setName("ex"); + payload.addPayload(content); + + assertEquals(expected, createTestling().serialize(payload)); + } + + // http://xmpp.org/extensions/xep-0234.html#example-8 + @Test + public void testSerialize_Xep0234_Example8() { + String expected = "<jingle action=\"session-info\" initiator=\"romeo@montague.lit/orchard\" sid=\"a73sjjvkla37jfea\" xmlns=\"urn:xmpp:jingle:1\"><checksum xmlns=\"urn:xmpp:jingle:apps:file-transfer:4\"><file><hash algo=\"sha-1\" xmlns=\"urn:xmpp:hashes:1\">VS2nSZMIUsaa5dIUHTdmsQ==</hash></file></checksum></jingle>"; + + JinglePayload payload = new JinglePayload(); + payload.setAction(JinglePayload.Action.SessionInfo); + payload.setInitiator(new JID("romeo@montague.lit/orchard")); + payload.setSessionID("a73sjjvkla37jfea"); + + JingleFileTransferHash hash = new JingleFileTransferHash(); + hash.getFileInfo().addHash(new HashElement("sha-1", Base64.decode("VS2nSZMIUsaa5dIUHTdmsQ=="))); + + payload.addPayload(hash); + + assertEquals(expected, createTestling().serialize(payload)); + } + + // http://xmpp.org/extensions/xep-0260.html#example-1 + @Test + public void testSerialize_Xep0260_Example1() { + String expected = "<jingle action=\"session-initiate\" initiator=\"romeo@montague.lit/orchard\" sid=\"a73sjjvkla37jfea\" xmlns=\"urn:xmpp:jingle:1\"><content creator=\"initiator\" name=\"ex\"><transport dstaddr=\"1a12fb7bc625e55f3ed5b29a53dbe0e4aa7d80ba\" mode=\"tcp\" sid=\"vj3hs98y\" xmlns=\"urn:xmpp:jingle:transports:s5b:1\"><candidate cid=\"hft54dqy\" host=\"192.168.4.1\" jid=\"romeo@montague.lit/orchard\" port=\"5086\" priority=\"8257636\" type=\"direct\"/><candidate cid=\"hutr46fe\" host=\"24.24.24.1\" jid=\"romeo@montague.lit/orchard\" port=\"5087\" priority=\"8258636\" type=\"direct\"/></transport></content></jingle>"; + + JinglePayload payload = new JinglePayload(); + payload.setAction(JinglePayload.Action.SessionInitiate); + payload.setInitiator(new JID("romeo@montague.lit/orchard")); + payload.setSessionID("a73sjjvkla37jfea"); + + JingleContentPayload content = new JingleContentPayload(); + content.setCreator(JingleContentPayload.Creator.InitiatorCreator); + content.setName("ex"); + + JingleS5BTransportPayload transport = new JingleS5BTransportPayload(); + transport.setMode(JingleS5BTransportPayload.Mode.TCPMode); + transport.setDstAddr("1a12fb7bc625e55f3ed5b29a53dbe0e4aa7d80ba"); + transport.setSessionID("vj3hs98y"); + + JingleS5BTransportPayload.Candidate candidate1 = new JingleS5BTransportPayload.Candidate(); + candidate1.cid = "hft54dqy"; + try { + candidate1.hostPort = new HostAddressPort(new HostAddress(InetAddress.getByName("192.168.4.1")), 5086); + } catch (UnknownHostException e) { + + } + candidate1.jid = new JID("romeo@montague.lit/orchard"); + candidate1.priority = 8257636; + candidate1.type = JingleS5BTransportPayload.Candidate.Type.DirectType; + transport.addCandidate(candidate1); + + JingleS5BTransportPayload.Candidate candidate2 = new JingleS5BTransportPayload.Candidate(); + candidate2.cid = "hutr46fe"; + try { + candidate2.hostPort = new HostAddressPort(new HostAddress(InetAddress.getByName("24.24.24.1")), 5087); + } catch (UnknownHostException e) { + + } + candidate2.jid = new JID("romeo@montague.lit/orchard"); + candidate2.priority = 8258636; + candidate2.type = JingleS5BTransportPayload.Candidate.Type.DirectType; + transport.addCandidate(candidate2); + + content.addTransport(transport); + + payload.addPayload(content); + + assertEquals(expected, createTestling().serialize(payload)); + } +}
\ No newline at end of file |