diff options
Diffstat (limited to 'test/com/isode/stroke/serializer')
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 |