summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'test/com/isode/stroke/serializer')
-rw-r--r--test/com/isode/stroke/serializer/AuthChallengeSerializerTest.java61
-rw-r--r--test/com/isode/stroke/serializer/AuthRequestSerializerTest.java62
-rw-r--r--test/com/isode/stroke/serializer/AuthResponseSerializerTest.java62
-rw-r--r--test/com/isode/stroke/serializer/AuthSuccessSerializerTest.java62
-rw-r--r--test/com/isode/stroke/serializer/StreamFeaturesSerializerTest.java59
-rw-r--r--test/com/isode/stroke/serializer/payloadserializers/ErrorSerializerTest.java55
-rw-r--r--test/com/isode/stroke/serializer/payloadserializers/JingleSerializersTest.java287
-rw-r--r--test/com/isode/stroke/serializer/payloadserializers/PayloadsSerializer.java32
-rw-r--r--test/com/isode/stroke/serializer/payloadserializers/PrivateStorageSerializerTest.java55
-rw-r--r--test/com/isode/stroke/serializer/payloadserializers/PubSubItemSerializerTest.java65
-rw-r--r--test/com/isode/stroke/serializer/payloadserializers/PubSubItemsSerializerTest.java86
-rw-r--r--test/com/isode/stroke/serializer/payloadserializers/StorageSerializerTest.java76
12 files changed, 962 insertions, 0 deletions
diff --git a/test/com/isode/stroke/serializer/AuthChallengeSerializerTest.java b/test/com/isode/stroke/serializer/AuthChallengeSerializerTest.java
new file mode 100644
index 0000000..44ed1b8
--- /dev/null
+++ b/test/com/isode/stroke/serializer/AuthChallengeSerializerTest.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2010 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;
+
+import static org.junit.Assert.assertEquals;
+import org.junit.Test;
+import com.isode.stroke.serializer.AuthChallengeSerializer;
+import com.isode.stroke.elements.AuthChallenge;
+import com.isode.stroke.base.ByteArray;
+
+public class AuthChallengeSerializerTest {
+
+ /**
+ * Default Constructor.
+ */
+ public AuthChallengeSerializerTest() {
+
+ }
+
+ @Test
+ public void testSerialize() {
+ AuthChallengeSerializer testling = new AuthChallengeSerializer();
+ AuthChallenge authChallenge = new AuthChallenge();
+ authChallenge.setValue(new ByteArray("foo"));
+
+ assertEquals(
+ "<challenge xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" +
+ "Zm9v" +
+ "</challenge>", testling.serialize(authChallenge));
+ }
+
+ @Test
+ public void testSerialize_NoMessage() {
+ AuthChallengeSerializer testling = new AuthChallengeSerializer();
+ AuthChallenge authChallenge = new AuthChallenge();
+
+ assertEquals(
+ "<challenge xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\"></challenge>", testling.serialize(authChallenge));
+ }
+
+ @Test
+ public void testSerialize_EmptyMessage() {
+ AuthChallengeSerializer testling = new AuthChallengeSerializer();
+ AuthChallenge authChallenge = new AuthChallenge();
+ authChallenge.setValue(new ByteArray());
+
+ assertEquals(
+ "<challenge xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" +
+ "=" +
+ "</challenge>", testling.serialize(authChallenge));
+ }
+} \ No newline at end of file
diff --git a/test/com/isode/stroke/serializer/AuthRequestSerializerTest.java b/test/com/isode/stroke/serializer/AuthRequestSerializerTest.java
new file mode 100644
index 0000000..eae4354
--- /dev/null
+++ b/test/com/isode/stroke/serializer/AuthRequestSerializerTest.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2010 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;
+
+import static org.junit.Assert.assertEquals;
+import org.junit.Test;
+import com.isode.stroke.serializer.AuthRequestSerializer;
+import com.isode.stroke.elements.AuthRequest;
+import com.isode.stroke.base.ByteArray;
+
+public class AuthRequestSerializerTest {
+
+ /**
+ * Default Constructor.
+ */
+ public AuthRequestSerializerTest() {
+
+ }
+
+ @Test
+ public void testSerialize() {
+ AuthRequestSerializer testling = new AuthRequestSerializer();
+ AuthRequest authRequest = new AuthRequest("PLAIN");
+ authRequest.setMessage(new ByteArray("foo"));
+
+ assertEquals(
+ "<auth xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\" mechanism=\"PLAIN\">" +
+ "Zm9v" +
+ "</auth>", testling.serialize(authRequest));
+ }
+
+ @Test
+ public void testSerialize_NoMessage() {
+ AuthRequestSerializer testling = new AuthRequestSerializer();
+ AuthRequest authRequest = new AuthRequest("PLAIN");
+
+ assertEquals(
+ "<auth xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\" mechanism=\"PLAIN\">" +
+ "</auth>", testling.serialize(authRequest));
+ }
+
+ @Test
+ public void testSerialize_EmptyMessage() {
+ AuthRequestSerializer testling = new AuthRequestSerializer();
+ AuthRequest authRequest = new AuthRequest("PLAIN");
+ authRequest.setMessage(new ByteArray());
+
+ assertEquals(
+ "<auth xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\" mechanism=\"PLAIN\">" +
+ "=" +
+ "</auth>", testling.serialize(authRequest));
+ }
+} \ No newline at end of file
diff --git a/test/com/isode/stroke/serializer/AuthResponseSerializerTest.java b/test/com/isode/stroke/serializer/AuthResponseSerializerTest.java
new file mode 100644
index 0000000..9b0fe71
--- /dev/null
+++ b/test/com/isode/stroke/serializer/AuthResponseSerializerTest.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2010 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;
+
+import static org.junit.Assert.assertEquals;
+import org.junit.Test;
+import com.isode.stroke.serializer.AuthResponseSerializer;
+import com.isode.stroke.elements.AuthResponse;
+import com.isode.stroke.base.ByteArray;
+
+public class AuthResponseSerializerTest {
+
+ /**
+ * Default Constructor.
+ */
+ public AuthResponseSerializerTest() {
+
+ }
+
+ @Test
+ public void testSerialize() {
+ AuthResponseSerializer testling = new AuthResponseSerializer();
+ AuthResponse authResponse = new AuthResponse();
+ authResponse.setValue(new ByteArray("foo"));
+
+ assertEquals(
+ "<response xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" +
+ "Zm9v" +
+ "</response>", testling.serialize(authResponse));
+ }
+
+ @Test
+ public void testSerialize_NoMessage() {
+ AuthResponseSerializer testling = new AuthResponseSerializer();
+ AuthResponse authResponse = new AuthResponse();
+
+ assertEquals(
+ "<response xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" +
+ "</response>", testling.serialize(authResponse));
+ }
+
+ @Test
+ public void testSerialize_EmptyMessage() {
+ AuthResponseSerializer testling = new AuthResponseSerializer();
+ AuthResponse authResponse = new AuthResponse();
+ authResponse.setValue(new ByteArray());
+
+ assertEquals(
+ "<response xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" +
+ "" +
+ "</response>", testling.serialize(authResponse));
+ }
+} \ No newline at end of file
diff --git a/test/com/isode/stroke/serializer/AuthSuccessSerializerTest.java b/test/com/isode/stroke/serializer/AuthSuccessSerializerTest.java
new file mode 100644
index 0000000..ee9b595
--- /dev/null
+++ b/test/com/isode/stroke/serializer/AuthSuccessSerializerTest.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2010 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;
+
+import static org.junit.Assert.assertEquals;
+import org.junit.Test;
+import com.isode.stroke.serializer.AuthSuccessSerializer;
+import com.isode.stroke.elements.AuthSuccess;
+import com.isode.stroke.base.ByteArray;
+
+public class AuthSuccessSerializerTest {
+
+ /**
+ * Default Constructor.
+ */
+ public AuthSuccessSerializerTest() {
+
+ }
+
+ @Test
+ public void testSerialize() {
+ AuthSuccessSerializer testling = new AuthSuccessSerializer();
+ AuthSuccess authSuccess = new AuthSuccess();
+ authSuccess.setValue(new ByteArray("foo"));
+
+ assertEquals(
+ "<success xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" +
+ "Zm9v" +
+ "</success>", testling.serialize(authSuccess));
+ }
+
+ @Test
+ public void testSerialize_NoMessage() {
+ AuthSuccessSerializer testling = new AuthSuccessSerializer();
+ AuthSuccess authSuccess = new AuthSuccess();
+
+ assertEquals(
+ "<success xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" +
+ "</success>", testling.serialize(authSuccess));
+ }
+
+ @Test
+ public void testSerialize_EmptyMessage() {
+ AuthSuccessSerializer testling = new AuthSuccessSerializer();
+ AuthSuccess authSuccess = new AuthSuccess();
+ authSuccess.setValue(new ByteArray());
+
+ assertEquals(
+ "<success xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" +
+ "=" +
+ "</success>", testling.serialize(authSuccess));
+ }
+} \ No newline at end of file
diff --git a/test/com/isode/stroke/serializer/StreamFeaturesSerializerTest.java b/test/com/isode/stroke/serializer/StreamFeaturesSerializerTest.java
new file mode 100644
index 0000000..67d9bb0
--- /dev/null
+++ b/test/com/isode/stroke/serializer/StreamFeaturesSerializerTest.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2010 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;
+
+import static org.junit.Assert.assertEquals;
+import org.junit.Test;
+import com.isode.stroke.serializer.StreamFeaturesSerializer;
+import com.isode.stroke.elements.StreamFeatures;
+
+public class StreamFeaturesSerializerTest {
+
+ /**
+ * Default Constructor.
+ */
+ public StreamFeaturesSerializerTest() {
+
+ }
+
+ @Test
+ public void testSerialize() {
+ StreamFeaturesSerializer testling = new StreamFeaturesSerializer();
+ StreamFeatures streamFeatures = new StreamFeatures();
+ streamFeatures.setHasStartTLS();
+ streamFeatures.addCompressionMethod("zlib");
+ streamFeatures.addCompressionMethod("lzw");
+ streamFeatures.addAuthenticationMechanism("DIGEST-MD5");
+ streamFeatures.addAuthenticationMechanism("PLAIN");
+ streamFeatures.setHasResourceBind();
+ streamFeatures.setHasSession();
+ streamFeatures.setHasStreamManagement();
+ streamFeatures.setHasRosterVersioning();
+
+ assertEquals(
+ "<stream:features>"
+ + "<starttls xmlns=\"urn:ietf:params:xml:ns:xmpp-tls\"/>"
+ + "<compression xmlns=\"http://jabber.org/features/compress\">"
+ + "<method>zlib</method>"
+ + "<method>lzw</method>"
+ + "</compression>"
+ + "<mechanisms xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">"
+ + "<mechanism>DIGEST-MD5</mechanism>"
+ + "<mechanism>PLAIN</mechanism>"
+ + "</mechanisms>"
+ + "<bind xmlns=\"urn:ietf:params:xml:ns:xmpp-bind\"/>"
+ + "<session xmlns=\"urn:ietf:params:xml:ns:xmpp-session\"/>"
+ + "<sm xmlns=\"urn:xmpp:sm:2\"/>"
+ + "<ver xmlns=\"urn:xmpp:features:rosterver\"/>"
+ + "</stream:features>", testling.serialize(streamFeatures));
+ }
+} \ No newline at end of file
diff --git a/test/com/isode/stroke/serializer/payloadserializers/ErrorSerializerTest.java b/test/com/isode/stroke/serializer/payloadserializers/ErrorSerializerTest.java
new file mode 100644
index 0000000..42b9904
--- /dev/null
+++ b/test/com/isode/stroke/serializer/payloadserializers/ErrorSerializerTest.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2010-2012 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 org.junit.BeforeClass;
+import com.isode.stroke.serializer.payloadserializers.ErrorSerializer;
+import com.isode.stroke.serializer.payloadserializers.FullPayloadSerializerCollection;
+import com.isode.stroke.elements.ErrorPayload;
+import com.isode.stroke.elements.Delay;
+
+public class ErrorSerializerTest {
+
+ @BeforeClass
+ public static void init() throws Exception {
+ }
+
+ private FullPayloadSerializerCollection serializers = new FullPayloadSerializerCollection();
+
+ /**
+ * Default Constructor.
+ */
+ public ErrorSerializerTest() {
+
+ }
+
+ @Test
+ public void testSerialize() {
+ ErrorSerializer testling = new ErrorSerializer(serializers);
+ ErrorPayload error = new ErrorPayload(ErrorPayload.Condition.BadRequest, ErrorPayload.Type.Cancel, "My Error");
+
+ assertEquals("<error type=\"cancel\"><bad-request xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/><text xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\">My Error</text></error>", testling.serialize(error));
+ }
+
+ @Test
+ public void testSerialize_Payload() {
+ ErrorSerializer testling = new ErrorSerializer(serializers);
+ ErrorPayload error = new ErrorPayload();
+ error.setPayload(new Delay());
+
+ assertEquals(
+ "<error type=\"cancel\"><undefined-condition xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/><delay xmlns=\"urn:xmpp:delay\"/></error>"
+ , testling.serialize(error));
+ }
+} \ No newline at end of file
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
diff --git a/test/com/isode/stroke/serializer/payloadserializers/PayloadsSerializer.java b/test/com/isode/stroke/serializer/payloadserializers/PayloadsSerializer.java
new file mode 100644
index 0000000..2008373
--- /dev/null
+++ b/test/com/isode/stroke/serializer/payloadserializers/PayloadsSerializer.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2010 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 com.isode.stroke.serializer.payloadserializers.FullPayloadSerializerCollection;
+import com.isode.stroke.serializer.PayloadSerializer;
+import com.isode.stroke.elements.Payload;
+
+public class PayloadsSerializer {
+
+ private FullPayloadSerializerCollection serializers = new FullPayloadSerializerCollection();
+
+ public String serialize(Payload payload) {
+ PayloadSerializer serializer = serializers.getPayloadSerializer(payload);
+ if (serializer != null) {
+ return serializer.serialize(payload);
+ }
+ else {
+ assert(false);
+ return "";
+ }
+ }
+} \ No newline at end of file
diff --git a/test/com/isode/stroke/serializer/payloadserializers/PrivateStorageSerializerTest.java b/test/com/isode/stroke/serializer/payloadserializers/PrivateStorageSerializerTest.java
new file mode 100644
index 0000000..9ef2762
--- /dev/null
+++ b/test/com/isode/stroke/serializer/payloadserializers/PrivateStorageSerializerTest.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2010 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.PayloadsSerializer;
+import com.isode.stroke.elements.PrivateStorage;
+import com.isode.stroke.elements.Storage;
+import com.isode.stroke.jid.JID;
+
+public class PrivateStorageSerializerTest {
+
+ /**
+ * Default Constructor.
+ */
+ public PrivateStorageSerializerTest() {
+
+ }
+
+ @Test
+ public void testSerialize() {
+ PayloadsSerializer serializer = new PayloadsSerializer();
+
+ PrivateStorage privateStorage = new PrivateStorage();
+ Storage storage = new Storage();
+ Storage.Room room = new Storage.Room();
+ room.name = "Swift";
+ room.jid = new JID("swift@rooms.swift.im");
+ room.nick = "Alice";
+ storage.addRoom(room);
+ privateStorage.setPayload(storage);
+
+ assertEquals(
+ "<query xmlns=\"jabber:iq:private\">"
+ + "<storage xmlns=\"storage:bookmarks\">"
+ + "<conference "
+ + "autojoin=\"0\" "
+ + "jid=\"swift@rooms.swift.im\" "
+ + "name=\"Swift\">"
+ + "<nick>Alice</nick>"
+ + "</conference>"
+ + "</storage>"
+ + "</query>", serializer.serialize(privateStorage));
+ }
+} \ No newline at end of file
diff --git a/test/com/isode/stroke/serializer/payloadserializers/PubSubItemSerializerTest.java b/test/com/isode/stroke/serializer/payloadserializers/PubSubItemSerializerTest.java
new file mode 100644
index 0000000..af19175
--- /dev/null
+++ b/test/com/isode/stroke/serializer/payloadserializers/PubSubItemSerializerTest.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2014 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.PubSubItemSerializer;
+import com.isode.stroke.serializer.payloadserializers.FullPayloadSerializerCollection;
+import com.isode.stroke.serializer.PayloadSerializerCollection;
+import com.isode.stroke.elements.PubSubItem;
+import com.isode.stroke.elements.RawXMLPayload;
+
+public class PubSubItemSerializerTest {
+
+ private FullPayloadSerializerCollection serializers = new FullPayloadSerializerCollection();
+
+ /**
+ * Default Constructor.
+ */
+ public PubSubItemSerializerTest() {
+
+ }
+
+ @Test
+ public void testSerialize() {
+ PubSubItemSerializer serializer = new PubSubItemSerializer(serializers);
+
+ RawXMLPayload payload = new RawXMLPayload();
+ payload.setRawXML("<payload xmlns=\"tmp\"/>");
+
+ PubSubItem item = new PubSubItem();
+ item.addData(payload);
+ item.setID("pubsub-item-1");
+
+ String expectedResult =
+ "<item id=\"pubsub-item-1\" xmlns=\"http://jabber.org/protocol/pubsub\">"
+ + "<payload xmlns=\"tmp\"/>"
+ + "</item>";
+
+ assertEquals(expectedResult, serializer.serialize(item));
+ }
+
+ @Test
+ public void testSerializeEmptyID() {
+ PubSubItemSerializer serializer = new PubSubItemSerializer(serializers);
+
+ PubSubItem item = new PubSubItem();
+
+ String expectedResult =
+ "<item xmlns=\"http://jabber.org/protocol/pubsub\"/>";
+
+ assertEquals(expectedResult, serializer.serialize(item));
+ }
+
+} \ No newline at end of file
diff --git a/test/com/isode/stroke/serializer/payloadserializers/PubSubItemsSerializerTest.java b/test/com/isode/stroke/serializer/payloadserializers/PubSubItemsSerializerTest.java
new file mode 100644
index 0000000..9745dac
--- /dev/null
+++ b/test/com/isode/stroke/serializer/payloadserializers/PubSubItemsSerializerTest.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2014 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.PubSubItemsSerializer;
+import com.isode.stroke.serializer.payloadserializers.FullPayloadSerializerCollection;
+import com.isode.stroke.serializer.PayloadSerializerCollection;
+import com.isode.stroke.elements.PubSubItem;
+import com.isode.stroke.elements.PubSubItems;
+import com.isode.stroke.elements.RawXMLPayload;
+
+public class PubSubItemsSerializerTest {
+
+ private FullPayloadSerializerCollection serializers = new FullPayloadSerializerCollection();
+
+ /**
+ * Default Constructor.
+ */
+ public PubSubItemsSerializerTest() {
+
+ }
+
+ @Test
+ public void testSerialize() {
+ PubSubItemsSerializer serializer = new PubSubItemsSerializer(serializers);
+
+ RawXMLPayload payload1 = new RawXMLPayload();
+ payload1.setRawXML("<payload xmlns=\"tmp\"/>");
+
+ PubSubItem item1 = new PubSubItem();
+ item1.addData(payload1);
+ item1.setID("pubsub-item-1");
+
+ RawXMLPayload payload2 = new RawXMLPayload();
+ payload2.setRawXML("<payload xmlns=\"other-tmp\"/>");
+
+ PubSubItem item2 = new PubSubItem();
+ item2.addData(payload2);
+ item2.setID("pubsub-item-2");
+
+ PubSubItems items = new PubSubItems();
+ items.setNode("test-node");
+ items.setSubscriptionID("sub-id");
+ items.addItem(item1);
+ items.addItem(item2);
+
+ String expectedResult =
+ "<items node=\"test-node\" subid=\"sub-id\" xmlns=\"http://jabber.org/protocol/pubsub\">"
+ + "<item id=\"pubsub-item-1\" xmlns=\"http://jabber.org/protocol/pubsub\">"
+ + "<payload xmlns=\"tmp\"/>"
+ + "</item>"
+ + "<item id=\"pubsub-item-2\" xmlns=\"http://jabber.org/protocol/pubsub\">"
+ + "<payload xmlns=\"other-tmp\"/>"
+ + "</item>"
+ + "</items>";
+
+ assertEquals(expectedResult, serializer.serialize(items));
+ }
+
+ @Test
+ public void testSerializeEmptyItems() {
+ PubSubItemsSerializer serializer = new PubSubItemsSerializer(serializers);
+
+ PubSubItems items = new PubSubItems();
+
+ // Swiften code doesn't check for node being null in serializer and therefore will have extra node=\"\",
+ // BUT since it is being check in serializer here, there will be no node.
+ String expectedResult =
+ "<items xmlns=\"http://jabber.org/protocol/pubsub\"/>";
+
+ assertEquals(expectedResult, serializer.serialize(items));
+ }
+
+} \ No newline at end of file
diff --git a/test/com/isode/stroke/serializer/payloadserializers/StorageSerializerTest.java b/test/com/isode/stroke/serializer/payloadserializers/StorageSerializerTest.java
new file mode 100644
index 0000000..036b366
--- /dev/null
+++ b/test/com/isode/stroke/serializer/payloadserializers/StorageSerializerTest.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2010 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.PayloadsSerializer;
+import com.isode.stroke.elements.Storage;
+import com.isode.stroke.jid.JID;
+
+public class StorageSerializerTest {
+
+ /**
+ * Default Constructor.
+ */
+ public StorageSerializerTest() {
+
+ }
+
+ @Test
+ public void testSerialize() {
+ PayloadsSerializer serializer = new PayloadsSerializer();
+ Storage storage = new Storage();
+ Storage.Room room = new Storage.Room();
+ room.name = "Council of Oberon";
+ room.autoJoin = true;
+ room.jid = new JID("council@conference.underhill.org");
+ room.nick = "Puck";
+ room.password = "MyPass";
+ storage.addRoom(room);
+ Storage.URL url = new Storage.URL();
+ url.name = "Complete Works of Shakespeare";
+ url.url = "http://the-tech.mit.edu/Shakespeare/";
+ storage.addURL(url);
+
+ assertEquals(
+ "<storage xmlns=\"storage:bookmarks\">"
+ + "<conference "
+ + "autojoin=\"1\" "
+ + "jid=\"council@conference.underhill.org\" "
+ + "name=\"Council of Oberon\">"
+ + "<nick>Puck</nick>"
+ + "<password>MyPass</password>"
+ + "</conference>"
+ + "<url name=\"Complete Works of Shakespeare\" url=\"http://the-tech.mit.edu/Shakespeare/\"/>"
+ + "</storage>", serializer.serialize(storage));
+ }
+
+ @Test
+ public void testSerialize_NoNickOrPassword() {
+ PayloadsSerializer serializer = new PayloadsSerializer();
+ Storage storage = new Storage();
+ Storage.Room room = new Storage.Room();
+ room.name = "Council of Oberon";
+ room.autoJoin = true;
+ room.jid = new JID("council@conference.underhill.org");
+ storage.addRoom(room);
+
+ assertEquals(
+ "<storage xmlns=\"storage:bookmarks\">"
+ + "<conference "
+ + "autojoin=\"1\" "
+ + "jid=\"council@conference.underhill.org\" "
+ + "name=\"Council of Oberon\"/>"
+ + "</storage>", serializer.serialize(storage));
+ }
+} \ No newline at end of file