summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'test/com/isode/stroke/parser/payloadparsers')
-rw-r--r--test/com/isode/stroke/parser/payloadparsers/BodyParserTest.java39
-rw-r--r--test/com/isode/stroke/parser/payloadparsers/PayloadParserTester.java47
-rw-r--r--test/com/isode/stroke/parser/payloadparsers/PrivateStorageParserTest.java106
-rw-r--r--test/com/isode/stroke/parser/payloadparsers/RawXMLPayloadParserTest.java45
-rw-r--r--test/com/isode/stroke/parser/payloadparsers/StorageParserTest.java97
5 files changed, 334 insertions, 0 deletions
diff --git a/test/com/isode/stroke/parser/payloadparsers/BodyParserTest.java b/test/com/isode/stroke/parser/payloadparsers/BodyParserTest.java
new file mode 100644
index 0000000..12c67ac
--- /dev/null
+++ b/test/com/isode/stroke/parser/payloadparsers/BodyParserTest.java
@@ -0,0 +1,39 @@
+/*
+ * 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.Body;
+import com.isode.stroke.parser.payloadparsers.BodyParser;
+import com.isode.stroke.parser.payloadparsers.PayloadsParserTester;
+import com.isode.stroke.eventloop.DummyEventLoop;
+
+public class BodyParserTest {
+
+ public BodyParserTest() {
+
+ }
+
+ @Test
+ public void testParse() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+
+ assertNotNull(parser.parse("<body>foo<baz>bar</baz>fum</body>"));
+
+ Body payload = (Body)(parser.getPayload());
+ assertEquals("foobarfum", payload.getText());
+ }
+} \ No newline at end of file
diff --git a/test/com/isode/stroke/parser/payloadparsers/PayloadParserTester.java b/test/com/isode/stroke/parser/payloadparsers/PayloadParserTester.java
new file mode 100644
index 0000000..d903b3b
--- /dev/null
+++ b/test/com/isode/stroke/parser/payloadparsers/PayloadParserTester.java
@@ -0,0 +1,47 @@
+/*
+ * 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 com.isode.stroke.parser.XMLParser;
+import com.isode.stroke.eventloop.EventLoop;
+import com.isode.stroke.parser.XMLParserClient;
+import com.isode.stroke.parser.AttributeMap;
+import com.isode.stroke.parser.PayloadParser;
+import com.isode.stroke.parser.PlatformXMLParserFactory;
+
+public class PayloadParserTester<ParserType extends PayloadParser> implements XMLParserClient {
+
+ private XMLParser xmlParser_;
+ private ParserType parser_;
+
+ public PayloadParserTester(ParserType parser) {
+ this.parser_ = parser;
+ xmlParser_ = PlatformXMLParserFactory.createXMLParser(this);
+ }
+
+ public boolean parse(String data) {
+ return xmlParser_.parse(data);
+ }
+
+ public void handleStartElement(String element, String ns, AttributeMap attributes) {
+ parser_.handleStartElement(element, ns, attributes);
+ }
+
+ public void handleEndElement(String element, String ns) {
+ parser_.handleEndElement(element, ns);
+ }
+
+ public void handleCharacterData(String data) {
+ parser_.handleCharacterData(data);
+ }
+}
+
diff --git a/test/com/isode/stroke/parser/payloadparsers/PrivateStorageParserTest.java b/test/com/isode/stroke/parser/payloadparsers/PrivateStorageParserTest.java
new file mode 100644
index 0000000..004f68f
--- /dev/null
+++ b/test/com/isode/stroke/parser/payloadparsers/PrivateStorageParserTest.java
@@ -0,0 +1,106 @@
+/*
+ * 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.PrivateStorage;
+import com.isode.stroke.elements.Storage;
+import com.isode.stroke.parser.payloadparsers.PrivateStorageParser;
+import com.isode.stroke.parser.payloadparsers.PayloadsParserTester;
+import com.isode.stroke.parser.payloadparsers.PayloadParserTester;
+import com.isode.stroke.parser.PayloadParserFactoryCollection;
+import com.isode.stroke.eventloop.DummyEventLoop;
+import com.isode.stroke.jid.JID;
+
+public class PrivateStorageParserTest {
+
+ public PrivateStorageParserTest() {
+
+ }
+
+ @Test
+ public void testParse() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+
+ assertNotNull(parser.parse(
+ "<query xmlns='jabber:iq:private'>"
+ + "<storage xmlns='storage:bookmarks'>"
+ + "<conference name='Swift' jid='swift@rooms.swift.im'>"
+ + "<nick>Alice</nick>"
+ + "</conference>"
+ + "</storage>"
+ + "</query>"));
+
+ PrivateStorage payload = (PrivateStorage)(parser.getPayload());
+ assertNotNull(payload);
+ Storage storage = (Storage)(payload.getPayload());
+ assertNotNull(storage);
+ assertEquals("Alice", storage.getRooms().get(0).nick);
+ assertEquals(new JID("swift@rooms.swift.im"), storage.getRooms().get(0).jid);
+ }
+
+ @Test
+ public void testParse_NoPayload() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+
+ assertNotNull(parser.parse("<query xmlns='jabber:iq:private'/>"));
+
+ PrivateStorage payload = (PrivateStorage)(parser.getPayload());
+ assertNotNull(payload);
+ assertNull(payload.getPayload());
+ }
+
+ @Test
+ public void testParse_MultiplePayloads() {
+ DummyEventLoop eventLoop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+
+ assertNotNull(parser.parse(
+ "<query xmlns='jabber:iq:private'>"
+ + "<storage xmlns='storage:bookmarks'>"
+ + "<conference name='Swift' jid='swift@rooms.swift.im'>"
+ + "<nick>Alice</nick>"
+ + "</conference>"
+ + "</storage>"
+ + "<storage xmlns='storage:bookmarks'>"
+ + "<conference name='Swift' jid='swift@rooms.swift.im'>"
+ + "<nick>Rabbit</nick>"
+ + "</conference>"
+ + "</storage>"
+ + "</query>"));
+
+ PrivateStorage payload = (PrivateStorage)(parser.getPayload());
+ assertNotNull(payload);
+ Storage storage = (Storage)(payload.getPayload());
+ assertNotNull(storage);
+ assertEquals("Rabbit", storage.getRooms().get(0).nick);
+ }
+
+ @Test
+ public void testParse_UnsupportedPayload() {
+ PayloadParserFactoryCollection factories = new PayloadParserFactoryCollection();
+ PrivateStorageParser testling = new PrivateStorageParser(factories);
+ PayloadParserTester parser = new PayloadParserTester(testling);
+
+ assertNotNull(parser.parse(
+ "<query xmlns='jabber:iq:private'>" +
+ "<foo>Bar</foo>" +
+ "</query>"));
+
+ assertNull(((PrivateStorage)(testling.getPayload())).getPayload());
+ }
+} \ No newline at end of file
diff --git a/test/com/isode/stroke/parser/payloadparsers/RawXMLPayloadParserTest.java b/test/com/isode/stroke/parser/payloadparsers/RawXMLPayloadParserTest.java
new file mode 100644
index 0000000..e416066
--- /dev/null
+++ b/test/com/isode/stroke/parser/payloadparsers/RawXMLPayloadParserTest.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 static org.junit.Assert.assertTrue;
+import org.junit.Test;
+import com.isode.stroke.elements.RawXMLPayload;
+import com.isode.stroke.parser.payloadparsers.RawXMLPayloadParser;
+import com.isode.stroke.parser.payloadparsers.PayloadParserTester;
+import com.isode.stroke.eventloop.DummyEventLoop;
+
+public class RawXMLPayloadParserTest {
+
+ public RawXMLPayloadParserTest() {
+
+ }
+
+ @Test
+ public void testParse() {
+ RawXMLPayloadParser testling = new RawXMLPayloadParser();
+ PayloadParserTester parser = new PayloadParserTester(testling);
+
+ String xml =
+ "<foo foo-attr=\"foo-val\" xmlns=\"ns:foo\">"
+ + "<bar bar-attr=\"bar-val\" xmlns=\"ns:bar\"/>"
+ + "<baz baz-attr=\"baz-val\" xmlns=\"ns:baz\"/>"
+ + "</foo>";
+ assertTrue(parser.parse(xml));
+
+ RawXMLPayload payload = (RawXMLPayload)(testling.getPayload());
+ assertNotNull(xml, payload.getRawXML());
+ }
+} \ No newline at end of file
diff --git a/test/com/isode/stroke/parser/payloadparsers/StorageParserTest.java b/test/com/isode/stroke/parser/payloadparsers/StorageParserTest.java
new file mode 100644
index 0000000..d9e254c
--- /dev/null
+++ b/test/com/isode/stroke/parser/payloadparsers/StorageParserTest.java
@@ -0,0 +1,97 @@
+/*
+ * 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.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.Storage;
+import com.isode.stroke.parser.payloadparsers.StorageParser;
+import com.isode.stroke.parser.payloadparsers.PayloadsParserTester;
+import com.isode.stroke.eventloop.DummyEventLoop;
+import com.isode.stroke.jid.JID;
+import java.util.Vector;
+
+public class StorageParserTest {
+
+ public StorageParserTest() {
+
+ }
+
+ @Test
+ public void testParse_Room() {
+ DummyEventLoop eventloop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventloop);
+
+ assertNotNull(parser.parse(
+ "<storage xmlns='storage:bookmarks'>"
+ + "<conference "
+ + "name='Council of Oberon' "
+ + "autojoin='true' jid='council@conference.underhill.org'>"
+ + "<nick>Puck</nick>"
+ + "<password>MyPass</password>"
+ + "</conference>"
+ + "</storage>"));
+
+ Storage payload = (Storage)(parser.getPayload());
+ Vector<Storage.Room> rooms = payload.getRooms();
+ assertEquals(1, rooms.size());
+ assertEquals("Council of Oberon", rooms.get(0).name);
+ assertEquals(new JID("council@conference.underhill.org"), rooms.get(0).jid);
+ assertTrue(rooms.get(0).autoJoin);
+ assertEquals("Puck", rooms.get(0).nick);
+ assertEquals("MyPass", rooms.get(0).password);
+ }
+
+ @Test
+ public void testParse_MultipleRooms() {
+ DummyEventLoop eventloop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventloop);
+
+ assertNotNull(parser.parse(
+ "<storage xmlns='storage:bookmarks'>"
+ + "<conference "
+ + "name='Council of Oberon' "
+ + "jid='council@conference.underhill.org' />"
+ + "<conference "
+ + "name='Tea &amp; jam party' "
+ + "jid='teaparty@wonderland.lit' />"
+ + "</storage>"));
+
+ Storage payload = (Storage)(parser.getPayload());
+ Vector<Storage.Room> rooms = payload.getRooms();
+ assertEquals(2, rooms.size());
+ assertEquals("Council of Oberon", rooms.get(0).name);
+ assertEquals(new JID("council@conference.underhill.org"), rooms.get(0).jid);
+ assertEquals("Tea & jam party", rooms.get(1).name);
+ assertEquals(new JID("teaparty@wonderland.lit"), rooms.get(1).jid);
+ }
+
+ @Test
+ public void testParse_URL() {
+ DummyEventLoop eventloop = new DummyEventLoop();
+ PayloadsParserTester parser = new PayloadsParserTester(eventloop);
+
+ assertNotNull(parser.parse(
+ "<storage xmlns='storage:bookmarks'>"
+ + "<url name='Complete Works of Shakespeare' url='http://the-tech.mit.edu/Shakespeare/'/>"
+ + "</storage>"));
+
+ Storage payload = (Storage)(parser.getPayload());
+ Vector<Storage.URL> urls = payload.getURLs();
+ assertEquals(1, urls.size());
+ assertEquals("Complete Works of Shakespeare", urls.get(0).name);
+ assertEquals("http://the-tech.mit.edu/Shakespeare/", urls.get(0).url);
+ }
+} \ No newline at end of file