/*
* 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 = "This is a test. If this were a real 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 = "";
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 = "";
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 = "";
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 = "";
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 = "1969-07-21T02:56:15ZThis is a test. If this were a real file...test.txt1022VS2nSZMIUsaa5dIUHTdmsQ==";
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 = "1969-07-21T02:56:15ZThis is a test. If this were a real file...test.txt1022VS2nSZMIUsaa5dIUHTdmsQ==";
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 = "";
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 = "VS2nSZMIUsaa5dIUHTdmsQ==";
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 = "";
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));
}
}