diff options
Diffstat (limited to 'test/com/isode/stroke/parser/payloadparsers/FormParserTest.java')
-rw-r--r-- | test/com/isode/stroke/parser/payloadparsers/FormParserTest.java | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/test/com/isode/stroke/parser/payloadparsers/FormParserTest.java b/test/com/isode/stroke/parser/payloadparsers/FormParserTest.java new file mode 100644 index 0000000..b57e7d8 --- /dev/null +++ b/test/com/isode/stroke/parser/payloadparsers/FormParserTest.java @@ -0,0 +1,161 @@ +/* + * 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 org.junit.BeforeClass; +import org.junit.Test; + +import com.isode.stroke.elements.Form; +import com.isode.stroke.elements.Payload; +import com.isode.stroke.elements.Form.Type; +import com.isode.stroke.elements.FormField.BooleanFormField; +import com.isode.stroke.elements.FormField.FixedFormField; +import com.isode.stroke.elements.FormField.HiddenFormField; +import com.isode.stroke.elements.FormField.JIDMultiFormField; +import com.isode.stroke.elements.FormField.ListMultiFormField; +import com.isode.stroke.elements.FormField.ListSingleFormField; +import com.isode.stroke.elements.FormField.TextMultiFormField; +import com.isode.stroke.elements.FormField.TextSingleFormField; +import com.isode.stroke.eventloop.DummyEventLoop; +import com.isode.stroke.jid.JID; + +public class FormParserTest { + private static DummyEventLoop eventLoop; + + @BeforeClass + public static void init() throws Exception { + eventLoop = new DummyEventLoop(); + } + + private static Form 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 (Form) payload; + } + + @Test + public void testParse_FormInformation() throws Exception { + Form payload = parse("<x type=\"submit\" xmlns=\"jabber:x:data\">" + + "<title>Bot Configuration</title>" + + "<instructions>Hello!</instructions>" + + "<instructions>Fill out this form to configure your new bot!</instructions>" + + "</x>"); + assertEquals("Bot Configuration", payload.getTitle()); + assertEquals("Hello!\nFill out this form to configure your new bot!", + payload.getInstructions()); + assertEquals(Type.SUBMIT_TYPE, payload.getType()); + } + + @Test + public void testParse() { + Form payload = parse("<x type=\"form\" xmlns=\"jabber:x:data\">" + + "<field type=\"hidden\" var=\"FORM_TYPE\">" + + "<value>jabber:bot</value>" + + "</field>" + + "<field type=\"fixed\"><value>Section 1: Bot Info</value></field>" + + "<field label=\"The name of your bot\" type=\"text-single\" var=\"botname\"/>" + + "<field label=\"Helpful description of your bot\" type=\"text-multi\" var=\"description\"><value>This is a bot.</value><value>A quite good one actually</value></field>" + + "<field label=\"Public bot?\" type=\"boolean\" var=\"public\">" + + "<required/>" + + "<value>1</value>" + + "</field>" + + "<field label=\"Password for special access\" type=\"text-private\" var=\"password\"/>" + + "<field label=\"What features will the bot support?\" type=\"list-multi\" var=\"features\">" + + "<value>news</value>" + + "<value>search</value>" + + "<option label=\"Contests\"><value>contests</value></option>" + + "<option label=\"News\"><value>news</value></option>" + + "<option label=\"Polls\"><value>polls</value></option>" + + "<option label=\"Reminders\"><value>reminders</value></option>" + + "<option label=\"Search\"><value>search</value></option>" + + "</field>" + + "<field label=\"Maximum number of subscribers\" type=\"list-single\" var=\"maxsubs\">" + + "<value>20</value>" + + "<option label=\"10\"><value>10</value></option>" + + "<option label=\"20\"><value>20</value></option>" + + "<option label=\"30\"><value>30</value></option>" + + "<option label=\"50\"><value>50</value></option>" + + "<option label=\"100\"><value>100</value></option>" + + "<option label=\"None\"><value>none</value></option>" + + "</field>" + + "<field label=\"People to invite\" type=\"jid-multi\" var=\"invitelist\">" + + "<desc>Tell all your friends about your new bot!</desc>" + + "<value>foo@bar.com</value>" + "<value>baz@fum.org</value>" + + "</field>" + "<field var=\"untyped\">" + "<value>foo</value>" + + "</field>" + "</x>"); + + assertEquals(10, payload.getFields().size()); + assertEquals("jabber:bot", ((HiddenFormField) (payload.getFields() + .get(0))).getValue()); + assertEquals("FORM_TYPE", payload.getFields().get(0).getName()); + assertTrue(!payload.getFields().get(0).getRequired()); + + assertEquals("Section 1: Bot Info", ((FixedFormField) (payload + .getFields().get(1))).getValue()); + + assertEquals("The name of your bot", payload.getFields().get(2) + .getLabel()); + + assertEquals("This is a bot.\nA quite good one actually", + ((TextMultiFormField) (payload.getFields().get(3))).getValue()); + + assertEquals(Boolean.TRUE, ((BooleanFormField) (payload.getFields() + .get(4))).getValue()); + assertTrue(payload.getFields().get(4).getRequired()); + assertEquals("1", ((BooleanFormField) (payload.getFields().get(4))) + .getRawValues().get(0)); + + assertEquals("news", + ((ListMultiFormField) (payload.getFields().get(6))).getValue() + .get(0)); + assertEquals("news", payload.getFields().get(6).getRawValues().get(0)); + assertEquals("search", ((ListMultiFormField) (payload.getFields() + .get(6))).getValue().get(1)); + assertEquals("search", payload.getFields().get(6).getRawValues().get(1)); + assertEquals(5, payload.getFields().get(6).getOptions().size()); + assertEquals("Contests", + payload.getFields().get(6).getOptions().get(0).label); + assertEquals("contests", + payload.getFields().get(6).getOptions().get(0).value); + assertEquals("News", + payload.getFields().get(6).getOptions().get(1).label); + assertEquals("news", + payload.getFields().get(6).getOptions().get(1).value); + + assertEquals("20", ((ListSingleFormField) (payload.getFields().get(7))) + .getValue()); + + assertEquals(new JID("foo@bar.com"), ((JIDMultiFormField) (payload + .getFields().get(8))).getValue().get(0)); + assertEquals(new JID("baz@fum.org"), ((JIDMultiFormField) (payload + .getFields().get(8))).getValue().get(1)); + assertEquals("Tell all your friends about your new bot!", payload + .getFields().get(8).getDescription()); + + assertEquals("foo", + ((TextSingleFormField) (payload.getFields().get(9))).getValue()); + } +}
\ No newline at end of file |