summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'test/com/isode/stroke/parser/payloadparsers')
-rw-r--r--test/com/isode/stroke/parser/payloadparsers/DeliveryReceiptParserTest.java52
-rw-r--r--test/com/isode/stroke/parser/payloadparsers/DiscoInfoParserTest.java115
-rw-r--r--test/com/isode/stroke/parser/payloadparsers/DiscoItemsParserTest.java50
-rw-r--r--test/com/isode/stroke/parser/payloadparsers/ReplaceTest.java46
-rw-r--r--test/com/isode/stroke/parser/payloadparsers/ResourceBindParserTest.java51
-rw-r--r--test/com/isode/stroke/parser/payloadparsers/SecurityLabelParserTest.java56
-rw-r--r--test/com/isode/stroke/parser/payloadparsers/SecurityLabelsCatalogParserTest.java69
-rw-r--r--test/com/isode/stroke/parser/payloadparsers/SoftwareVersionParserTest.java45
-rw-r--r--test/com/isode/stroke/parser/payloadparsers/StatusParserTest.java38
-rw-r--r--test/com/isode/stroke/parser/payloadparsers/StatusShowParserTest.java78
-rw-r--r--test/com/isode/stroke/parser/payloadparsers/VCardParserTest.java215
11 files changed, 815 insertions, 0 deletions
diff --git a/test/com/isode/stroke/parser/payloadparsers/DeliveryReceiptParserTest.java b/test/com/isode/stroke/parser/payloadparsers/DeliveryReceiptParserTest.java
new file mode 100644
index 0000000..fc74067
--- /dev/null
+++ b/test/com/isode/stroke/parser/payloadparsers/DeliveryReceiptParserTest.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2011 Tobias Markmann
+ * Licensed under the BSD license.
+ * See http://www.opensource.org/licenses/bsd-license.php 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.parser.payloadparsers;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import org.junit.Test;
+import com.isode.stroke.elements.DeliveryReceiptRequest;
+import com.isode.stroke.elements.DeliveryReceipt;
+import com.isode.stroke.parser.payloadparsers.DeliveryReceiptParser;
+import com.isode.stroke.parser.payloadparsers.DeliveryReceiptRequestParser;
+import com.isode.stroke.parser.payloadparsers.PayloadsParserTester;
+import com.isode.stroke.eventloop.DummyEventLoop;
+
+public class DeliveryReceiptParserTest {
+
+ public DeliveryReceiptParserTest() {
+
+ }
+
+ @Test
+ public void testParseXEP0184Example3() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+ assertNotNull(parser.parse("<request xmlns='urn:xmpp:receipts'/>"));
+
+ DeliveryReceiptRequest request = (DeliveryReceiptRequest)(parser.getPayload());
+
+ assertNotNull(request);
+ }
+
+ @Test
+ public void testParseXEP0184Example4() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+ assertNotNull(parser.parse("<received xmlns='urn:xmpp:receipts' id='richard2-4.1.247'/>"));
+
+ DeliveryReceipt receipt = (DeliveryReceipt)(parser.getPayload());
+
+ assertEquals("richard2-4.1.247", receipt.getReceivedID());
+ }
+} \ No newline at end of file
diff --git a/test/com/isode/stroke/parser/payloadparsers/DiscoInfoParserTest.java b/test/com/isode/stroke/parser/payloadparsers/DiscoInfoParserTest.java
new file mode 100644
index 0000000..ef6fd72
--- /dev/null
+++ b/test/com/isode/stroke/parser/payloadparsers/DiscoInfoParserTest.java
@@ -0,0 +1,115 @@
+/*
+ * 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.parser.payloadparsers;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import org.junit.Test;
+import com.isode.stroke.elements.DiscoInfo;
+import com.isode.stroke.parser.payloadparsers.DiscoInfoParser;
+import com.isode.stroke.parser.payloadparsers.PayloadsParserTester;
+import com.isode.stroke.eventloop.DummyEventLoop;
+
+public class DiscoInfoParserTest {
+
+ public DiscoInfoParserTest() {
+
+ }
+
+ @Test
+ public void testParse() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+
+ assertNotNull(parser.parse(
+ "<query xmlns=\"http://jabber.org/protocol/disco#info\">" +
+ "<identity name=\"Swift\" category=\"client\" type=\"pc\" xml:lang=\"en\"/>" +
+ "<identity name=\"Vlug\" category=\"client\" type=\"pc\" xml:lang=\"nl\"/>" +
+ "<feature var=\"foo-feature\"/>" +
+ "<feature var=\"bar-feature\"/>" +
+ "<feature var=\"baz-feature\"/>" +
+ "</query>"));
+
+ DiscoInfo payload = (DiscoInfo)(parser.getPayload());
+ assertEquals(2, payload.getIdentities().size());
+ assertEquals("Swift", payload.getIdentities().get(0).getName());
+ assertEquals("pc", payload.getIdentities().get(0).getType());
+ assertEquals("client", payload.getIdentities().get(0).getCategory());
+ assertEquals("en", payload.getIdentities().get(0).getLanguage());
+ assertEquals("Vlug", payload.getIdentities().get(1).getName());
+ assertEquals("pc", payload.getIdentities().get(1).getType());
+ assertEquals("client", payload.getIdentities().get(1).getCategory());
+ assertEquals("nl", payload.getIdentities().get(1).getLanguage());
+ assertEquals(3, payload.getFeatures().size());
+ assertEquals("foo-feature", payload.getFeatures().get(0));
+ assertEquals("bar-feature", payload.getFeatures().get(1));
+ assertEquals("baz-feature", payload.getFeatures().get(2));
+ assertTrue(payload.getNode().isEmpty());
+ }
+
+ @Test
+ public void testParse_Node() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+
+ assertNotNull(parser.parse(
+ "<query xmlns=\"http://jabber.org/protocol/disco#info\" node=\"blahblah\">" +
+ "<identity name=\"Swift\" category=\"client\" type=\"pc\" xml:lang=\"en\"/>" +
+ "<identity name=\"Vlug\" category=\"client\" type=\"pc\" xml:lang=\"nl\"/>" +
+ "<feature var=\"foo-feature\"/>" +
+ "<feature var=\"bar-feature\"/>" +
+ "<feature var=\"baz-feature\"/>" +
+ "</query>"));
+
+ DiscoInfo payload = (DiscoInfo)(parser.getPayload());
+ assertEquals(2, payload.getIdentities().size());
+ assertEquals("Swift", payload.getIdentities().get(0).getName());
+ assertEquals("pc", payload.getIdentities().get(0).getType());
+ assertEquals("client", payload.getIdentities().get(0).getCategory());
+ assertEquals("en", payload.getIdentities().get(0).getLanguage());
+ assertEquals("Vlug", payload.getIdentities().get(1).getName());
+ assertEquals("pc", payload.getIdentities().get(1).getType());
+ assertEquals("client", payload.getIdentities().get(1).getCategory());
+ assertEquals("nl", payload.getIdentities().get(1).getLanguage());
+ assertEquals(3, payload.getFeatures().size());
+ assertEquals("foo-feature", payload.getFeatures().get(0));
+ assertEquals("bar-feature", payload.getFeatures().get(1));
+ assertEquals("baz-feature", payload.getFeatures().get(2));
+ assertEquals("blahblah", payload.getNode());
+ }
+
+ @Test
+ public void testParse_Form() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+
+ assertNotNull(parser.parse(
+ "<query xmlns=\"http://jabber.org/protocol/disco#info\">" +
+ "<feature var=\"foo-feature\"/>" +
+ "<x type=\"submit\" xmlns=\"jabber:x:data\">" +
+ "<title>Bot Configuration</title>" +
+ "<instructions>Hello!</instructions>" +
+ "</x>" +
+ "<feature var=\"bar-feature\"/>" +
+ "</query>"));
+
+ DiscoInfo payload = (DiscoInfo)(parser.getPayload());
+ assertEquals(1, payload.getExtensions().size());
+ assertEquals("Bot Configuration", payload.getExtensions().get(0).getTitle());
+ assertEquals(2, payload.getFeatures().size());
+ assertEquals("foo-feature", payload.getFeatures().get(0));
+ assertEquals("bar-feature", payload.getFeatures().get(1));
+ }
+} \ No newline at end of file
diff --git a/test/com/isode/stroke/parser/payloadparsers/DiscoItemsParserTest.java b/test/com/isode/stroke/parser/payloadparsers/DiscoItemsParserTest.java
new file mode 100644
index 0000000..2564633
--- /dev/null
+++ b/test/com/isode/stroke/parser/payloadparsers/DiscoItemsParserTest.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2012 Jan Kaluza
+ * Licensed under the Simplified BSD license.
+ * See Documentation/Licenses/BSD-simplified.txt 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.parser.payloadparsers;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import org.junit.Test;
+import com.isode.stroke.elements.DiscoItems;
+import com.isode.stroke.parser.payloadparsers.DiscoItemsParser;
+import com.isode.stroke.parser.payloadparsers.PayloadsParserTester;
+import com.isode.stroke.eventloop.DummyEventLoop;
+
+public class DiscoItemsParserTest {
+
+ public DiscoItemsParserTest() {
+
+ }
+
+ @Test
+ public void testParse() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+
+ assertNotNull(parser.parse(
+ "<query xmlns='http://jabber.org/protocol/disco#items' node='http://jabber.org/protocol/commands'>" +
+ "<item jid='responder@domain' node='list' name='List Service Configurations'/>" +
+ "<item jid='responder@domain' node='config' name='Configure Service'/>" +
+ "</query>"));
+
+ DiscoItems payload =(DiscoItems)(parser.getPayload());
+ assertEquals(2, payload.getItems().size());
+ assertEquals("List Service Configurations", payload.getItems().get(0).getName());
+ assertEquals("list", payload.getItems().get(0).getNode());
+ assertEquals("responder@domain", payload.getItems().get(0).getJID().toString());
+ assertEquals("Configure Service", payload.getItems().get(1).getName());
+ assertEquals("config", payload.getItems().get(1).getNode());
+ assertEquals("responder@domain", payload.getItems().get(1).getJID().toString());
+ assertEquals("http://jabber.org/protocol/commands", payload.getNode());
+ }
+} \ No newline at end of file
diff --git a/test/com/isode/stroke/parser/payloadparsers/ReplaceTest.java b/test/com/isode/stroke/parser/payloadparsers/ReplaceTest.java
new file mode 100644
index 0000000..256a09e
--- /dev/null
+++ b/test/com/isode/stroke/parser/payloadparsers/ReplaceTest.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2011 Vlad Voicu
+ * Licensed under the Simplified BSD license.
+ * See Documentation/Licenses/BSD-simplified.txt 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.parser.payloadparsers;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import org.junit.Test;
+import com.isode.stroke.elements.Replace;
+import com.isode.stroke.parser.payloadparsers.ReplaceParser;
+import com.isode.stroke.parser.payloadparsers.PayloadsParserTester;
+import com.isode.stroke.eventloop.DummyEventLoop;
+
+public class ReplaceTest {
+
+ public ReplaceTest() {
+
+ }
+
+ @Test
+ public void testParseTrivial() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+ assertNotNull(parser.parse("<replace id='bad1' xmlns='http://swift.im/protocol/replace'/>"));
+ Replace payload = (Replace)(parser.getPayload());
+ assertEquals("bad1", payload.getID());
+ }
+
+ @Test
+ public void testParseChild() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+ assertNotNull(parser.parse("<replace id='bad1' xmlns='http://swift.im/protocol/replace' ><child xmlns='blah' id=\"hi\"/></replace>"));
+ Replace payload = (Replace)(parser.getPayload());
+ assertEquals("bad1", payload.getID());
+ }
+} \ No newline at end of file
diff --git a/test/com/isode/stroke/parser/payloadparsers/ResourceBindParserTest.java b/test/com/isode/stroke/parser/payloadparsers/ResourceBindParserTest.java
new file mode 100644
index 0000000..337876a
--- /dev/null
+++ b/test/com/isode/stroke/parser/payloadparsers/ResourceBindParserTest.java
@@ -0,0 +1,51 @@
+/*
+ * 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.parser.payloadparsers;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import org.junit.Test;
+import com.isode.stroke.elements.ResourceBind;
+import com.isode.stroke.parser.payloadparsers.ResourceBindParser;
+import com.isode.stroke.parser.payloadparsers.PayloadsParserTester;
+import com.isode.stroke.eventloop.DummyEventLoop;
+import com.isode.stroke.jid.JID;
+
+public class ResourceBindParserTest {
+
+ public ResourceBindParserTest() {
+
+ }
+
+ @Test
+ public void testParse_JID() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+
+ assertNotNull(parser.parse("<bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'><jid>somenode@example.com/someresource</jid></bind>"));
+
+ ResourceBind payload = (ResourceBind)(parser.getPayload());
+ assertEquals(new JID("somenode@example.com/someresource"), payload.getJID());
+ }
+
+ @Test
+ public void testParse_Resource() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+
+ assertNotNull(parser.parse("<bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'><resource>someresource</resource></bind>"));
+
+ ResourceBind payload = (ResourceBind)(parser.getPayload());
+ assertEquals("someresource", payload.getResource());
+ }
+} \ No newline at end of file
diff --git a/test/com/isode/stroke/parser/payloadparsers/SecurityLabelParserTest.java b/test/com/isode/stroke/parser/payloadparsers/SecurityLabelParserTest.java
new file mode 100644
index 0000000..7c97ee1
--- /dev/null
+++ b/test/com/isode/stroke/parser/payloadparsers/SecurityLabelParserTest.java
@@ -0,0 +1,56 @@
+/*
+ * 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.parser.payloadparsers;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import org.junit.Test;
+import com.isode.stroke.elements.SecurityLabel;
+import com.isode.stroke.parser.payloadparsers.SecurityLabelParser;
+import com.isode.stroke.parser.payloadparsers.PayloadsParserTester;
+import com.isode.stroke.eventloop.DummyEventLoop;
+
+public class SecurityLabelParserTest {
+
+ public SecurityLabelParserTest() {
+
+ }
+
+ @Test
+ public void testParse() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+
+ assertNotNull(parser.parse(
+ "<securitylabel xmlns=\"urn:xmpp:sec-label:0\">" +
+ "<displaymarking fgcolor=\"black\" bgcolor=\"red\">SECRET</displaymarking>" +
+ "<label>" +
+ "<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQYCAQQGASk=</esssecuritylabel>" +
+ "</label>" +
+ "<equivalentlabel>" +
+ "<icismlabel xmlns=\"http://example.gov/IC-ISM/0\" classification=\"S\" ownerProducer=\"USA\" disseminationControls=\"FOUO\"/>" +
+ "</equivalentlabel>" +
+ "<equivalentlabel>" +
+ "<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MRUCAgD9DA9BcXVhIChvYnNvbGV0ZSk=</esssecuritylabel>" +
+ "</equivalentlabel>" +
+ "</securitylabel>"));
+
+ SecurityLabel payload = (SecurityLabel)(parser.getPayload());
+ assertEquals("SECRET", payload.getDisplayMarking());
+ assertEquals("black", payload.getForegroundColor());
+ assertEquals("red", payload.getBackgroundColor());
+ assertEquals("<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQYCAQQGASk=</esssecuritylabel>", payload.getLabel());
+ assertEquals("<icismlabel classification=\"S\" disseminationControls=\"FOUO\" ownerProducer=\"USA\" xmlns=\"http://example.gov/IC-ISM/0\"/>", payload.getEquivalentLabels().toArray()[0]);
+ assertEquals("<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MRUCAgD9DA9BcXVhIChvYnNvbGV0ZSk=</esssecuritylabel>", payload.getEquivalentLabels().toArray()[1]);
+ }
+} \ No newline at end of file
diff --git a/test/com/isode/stroke/parser/payloadparsers/SecurityLabelsCatalogParserTest.java b/test/com/isode/stroke/parser/payloadparsers/SecurityLabelsCatalogParserTest.java
new file mode 100644
index 0000000..49bc4aa
--- /dev/null
+++ b/test/com/isode/stroke/parser/payloadparsers/SecurityLabelsCatalogParserTest.java
@@ -0,0 +1,69 @@
+/*
+ * 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.parser.payloadparsers;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import org.junit.Test;
+import com.isode.stroke.elements.SecurityLabelsCatalog;
+import com.isode.stroke.parser.payloadparsers.SecurityLabelsCatalogParser;
+import com.isode.stroke.parser.payloadparsers.PayloadsParserTester;
+import com.isode.stroke.eventloop.DummyEventLoop;
+import com.isode.stroke.jid.JID;
+
+public class SecurityLabelsCatalogParserTest {
+
+ public SecurityLabelsCatalogParserTest() {
+
+ }
+
+ @Test
+ public void testParse() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+
+ assertNotNull(parser.parse(
+ "<catalog desc=\"an example set of labels\" name=\"Default\" to=\"example.com\" xmlns=\"urn:xmpp:sec-label:catalog:2\">"
+ + "<item selector='Classified|SECRET'>"
+ + "<securitylabel xmlns=\"urn:xmpp:sec-label:0\">"
+ + "<displaymarking bgcolor=\"red\" fgcolor=\"black\">SECRET</displaymarking>"
+ + "<label><esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQYCAQQGASk=</esssecuritylabel></label>"
+ + "</securitylabel>"
+ + "</item>"
+ + "<item selector='Classified|CONFIDENTIAL' default='true'>"
+ + "<securitylabel xmlns=\"urn:xmpp:sec-label:0\">"
+ + "<displaymarking bgcolor=\"navy\" fgcolor=\"black\">CONFIDENTIAL</displaymarking>"
+ + "<label><esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQMGASk=</esssecuritylabel></label>"
+ + "</securitylabel>"
+ + "</item>"
+ + "<item selector='Unclassified|UNCLASSIFIED'/>"
+ + "</catalog>"));
+
+ SecurityLabelsCatalog payload = (SecurityLabelsCatalog)(parser.getPayload());
+ assertEquals("Default", payload.getName());
+ assertEquals("an example set of labels", payload.getDescription());
+ assertEquals(new JID("example.com"), payload.getTo());
+ assertEquals(3, payload.getItems().size());
+ assertEquals("SECRET", payload.getItems().get(0).getLabel().getDisplayMarking());
+ assertEquals("<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQYCAQQGASk=</esssecuritylabel>", payload.getItems().get(0).getLabel().getLabel());
+ assertEquals(false, payload.getItems().get(0).getIsDefault());
+ assertEquals("Classified|SECRET", payload.getItems().get(0).getSelector());
+ assertEquals("CONFIDENTIAL", payload.getItems().get(1).getLabel().getDisplayMarking());
+ assertEquals("<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQMGASk=</esssecuritylabel>", payload.getItems().get(1).getLabel().getLabel());
+ assertEquals(true, payload.getItems().get(1).getIsDefault());
+ assertEquals("Classified|CONFIDENTIAL", payload.getItems().get(1).getSelector());
+ assertEquals(false, payload.getItems().get(2).getIsDefault());
+ assertEquals("Unclassified|UNCLASSIFIED", payload.getItems().get(2).getSelector());
+ assertNull(payload.getItems().get(2).getLabel());
+ }
+} \ No newline at end of file
diff --git a/test/com/isode/stroke/parser/payloadparsers/SoftwareVersionParserTest.java b/test/com/isode/stroke/parser/payloadparsers/SoftwareVersionParserTest.java
new file mode 100644
index 0000000..46617bf
--- /dev/null
+++ b/test/com/isode/stroke/parser/payloadparsers/SoftwareVersionParserTest.java
@@ -0,0 +1,45 @@
+/*
+ * 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.parser.payloadparsers;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import org.junit.Test;
+import com.isode.stroke.elements.SoftwareVersion;
+import com.isode.stroke.parser.payloadparsers.SoftwareVersionParser;
+import com.isode.stroke.parser.payloadparsers.PayloadsParserTester;
+import com.isode.stroke.eventloop.DummyEventLoop;
+
+public class SoftwareVersionParserTest {
+
+ public SoftwareVersionParserTest() {
+
+ }
+
+ @Test
+ public void testParse() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+ assertNotNull(parser.parse("<query xmlns=\"jabber:iq:version\">"
+ + "<name>myclient</name>"
+ + "<version>1.0</version>"
+ + "<os>Mac OS X</os>"
+ + "</query>"));
+
+ SoftwareVersion payload = (SoftwareVersion)parser.getPayload();
+ assertEquals("myclient", payload.getName());
+ assertEquals("1.0", payload.getVersion());
+ assertEquals("Mac OS X", payload.getOS());
+ }
+} \ No newline at end of file
diff --git a/test/com/isode/stroke/parser/payloadparsers/StatusParserTest.java b/test/com/isode/stroke/parser/payloadparsers/StatusParserTest.java
new file mode 100644
index 0000000..3ecc736
--- /dev/null
+++ b/test/com/isode/stroke/parser/payloadparsers/StatusParserTest.java
@@ -0,0 +1,38 @@
+/*
+ * 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.parser.payloadparsers;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import org.junit.Test;
+import com.isode.stroke.elements.Status;
+import com.isode.stroke.parser.payloadparsers.StatusParser;
+import com.isode.stroke.parser.payloadparsers.PayloadsParserTester;
+import com.isode.stroke.eventloop.DummyEventLoop;
+
+public class StatusParserTest {
+
+ public StatusParserTest() {
+
+ }
+
+ @Test
+ public void testParse() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+ assertNotNull(parser.parse("<status>foo<baz>bar</baz>fum</status>"));
+
+ Status payload = (Status)(parser.getPayload());
+ assertEquals("foobarfum", payload.getText());
+ }
+} \ No newline at end of file
diff --git a/test/com/isode/stroke/parser/payloadparsers/StatusShowParserTest.java b/test/com/isode/stroke/parser/payloadparsers/StatusShowParserTest.java
new file mode 100644
index 0000000..6e30f1c
--- /dev/null
+++ b/test/com/isode/stroke/parser/payloadparsers/StatusShowParserTest.java
@@ -0,0 +1,78 @@
+/*
+ * 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.parser.payloadparsers;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import org.junit.Test;
+import com.isode.stroke.elements.StatusShow;
+import com.isode.stroke.parser.payloadparsers.StatusShowParser;
+import com.isode.stroke.parser.payloadparsers.PayloadsParserTester;
+import com.isode.stroke.eventloop.DummyEventLoop;
+
+public class StatusShowParserTest {
+
+ public StatusShowParserTest() {
+
+ }
+
+ @Test
+ public void testParse_Invalid() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+ assertNotNull(parser.parse("<show>invalid</show>"));
+
+ StatusShow payload = (StatusShow)(parser.getPayload());
+ assertEquals(StatusShow.Type.Online, payload.getType());
+ }
+
+ @Test
+ public void testParse_Away() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+ assertNotNull(parser.parse("<show>away</show>"));
+
+ StatusShow payload = (StatusShow)(parser.getPayload());
+ assertEquals(StatusShow.Type.Away, payload.getType());
+ }
+
+ @Test
+ public void testParse_FFC() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+ assertNotNull(parser.parse("<show>chat</show>"));
+
+ StatusShow payload = (StatusShow)(parser.getPayload());
+ assertEquals(StatusShow.Type.FFC, payload.getType());
+ }
+
+ @Test
+ public void testParse_XA() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+ assertNotNull(parser.parse("<show>xa</show>"));
+
+ StatusShow payload = (StatusShow)(parser.getPayload());
+ assertEquals(StatusShow.Type.XA, payload.getType());
+ }
+
+ @Test
+ public void testParse_DND() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+ assertNotNull(parser.parse("<show>dnd</show>"));
+
+ StatusShow payload = (StatusShow)(parser.getPayload());
+ assertEquals(StatusShow.Type.DND, payload.getType());
+ }
+} \ No newline at end of file
diff --git a/test/com/isode/stroke/parser/payloadparsers/VCardParserTest.java b/test/com/isode/stroke/parser/payloadparsers/VCardParserTest.java
new file mode 100644
index 0000000..292df11
--- /dev/null
+++ b/test/com/isode/stroke/parser/payloadparsers/VCardParserTest.java
@@ -0,0 +1,215 @@
+/*
+ * 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.parser.payloadparsers;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertNotNull;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.isode.stroke.elements.VCard;
+import com.isode.stroke.elements.Payload;
+import com.isode.stroke.parser.payloadparsers.VCardParser;
+import com.isode.stroke.parser.payloadparsers.PayloadsParserTester;
+import com.isode.stroke.eventloop.DummyEventLoop;
+import com.isode.stroke.jid.JID;
+import com.isode.stroke.base.DateTime;
+import com.isode.stroke.base.ByteArray;
+import com.isode.stroke.stringcodecs.Hexify;
+
+public class VCardParserTest {
+
+ @Test
+ public void testParse() {
+ DummyEventLoop eventloop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventloop);
+
+ assertNotNull(parser.parse(
+ "<vCard xmlns=\"vcard-temp\">" +
+ "<VERSION>2.0</VERSION>" +
+ "<FN>Alice In Wonderland</FN>" +
+ "<N>" +
+ "<FAMILY>Wonderland</FAMILY>" +
+ "<GIVEN>Alice</GIVEN>" +
+ "<MIDDLE>In</MIDDLE>" +
+ "<PREFIX>Mrs</PREFIX>" +
+ "<SUFFIX>PhD</SUFFIX>" +
+ "</N>" +
+ "<EMAIL>" +
+ "<USERID>alice@wonderland.lit</USERID>" +
+ "<HOME/>" +
+ "<INTERNET/>" +
+ "<PREF/>" +
+ "</EMAIL>" +
+ "<EMAIL>" +
+ "<USERID>alice@teaparty.lit</USERID>" +
+ "<WORK/>" +
+ "<X400/>" +
+ "</EMAIL>" +
+ "<TEL>" +
+ "<NUMBER>555-6273</NUMBER>" +
+ "<HOME/>" +
+ "<VOICE/>" +
+ "</TEL>" +
+ "<ADR>" +
+ "<LOCALITY>Any Town</LOCALITY>" +
+ "<STREET>Fake Street 123</STREET>" +
+ "<PCODE>12345</PCODE>" +
+ "<CTRY>USA</CTRY>" +
+ "<HOME/>" +
+ "</ADR>" +
+ "<LABEL>" +
+ "<LINE>Fake Street 123</LINE>" +
+ "<LINE>12345 Any Town</LINE>" +
+ "<LINE>USA</LINE>" +
+ "<HOME/>" +
+ "</LABEL>" +
+ "<NICKNAME>DreamGirl</NICKNAME>" +
+ "<BDAY>1865-05-04T00:00:00Z</BDAY>" +
+ "<JID>alice@teaparty.lit</JID>" +
+ "<JID>alice@wonderland.lit</JID>" +
+ "<DESC>I once fell down a rabbit hole.</DESC>" +
+ "<ORG>" +
+ "<ORGNAME>Alice In Wonderland Inc.</ORGNAME>" +
+ "</ORG>" +
+ "<TITLE>Some Title</TITLE>" +
+ "<ROLE>Main Character</ROLE>" +
+ "<URL>http://wonderland.lit/~alice</URL>" +
+ "<URL>http://teaparty.lit/~alice2</URL>" +
+ "<MAILER>mutt</MAILER>" +
+ "</vCard>"));
+
+ VCard payload = (VCard)(parser.getPayload());
+ assertEquals(("2.0"), payload.getVersion());
+ assertEquals(("Alice In Wonderland"), payload.getFullName());
+ assertEquals(("Alice"), payload.getGivenName());
+ assertEquals(("In"), payload.getMiddleName());
+ assertEquals(("Wonderland"), payload.getFamilyName());
+ assertEquals(("Mrs"), payload.getPrefix());
+ assertEquals(("PhD"), payload.getSuffix());
+ assertEquals(("DreamGirl"), payload.getNickname());
+ assertEquals(DateTime.stringToDate("1865-05-04T00:00:00Z"), payload.getBirthday());
+ assertEquals(2, (payload.getEMailAddresses().size()));
+ assertEquals(("alice@wonderland.lit"), payload.getEMailAddresses().get(0).address);
+ assertTrue(payload.getEMailAddresses().get(0).isHome);
+ assertTrue(payload.getEMailAddresses().get(0).isInternet);
+ assertTrue(payload.getEMailAddresses().get(0).isPreferred);
+ assertFalse(payload.getEMailAddresses().get(0).isWork);
+ assertFalse(payload.getEMailAddresses().get(0).isX400);
+ assertEquals(("alice@teaparty.lit"), payload.getEMailAddresses().get(1).address);
+ assertFalse(payload.getEMailAddresses().get(1).isHome);
+ assertFalse(payload.getEMailAddresses().get(1).isInternet);
+ assertFalse(payload.getEMailAddresses().get(1).isPreferred);
+ assertTrue(payload.getEMailAddresses().get(1).isWork);
+ assertTrue(payload.getEMailAddresses().get(1).isX400);
+
+ assertEquals(1, (payload.getTelephones().size()));
+ assertEquals(("555-6273"), payload.getTelephones().get(0).number);
+ assertTrue(payload.getTelephones().get(0).isHome);
+ assertTrue(payload.getTelephones().get(0).isVoice);
+ assertFalse(payload.getTelephones().get(0).isPreferred);
+
+ assertEquals(1, (payload.getAddresses().size()));
+ assertEquals(("Any Town"), payload.getAddresses().get(0).locality);
+ assertEquals(("Fake Street 123"), payload.getAddresses().get(0).street);
+ assertEquals(("12345"), payload.getAddresses().get(0).postalCode);
+ assertEquals(("USA"), payload.getAddresses().get(0).country);
+ assertTrue(payload.getAddresses().get(0).isHome);
+
+ assertEquals(1, (payload.getAddressLabels().size()));
+ assertEquals(("Fake Street 123"), payload.getAddressLabels().get(0).lines.get(0));
+ assertEquals(("12345 Any Town"), payload.getAddressLabels().get(0).lines.get(1));
+ assertEquals(("USA"), payload.getAddressLabels().get(0).lines.get(2));
+ assertTrue(payload.getAddressLabels().get(0).isHome);
+
+ assertEquals(2, (payload.getJIDs().size()));
+ assertEquals(new JID("alice@teaparty.lit"), payload.getJIDs().get(0));
+ assertEquals(new JID("alice@wonderland.lit"), payload.getJIDs().get(1));
+
+ assertEquals(("I once fell down a rabbit hole."), payload.getDescription());
+
+ assertEquals(1, (payload.getOrganizations().size()));
+ assertEquals(("Alice In Wonderland Inc."), payload.getOrganizations().get(0).name);
+ assertEquals(0, (payload.getOrganizations().get(0).units.size()));
+
+ assertEquals(1, (payload.getTitles().size()));
+ assertEquals(("Some Title"), payload.getTitles().get(0));
+ assertEquals(1, (payload.getRoles().size()));
+ assertEquals(("Main Character"), payload.getRoles().get(0));
+ assertEquals(2, (payload.getURLs().size()));
+ assertEquals(("http://wonderland.lit/~alice"), payload.getURLs().get(0));
+ assertEquals(("http://teaparty.lit/~alice2"), payload.getURLs().get(1));
+
+ assertEquals(("<MAILER xmlns=\"vcard-temp\">mutt</MAILER>"), payload.getUnknownContent());
+ }
+
+ @Test
+ public void testParse_Photo() {
+ DummyEventLoop eventloop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventloop);
+
+ assertNotNull(parser.parse(
+ "<vCard xmlns='vcard-temp'>" +
+ "<PHOTO>" +
+ "<TYPE>image/jpeg</TYPE>" +
+ "<BINVAL>" +
+ "QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ej" +
+ "EyMzQ1Njc4OTA=" +
+ "</BINVAL>" +
+ "</PHOTO>" +
+ "</vCard>"));
+
+ VCard payload = (VCard)(parser.getPayload());
+ assertEquals(("image/jpeg"), payload.getPhotoType());
+ assertEquals(new ByteArray("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"), payload.getPhoto());
+ }
+
+ void testParse_NewlinedPhoto() {
+ DummyEventLoop eventloop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventloop);
+
+ assertNotNull(parser.parse(
+ "<vCard xmlns='vcard-temp'>" +
+ "<PHOTO>" +
+ "<TYPE>image/jpeg</TYPE>" +
+ "<BINVAL>" +
+ "dTsETKSAskgu2/BqVO+ogcu3DJy4QATGJqpsa6znWwNGiLnVElVVB6PtS+mTiHUXsrOlKvRjtvzV\n" +
+ "VDknNaRF58Elmu5EC6VoCllBEEB/lFf0emYn2gkp0X1khNi75dl+rOj95Ar6XuwLh+ZoSStqwOWj\n" +
+ "pIpxmZmVw7E69qr0FY0oI3zcaxXwzHw7Lx9Qf4sH7ufQvIN88ga+hwp8MiXevh3Ac8pN00kgINlq\n" +
+ "9AY/bYJL418Y/6wWsJbgmrJ/N78wSMpC7VVszLBZVv8uFnupubyi8Ophd/1wIWWzPPwAbBhepWVb\n" +
+ "1oPiFEBT5MNKCMTPEi0npXtedVz0HQbbPNIVwmo=" +
+ "</BINVAL>" +
+ "</PHOTO>" +
+ "</vCard>"));
+
+ VCard payload = (VCard)(parser.getPayload());
+ assertEquals(("image/jpeg"), payload.getPhotoType());
+ assertEquals("753B044CA480B2482EDBF06A54EFA881CBB70C9CB84004C626AA6C6BACE75B034688B9D512555507A3ED4BE993887517B2B3A52AF463B6FCD554392735A445E7C1259AEE440BA5680A594110407F9457F47A6627DA0929D17D6484D8BBE5D97EACE8FDE40AFA5EEC0B87E668492B6AC0E5A3A48A71999995C3B13AF6AAF4158D28237CDC6B15F0CC7C3B2F1F507F8B07EEE7D0BC837CF206BE870A7C3225DEBE1DC073CA4DD3492020D96AF4063F6D824BE35F18FFAC16B096E09AB27F37BF3048CA42ED556CCCB05956FF2E167BA9B9BCA2F0EA6177FD702165B33CFC006C185EA5655BD683E2144053E4C34A08C4CF122D27A57B5E755CF41D06DB3CD215C26A", Hexify.hexify(payload.getPhoto()));
+ }
+
+
+ @Test
+ public void testParse_Nickname() {
+ DummyEventLoop eventloop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventloop);
+
+ assertNotNull(parser.parse(
+ "<vCard xmlns='vcard-temp'>" +
+ "<NICKNAME>mynick</NICKNAME>" +
+ "</vCard>"));
+
+ VCard payload = (VCard)(parser.getPayload());
+ assertEquals(("mynick"), payload.getNickname());
+ }
+} \ No newline at end of file