/* * Copyright (c) 2010-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #include #include #include #include using namespace Swift; class SearchPayloadParserTest : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(SearchPayloadParserTest); CPPUNIT_TEST(testParse_FormRequestResponse); CPPUNIT_TEST(testParse_Results); CPPUNIT_TEST(testParse_FormRequestResponse_XDATA); CPPUNIT_TEST(testParse_Results_XDATA); CPPUNIT_TEST_SUITE_END(); public: void testParse_FormRequestResponse() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "" "Foo" "" "" "" )); SearchPayload::ref payload = parser.getPayload(); CPPUNIT_ASSERT_EQUAL(std::string("Foo"), *payload->getInstructions()); CPPUNIT_ASSERT(payload->getFirst()); CPPUNIT_ASSERT(payload->getLast()); CPPUNIT_ASSERT(!payload->getNick()); } void testParse_Results() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "" "" "Juliet" "Capulet" "JuliC" "juliet@shakespeare.lit" "" "" "Tybalt" "Capulet" "ty" "tybalt@shakespeare.lit" "" "" )); SearchPayload::ref payload = parser.getPayload(); CPPUNIT_ASSERT_EQUAL(2, static_cast(payload->getItems().size())); CPPUNIT_ASSERT_EQUAL(JID("juliet@capulet.com"), payload->getItems()[0].jid); CPPUNIT_ASSERT_EQUAL(std::string("Juliet"), payload->getItems()[0].first); CPPUNIT_ASSERT_EQUAL(std::string("Capulet"), payload->getItems()[0].last); CPPUNIT_ASSERT_EQUAL(std::string("JuliC"), payload->getItems()[0].nick); CPPUNIT_ASSERT_EQUAL(std::string("juliet@shakespeare.lit"), payload->getItems()[0].email); CPPUNIT_ASSERT_EQUAL(JID("tybalt@shakespeare.lit"), payload->getItems()[1].jid); } void testParse_FormRequestResponse_XDATA() { PayloadsParserTester parser; CPPUNIT_ASSERT(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::ref payload = parser.getPayload(); CPPUNIT_ASSERT_EQUAL(std::string("Use the enclosed form to search. If your Jabber client does not" " support Data Forms, visit http://shakespeare.lit/"), *payload->getInstructions()); CPPUNIT_ASSERT(payload->getForm()); CPPUNIT_ASSERT_EQUAL(std::string("Please provide the following information" " to search for Shakespearean characters."), payload->getForm()->getInstructions()); } void testParse_Results_XDATA() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse("" " " " " " jabber:iq:search" " " " " " " " " " " " " " " " " " Benvolio" " Montague" " benvolio@montague.net" " male" " " " " " Romeo" " Montague" " romeo@montague.net" " male" " " " " "")); SearchPayload::ref payload = parser.getPayload(); CPPUNIT_ASSERT(payload); Form::ref dataForm = payload->getForm(); CPPUNIT_ASSERT(dataForm); Form::FormItem reported = dataForm->getReportedFields(); CPPUNIT_ASSERT_EQUAL(static_cast(4), reported.size()); std::vector items = dataForm->getItems(); CPPUNIT_ASSERT_EQUAL(static_cast(2), items.size()); Form::FormItem item = items[0]; CPPUNIT_ASSERT_EQUAL(static_cast(4), item.size()); CPPUNIT_ASSERT_EQUAL(std::string("Benvolio"), item[0]->getValues()[0]); CPPUNIT_ASSERT_EQUAL(std::string("first"), item[0]->getName()); CPPUNIT_ASSERT_EQUAL(std::string("Montague"), item[1]->getValues()[0]); CPPUNIT_ASSERT_EQUAL(std::string("last"), item[1]->getName()); CPPUNIT_ASSERT_EQUAL(std::string("benvolio@montague.net"), item[2]->getValues()[0]); CPPUNIT_ASSERT_EQUAL(std::string("jid"), item[2]->getName()); CPPUNIT_ASSERT_EQUAL(std::string("male"), item[3]->getValues()[0]); CPPUNIT_ASSERT_EQUAL(std::string("x-gender"), item[3]->getName()); item = items[1]; CPPUNIT_ASSERT_EQUAL(static_cast(4), item.size()); CPPUNIT_ASSERT_EQUAL(std::string("Romeo"), item[0]->getValues()[0]); CPPUNIT_ASSERT_EQUAL(std::string("first"), item[0]->getName()); CPPUNIT_ASSERT_EQUAL(std::string("Montague"), item[1]->getValues()[0]); CPPUNIT_ASSERT_EQUAL(std::string("last"), item[1]->getName()); CPPUNIT_ASSERT_EQUAL(std::string("romeo@montague.net"), item[2]->getValues()[0]); CPPUNIT_ASSERT_EQUAL(std::string("jid"), item[2]->getName()); CPPUNIT_ASSERT_EQUAL(std::string("male"), item[3]->getValues()[0]); CPPUNIT_ASSERT_EQUAL(std::string("x-gender"), item[3]->getName()); } }; CPPUNIT_TEST_SUITE_REGISTRATION(SearchPayloadParserTest);