/*
* Copyright (c) 2010-2013 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.SearchPayload;
import com.isode.stroke.elements.Form;
import com.isode.stroke.elements.FormField;
import com.isode.stroke.elements.FormItem;
import com.isode.stroke.elements.FormSection;
import com.isode.stroke.elements.FormText;
import com.isode.stroke.elements.FormPage;
import com.isode.stroke.elements.FormReportedRef;
import com.isode.stroke.parser.payloadparsers.PayloadsParserTester;
import com.isode.stroke.eventloop.DummyEventLoop;
import com.isode.stroke.jid.JID;
import java.util.Vector;
import java.util.ArrayList;
import java.util.List;
public class SearchPayloadParserTest {
public SearchPayloadParserTest() {
}
@Test
public void testParse_FormRequestResponse() {
DummyEventLoop eventLoop = new DummyEventLoop();
PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
assertNotNull(parser.parse(
"" +
"Foo" +
"" +
"" +
""
));
SearchPayload payload = (SearchPayload)parser.getPayload();
assertEquals("Foo", payload.getInstructions());
assertNotNull(payload.getFirst());
assertNotNull(payload.getLast());
assertNull(payload.getNick());
}
@Test
public void testParse_Results() {
DummyEventLoop eventLoop = new DummyEventLoop();
PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
assertNotNull(parser.parse(
"" +
"- " +
"Juliet" +
"Capulet" +
"JuliC" +
"juliet@shakespeare.lit" +
"
" +
"- " +
"Tybalt" +
"Capulet" +
"ty" +
"tybalt@shakespeare.lit" +
"
" +
""
));
SearchPayload payload = (SearchPayload)parser.getPayload();
assertEquals(2, payload.getItems().size());
assertEquals(new JID("juliet@capulet.com"), payload.getItems().get(0).jid);
assertEquals("Juliet", payload.getItems().get(0).first);
assertEquals("Capulet", payload.getItems().get(0).last);
assertEquals("JuliC", payload.getItems().get(0).nick);
assertEquals("juliet@shakespeare.lit", payload.getItems().get(0).email);
assertEquals(new JID("tybalt@shakespeare.lit"), payload.getItems().get(1).jid);
}
@Test
public void testParse_FormRequestResponse_XDATA() {
DummyEventLoop eventLoop = new DummyEventLoop();
PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
assertNotNull(parser.parse(
"" +
"" +
"Use the enclosed form to search. If your Jabber client does not" +
" support Data Forms, visit http://shakespeare.lit/" +
"" +
"" +
"User Directory Search" +
"" +
"Please provide the following information" +
" to search for Shakespearean characters." +
"" +
"" +
"jabber:iq:search" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
""
));
SearchPayload payload = (SearchPayload)parser.getPayload();
assertEquals("Use the enclosed form to search. If your Jabber client does not" +
" support Data Forms, visit http://shakespeare.lit/", payload.getInstructions());
assertNotNull(payload.getForm());
assertEquals("Please provide the following information" +
" to search for Shakespearean characters.", payload.getForm().getInstructions());
}
@Test
public void testParse_Results_XDATA() {
DummyEventLoop eventLoop = new DummyEventLoop();
PayloadsParserTester parser = new PayloadsParserTester(eventLoop);
assertNotNull(parser.parse("" +
" " +
" " +
" jabber:iq:search" +
" " +
" " +
" " +
" " +
" " +
" " +
" " +
" - " +
" Benvolio" +
" Montague" +
" benvolio@montague.net" +
" male" +
"
" +
" - " +
" Romeo" +
" Montague" +
" romeo@montague.net" +
" male" +
"
" +
" " +
""));
SearchPayload payload = (SearchPayload)parser.getPayload();
assertNotNull(payload);
Form dataForm = payload.getForm();
assertNotNull(dataForm);
List reported = dataForm.getReportedFields();
assertEquals(4, reported.size());
List items = dataForm.getItems();
assertEquals(2, items.size());
FormItem item = items.get(0);
assertEquals(4, item.getItemFields().size());
assertEquals("Benvolio", item.getItemFields().get(0).getValues().get(0));
assertEquals("first", item.getItemFields().get(0).getName());
assertEquals("Montague", item.getItemFields().get(1).getValues().get(0));
assertEquals("last", item.getItemFields().get(1).getName());
assertEquals("benvolio@montague.net", item.getItemFields().get(2).getValues().get(0));
assertEquals("jid", item.getItemFields().get(2).getName());
assertEquals("male", item.getItemFields().get(3).getValues().get(0));
assertEquals("x-gender", item.getItemFields().get(3).getName());
item = items.get(1);
assertEquals(4, item.getItemFields().size());
assertEquals("Romeo", item.getItemFields().get(0).getValues().get(0));
assertEquals("first", item.getItemFields().get(0).getName());
assertEquals("Montague", item.getItemFields().get(1).getValues().get(0));
assertEquals("last", item.getItemFields().get(1).getName());
assertEquals("romeo@montague.net", item.getItemFields().get(2).getValues().get(0));
assertEquals("jid", item.getItemFields().get(2).getName());
assertEquals("male", item.getItemFields().get(3).getValues().get(0));
assertEquals("x-gender", item.getItemFields().get(3).getName());
}
}