summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'test/com/isode/stroke/parser/payloadparsers/CommandParserTest.java')
-rw-r--r--test/com/isode/stroke/parser/payloadparsers/CommandParserTest.java105
1 files changed, 105 insertions, 0 deletions
diff --git a/test/com/isode/stroke/parser/payloadparsers/CommandParserTest.java b/test/com/isode/stroke/parser/payloadparsers/CommandParserTest.java
new file mode 100644
index 0000000..4c9854b
--- /dev/null
+++ b/test/com/isode/stroke/parser/payloadparsers/CommandParserTest.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (c) 2012 Isode Limited, London, England.
+ * All rights reserved.
+ */
+/*
+ * Copyright (c) 2010 Remko Tronçon
+ * All rights reserved.
+ */
+
+package com.isode.stroke.parser.payloadparsers;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import com.isode.stroke.elements.Command;
+import com.isode.stroke.elements.Form;
+import com.isode.stroke.elements.Payload;
+import com.isode.stroke.elements.Command.Action;
+import com.isode.stroke.elements.Command.Note;
+import com.isode.stroke.elements.Command.Status;
+import com.isode.stroke.elements.Command.Note.Type;
+import com.isode.stroke.eventloop.DummyEventLoop;
+
+public class CommandParserTest {
+ private static DummyEventLoop eventLoop;
+
+ @BeforeClass
+ public static void init() throws Exception {
+ eventLoop = new DummyEventLoop();
+ }
+
+ private static Command parse(String xmlString) {
+ PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
+ assertTrue(parser.parse(xmlString));
+
+ Payload payload = null;
+ do {
+ try {
+ Thread.sleep(100);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ eventLoop.processEvents();
+ payload = parser.getPayload();
+ } while (payload == null);
+
+ return (Command) payload;
+ }
+
+ @Test
+ public void testParse() {
+ Command payload = parse("<command xmlns='http://jabber.org/protocol/commands' node='list' action='prev' sessionid='myid'/>");
+
+ assertEquals(Action.PREV, payload.getAction());
+ assertEquals("list", payload.getNode());
+ assertEquals("myid", payload.getSessionID());
+ }
+
+ @Test
+ public void testParse_Result() {
+ Command payload = parse("<command xmlns='http://jabber.org/protocol/commands' node='config' status='completed' sessionid='myid'>"
+ + "<note type='warn'>Service 'httpd' has been configured.</note>"
+ + "<note type='error'>I lied.</note>"
+ + "<actions execute='next'>"
+ + "<prev/>"
+ + "<next/>"
+ + "</actions>" + "</command>");
+
+ assertEquals(Status.COMPLETED, payload.getStatus());
+
+ List<Note> notes = payload.getNotes();
+ assertEquals(2, notes.size());
+ assertEquals(Type.WARN, notes.get(0).type);
+ assertEquals("Service 'httpd' has been configured.", notes.get(0).note);
+ assertEquals(Type.ERROR, notes.get(1).type);
+ assertEquals("I lied.", notes.get(1).note);
+ List<Action> actions = payload.getAvailableActions();
+ assertEquals(2, actions.size());
+ assertEquals(Action.PREV, actions.get(0));
+ assertEquals(Action.NEXT, actions.get(1));
+ assertEquals(Action.NEXT, payload.getExecuteAction());
+ }
+
+ @Test
+ public void testParse_Form() {
+ Command payload = parse("<command xmlns='http://jabber.org/protocol/commands' node='config' status='completed'>"
+ + "<x type=\"result\" xmlns=\"jabber:x:data\">"
+ + "<title>Bot Configuration</title>"
+ + "<instructions>Hello!</instructions>"
+ + "<instructions>Fill out this form to configure your new bot!</instructions>"
+ + "</x>" + "</command>");
+
+ Form form = payload.getForm();
+ assertEquals("Bot Configuration", form.getTitle());
+ assertEquals("Hello!\nFill out this form to configure your new bot!",
+ form.getInstructions());
+ assertEquals(Form.Type.RESULT_TYPE, form.getType());
+ }
+}