void testParse_Invalid() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse("<priority>invalid</priority>")); std::shared_ptr<Priority> payload = std::dynamic_pointer_cast<Priority>(parser.getPayload()); CPPUNIT_ASSERT_EQUAL(0, payload->getPriority()); }
void testParseEmpty() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse("<x xmlns=\"http://jabber.org/protocol/muc#user\"/>")); MUCUserPayload::ref payload = std::dynamic_pointer_cast<MUCUserPayload>(parser.getPayload()); CPPUNIT_ASSERT(payload); CPPUNIT_ASSERT(payload->getItems().empty()); }
void testParse_Nickname() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "<vCard xmlns='vcard-temp'>" "<NICKNAME>mynick</NICKNAME>" "</vCard>")); VCard* payload = dynamic_cast<VCard*>(parser.getPayload().get()); CPPUNIT_ASSERT_EQUAL(std::string("mynick"), payload->getNickname()); }
void testParse() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "<vCard xmlns=\"vcard-temp\">" "<VERSION>2.0</VERSION>" "<FN>Alice In Wonderland</FN>" "<N>" "<FAMILY>Wonderland</FAMILY>" "<GIVEN>Alice</GIVEN>" "<MIDDLE>In</MIDDLE>" "<PREFIX>Mrs</PREFIX>" "<SUFFIX>PhD</SUFFIX>" "</N>" "<EMAIL>" "<USERID>[email protected]</USERID>" "<HOME/>" "<INTERNET/>" "<PREF/>" "</EMAIL>" "<EMAIL>" "<USERID>[email protected]</USERID>" "<WORK/>" "<X400/>" "</EMAIL>" "<NICKNAME>DreamGirl</NICKNAME>" "<BDAY>1234</BDAY>" "<MAILER>mutt</MAILER>" "</vCard>")); boost::shared_ptr<VCard> payload = boost::dynamic_pointer_cast<VCard>(parser.getPayload()); CPPUNIT_ASSERT_EQUAL(std::string("2.0"), payload->getVersion()); CPPUNIT_ASSERT_EQUAL(std::string("Alice In Wonderland"), payload->getFullName()); CPPUNIT_ASSERT_EQUAL(std::string("Alice"), payload->getGivenName()); CPPUNIT_ASSERT_EQUAL(std::string("In"), payload->getMiddleName()); CPPUNIT_ASSERT_EQUAL(std::string("Wonderland"), payload->getFamilyName()); CPPUNIT_ASSERT_EQUAL(std::string("Mrs"), payload->getPrefix()); CPPUNIT_ASSERT_EQUAL(std::string("PhD"), payload->getSuffix()); CPPUNIT_ASSERT_EQUAL(std::string("DreamGirl"), payload->getNickname()); CPPUNIT_ASSERT_EQUAL(std::string("<BDAY xmlns=\"vcard-temp\">1234</BDAY><MAILER xmlns=\"vcard-temp\">mutt</MAILER>"), payload->getUnknownContent()); CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(payload->getEMailAddresses().size())); CPPUNIT_ASSERT_EQUAL(std::string("*****@*****.**"), payload->getEMailAddresses()[0].address); CPPUNIT_ASSERT(payload->getEMailAddresses()[0].isHome); CPPUNIT_ASSERT(payload->getEMailAddresses()[0].isInternet); CPPUNIT_ASSERT(payload->getEMailAddresses()[0].isPreferred); CPPUNIT_ASSERT(!payload->getEMailAddresses()[0].isWork); CPPUNIT_ASSERT(!payload->getEMailAddresses()[0].isX400); CPPUNIT_ASSERT_EQUAL(std::string("*****@*****.**"), payload->getEMailAddresses()[1].address); CPPUNIT_ASSERT(!payload->getEMailAddresses()[1].isHome); CPPUNIT_ASSERT(!payload->getEMailAddresses()[1].isInternet); CPPUNIT_ASSERT(!payload->getEMailAddresses()[1].isPreferred); CPPUNIT_ASSERT(payload->getEMailAddresses()[1].isWork); CPPUNIT_ASSERT(payload->getEMailAddresses()[1].isX400); }
void testParse() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "<x xmlns='vcard-temp:x:update'>" "<photo>sha1-hash-of-image</photo>" "</x>")); VCardUpdate* payload = dynamic_cast<VCardUpdate*>(parser.getPayload().get()); CPPUNIT_ASSERT_EQUAL(std::string("sha1-hash-of-image"), payload->getPhotoHash()); }
void testParseDestroy() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse("<x xmlns=\"http://jabber.org/protocol/muc#user\"><destroy jid='*****@*****.**'><reason>bert</reason></destroy></x>")); MUCUserPayload::ref payload = std::dynamic_pointer_cast<MUCUserPayload>(parser.getPayload()); CPPUNIT_ASSERT(payload); MUCDestroyPayload::ref destroy = std::dynamic_pointer_cast<MUCDestroyPayload>(payload->getPayload()); CPPUNIT_ASSERT(destroy); CPPUNIT_ASSERT_EQUAL(std::string("bert"), destroy->getReason()); CPPUNIT_ASSERT_EQUAL(JID("*****@*****.**"), destroy->getNewVenue()); }
void testParse() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse("<query xmlns=\"http://jabber.org/protocol/muc#admin\"><item affiliation=\"owner\" role=\"visitor\"><actor jid=\"[email protected]\"/><reason>malice</reason></item></query>")); MUCAdminPayload::ref payload = boost::dynamic_pointer_cast<MUCAdminPayload>(parser.getPayload()); MUCItem item = payload->getItems()[0]; CPPUNIT_ASSERT_EQUAL(MUCOccupant::Owner, item.affiliation.get()); CPPUNIT_ASSERT_EQUAL(MUCOccupant::Visitor, item.role.get()); CPPUNIT_ASSERT_EQUAL(JID("*****@*****.**"), item.actor.get()); CPPUNIT_ASSERT_EQUAL(std::string("malice"), item.reason.get()); }
void testExample10() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse("<unblock xmlns='urn:xmpp:blocking'>" "<item jid='*****@*****.**'/>" "</unblock>")); UnblockPayload* payload = dynamic_cast<UnblockPayload*>(parser.getPayload().get()); CPPUNIT_ASSERT(payload); CPPUNIT_ASSERT(1 == payload->getItems().size()); CPPUNIT_ASSERT_EQUAL(JID("*****@*****.**"), payload->getItems()[0]); }
void testParse_URL() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "<storage xmlns='storage:bookmarks'>" "<url name='Complete Works of Shakespeare' url='http://the-tech.mit.edu/Shakespeare/'/>" "</storage>")); Storage* payload = dynamic_cast<Storage*>(parser.getPayload().get()); std::vector<Storage::URL> urls = payload->getURLs(); CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(urls.size())); CPPUNIT_ASSERT_EQUAL(std::string("Complete Works of Shakespeare"), urls[0].name); CPPUNIT_ASSERT_EQUAL(std::string("http://the-tech.mit.edu/Shakespeare/"), urls[0].url); }
void testExample4() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse("<blocklist xmlns='urn:xmpp:blocking'>" "<item jid='*****@*****.**'/>" "<item jid='*****@*****.**'/>" "</blocklist>")); BlockListPayload* payload = dynamic_cast<BlockListPayload*>(parser.getPayload().get()); CPPUNIT_ASSERT(payload); CPPUNIT_ASSERT(2 == payload->getItems().size()); CPPUNIT_ASSERT_EQUAL(JID("*****@*****.**"), payload->getItems()[0]); CPPUNIT_ASSERT_EQUAL(JID("*****@*****.**"), payload->getItems()[1]); }
void testParseInvite() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse("<x xmlns=\"http://jabber.org/protocol/muc#user\"><invite from='[email protected]/desktop' to='[email protected]/xxx'> <reason>Hey Hecate, this is the place for all good witches!</reason> </invite> <password>cauldronburn</password></x>")); MUCUserPayload::ref payload = std::dynamic_pointer_cast<MUCUserPayload>(parser.getPayload()); CPPUNIT_ASSERT(payload); CPPUNIT_ASSERT(payload->getInvite()); CPPUNIT_ASSERT(payload->getPassword()); CPPUNIT_ASSERT_EQUAL(std::string("cauldronburn"), *payload->getPassword()); MUCUserPayload::Invite invite = *payload->getInvite(); CPPUNIT_ASSERT_EQUAL(std::string("Hey Hecate, this is the place for all good witches!"), invite.reason); CPPUNIT_ASSERT_EQUAL(JID("[email protected]/desktop"), invite.from); CPPUNIT_ASSERT_EQUAL(JID("[email protected]/xxx"), invite.to); }
void testParse() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "<query xmlns=\"jabber:iq:version\">" "<name>myclient</name>" "<version>1.0</version>" "<os>Mac OS X</os>" "</query>")); SoftwareVersion* payload = dynamic_cast<SoftwareVersion*>(parser.getPayload().get()); CPPUNIT_ASSERT_EQUAL(std::string("myclient"), payload->getName()); CPPUNIT_ASSERT_EQUAL(std::string("1.0"), payload->getVersion()); CPPUNIT_ASSERT_EQUAL(std::string("Mac OS X"), payload->getOS()); }
void testParse() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "<error type=\"modify\">" "<bad-request xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/>" "<text xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\">boo</text>" "</error>")); ErrorPayload::ref payload = std::dynamic_pointer_cast<ErrorPayload>(parser.getPayload()); CPPUNIT_ASSERT_EQUAL(ErrorPayload::BadRequest, payload->getCondition()); CPPUNIT_ASSERT_EQUAL(ErrorPayload::Modify, payload->getType()); CPPUNIT_ASSERT_EQUAL(std::string("boo"), payload->getText()); CPPUNIT_ASSERT(!payload->getPayload()); }
void testParse_FormInformation() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.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>" )); Form* payload = dynamic_cast<Form*>(parser.getPayload().get()); CPPUNIT_ASSERT_EQUAL(std::string("Bot Configuration"), payload->getTitle()); CPPUNIT_ASSERT_EQUAL(std::string("Hello!\nFill out this form to configure your new bot!"), payload->getInstructions()); CPPUNIT_ASSERT_EQUAL(Form::SubmitType, payload->getType()); }
void testParseWithPayload() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "<error type=\"modify\">" "<bad-request xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/>" "<delay xmlns='urn:xmpp:delay' from='[email protected]/balcony' stamp='2002-09-10T23:41:07Z'/>" "<text xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\">boo</text>" "</error>")); ErrorPayload::ref payload = std::dynamic_pointer_cast<ErrorPayload>(parser.getPayload()); CPPUNIT_ASSERT_EQUAL(ErrorPayload::BadRequest, payload->getCondition()); CPPUNIT_ASSERT_EQUAL(ErrorPayload::Modify, payload->getType()); CPPUNIT_ASSERT_EQUAL(std::string("boo"), payload->getText()); CPPUNIT_ASSERT(std::dynamic_pointer_cast<Delay>(payload->getPayload())); }
void testParse_Photo() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "<vCard xmlns='vcard-temp'>" "<PHOTO>" "<TYPE>image/jpeg</TYPE>" "<BINVAL>" "QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ej" "EyMzQ1Njc4OTA=" "</BINVAL>" "</PHOTO>" "</vCard>")); VCard* payload = dynamic_cast<VCard*>(parser.getPayload().get()); CPPUNIT_ASSERT_EQUAL(std::string("image/jpeg"), payload->getPhotoType()); CPPUNIT_ASSERT_EQUAL(ByteArray("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"), payload->getPhoto()); }
void testParse_FormLayout() { PayloadsParserTester parser; // P1 = page one, S1 = section one, F1 = field one, T1 = text one CPPUNIT_ASSERT(parser.parse( "<x type=\"form\" xmlns=\"jabber:x:data\">" "<page label=\"P1\" xmlns=\"http://jabber.org/protocol/xdata-layout\">" "<reportedref/>" "<text>P1T1</text>" "<fieldref var=\"P1F1\"/>" "<section label=\"P1S1\">" "<text>P1S1T1</text>" "<fieldref var=\"P1S1F1\"/>" "</section>" "</page>" "<page label=\"P2\" xmlns=\"http://jabber.org/protocol/xdata-layout\">" "<section label=\"P2S1\">" "<section label=\"P2S2\">" "<section label=\"P2S3\"/>" "</section>" "</section>" "</page>" "<field label=\"field one\" type=\"text-single\" var=\"P1F1\"/>" "<field label=\"field two\" type=\"text-single\" var=\"P1S1F1\"/>" "</x>")); Form* payload = dynamic_cast<Form*>(parser.getPayload().get()); CPPUNIT_ASSERT(payload); CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(payload->getFields().size())); // PAGE ONE - parsing of element types CPPUNIT_ASSERT_EQUAL(std::string("P1"), payload->getPages()[0]->getLabel()); CPPUNIT_ASSERT(payload->getPages()[0]->getReportedRefs()[0]); CPPUNIT_ASSERT_EQUAL(std::string("P1T1"), payload->getPages()[0]->getTextElements()[0]->getTextString()); CPPUNIT_ASSERT_EQUAL(std::string("P1F1"), payload->getPages()[0]->getFields()[0]->getName()); CPPUNIT_ASSERT_EQUAL(std::string("P1S1"), payload->getPages()[0]->getChildSections()[0]->getLabel()); CPPUNIT_ASSERT_EQUAL(std::string("P1S1T1"), payload->getPages()[0]->getChildSections()[0]->getTextElements()[0]->getTextString()); CPPUNIT_ASSERT_EQUAL(std::string("P1S1F1"), payload->getPages()[0]->getChildSections()[0]->getFields()[0]->getName()); // PAGE TWO - parsing of nested elements CPPUNIT_ASSERT_EQUAL(std::string("P2"), payload->getPages()[1]->getLabel()); CPPUNIT_ASSERT_EQUAL(std::string("P2S1"), payload->getPages()[1]->getChildSections()[0]->getLabel()); CPPUNIT_ASSERT_EQUAL(std::string("P2S2"), payload->getPages()[1]->getChildSections()[0]->getChildSections()[0]->getLabel()); CPPUNIT_ASSERT_EQUAL(std::string("P2S3"), payload->getPages()[1]->getChildSections()[0]->getChildSections()[0]->getChildSections()[0]->getLabel()); }
void testParse_Form() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "<query xmlns=\"http://jabber.org/protocol/disco#info\">" "<feature var=\"foo-feature\"/>" "<x type=\"submit\" xmlns=\"jabber:x:data\">" "<title>Bot Configuration</title>" "<instructions>Hello!</instructions>" "</x>" "<feature var=\"bar-feature\"/>" "</query>")); DiscoInfo::ref payload = std::dynamic_pointer_cast<DiscoInfo>(parser.getPayload()); CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(payload->getExtensions().size())); CPPUNIT_ASSERT_EQUAL(std::string("Bot Configuration"), payload->getExtensions()[0]->getTitle()); CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(payload->getFeatures().size())); CPPUNIT_ASSERT_EQUAL(std::string("foo-feature"), payload->getFeatures()[0]); CPPUNIT_ASSERT_EQUAL(std::string("bar-feature"), payload->getFeatures()[1]); }
void testParse_MultipleRooms() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "<storage xmlns='storage:bookmarks'>" "<conference " "name='Council of Oberon' " "jid='*****@*****.**' />" "<conference " "name='Tea & jam party' " "jid='*****@*****.**' />" "</storage>")); Storage* payload = dynamic_cast<Storage*>(parser.getPayload().get()); std::vector<Storage::Room> rooms = payload->getRooms(); CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(rooms.size())); CPPUNIT_ASSERT_EQUAL(std::string("Council of Oberon"), rooms[0].name); CPPUNIT_ASSERT_EQUAL(JID("*****@*****.**"), rooms[0].jid); CPPUNIT_ASSERT_EQUAL(std::string("Tea & jam party"), rooms[1].name); CPPUNIT_ASSERT_EQUAL(JID("*****@*****.**"), rooms[1].jid); }
void testParse_Room() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "<storage xmlns='storage:bookmarks'>" "<conference " "name='Council of Oberon' " "autojoin='true' jid='*****@*****.**'>" "<nick>Puck</nick>" "<password>MyPass</password>" "</conference>" "</storage>")); Storage* payload = dynamic_cast<Storage*>(parser.getPayload().get()); std::vector<Storage::Room> rooms = payload->getRooms(); CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(rooms.size())); CPPUNIT_ASSERT_EQUAL(std::string("Council of Oberon"), rooms[0].name); CPPUNIT_ASSERT_EQUAL(JID("*****@*****.**"), rooms[0].jid); CPPUNIT_ASSERT(rooms[0].autoJoin); CPPUNIT_ASSERT_EQUAL(std::string("Puck"), rooms[0].nick); CPPUNIT_ASSERT_EQUAL(std::string("MyPass"), *rooms[0].password); }
void testParse() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse("<x xmlns=\"http://jabber.org/protocol/muc#user\"><status code='110'/><item affiliation=\"owner\" role=\"visitor\"><actor jid=\"[email protected]\"/><reason>malice</reason></item><status code='210'/></x>")); bool found110 = false; bool found210 = false; MUCUserPayload::ref payload = std::dynamic_pointer_cast<MUCUserPayload>(parser.getPayload()); for (const auto& status : payload->getStatusCodes()) { if (status.code == 110) found110 = true; if (status.code == 210) found210 = true; } MUCItem item = payload->getItems()[0]; CPPUNIT_ASSERT_EQUAL(MUCOccupant::Owner, item.affiliation.get()); CPPUNIT_ASSERT_EQUAL(MUCOccupant::Visitor, item.role.get()); CPPUNIT_ASSERT_EQUAL(JID("*****@*****.**"), item.actor.get()); CPPUNIT_ASSERT_EQUAL(std::string("malice"), item.reason.get()); CPPUNIT_ASSERT(found110); CPPUNIT_ASSERT(found210); }
void testParse_ItemWithUnknownContent() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "<query xmlns='jabber:iq:roster'>" " <item jid='*****@*****.**' name='Foo @ Bar' subscription='from' ask='subscribe'>" " <group>Group 1</group>" " <foo xmlns=\"http://example.com\"><bar>Baz</bar></foo>" " <group>Group 2</group>" " <baz><fum>foo</fum></baz>" " </item>" "</query>")); RosterPayload* payload = dynamic_cast<RosterPayload*>(parser.getPayload().get()); const RosterPayload::RosterItemPayloads& items = payload->getItems(); CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), items.size()); CPPUNIT_ASSERT_EQUAL(std::string("Group 1"), items[0].getGroups()[0]); CPPUNIT_ASSERT_EQUAL(std::string("Group 2"), items[0].getGroups()[1]); CPPUNIT_ASSERT_EQUAL(std::string( "<foo xmlns=\"http://example.com\"><bar xmlns=\"http://example.com\">Baz</bar></foo>" "<baz xmlns=\"jabber:iq:roster\"><fum xmlns=\"jabber:iq:roster\">foo</fum></baz>" ), items[0].getUnknownContent()); }
void testParse() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "<catalog desc=\"an example set of labels\" name=\"Default\" to=\"example.com\" xmlns=\"urn:xmpp:sec-label:catalog:2\">" "<item selector='Classified|SECRET'>" "<securitylabel xmlns=\"urn:xmpp:sec-label:0\">" "<displaymarking bgcolor=\"red\" fgcolor=\"black\">SECRET</displaymarking>" "<label><esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQYCAQQGASk=</esssecuritylabel></label>" "</securitylabel>" "</item>" "<item selector='Classified|CONFIDENTIAL' default='true'>" "<securitylabel xmlns=\"urn:xmpp:sec-label:0\">" "<displaymarking bgcolor=\"navy\" fgcolor=\"black\">CONFIDENTIAL</displaymarking>" "<label><esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQMGASk=</esssecuritylabel></label>" "</securitylabel>" "</item>" "<item selector='Unclassified|UNCLASSIFIED'/>" "</catalog>")); SecurityLabelsCatalog* payload = dynamic_cast<SecurityLabelsCatalog*>(parser.getPayload().get()); CPPUNIT_ASSERT_EQUAL(std::string("Default"), payload->getName()); CPPUNIT_ASSERT_EQUAL(std::string("an example set of labels"), payload->getDescription()); CPPUNIT_ASSERT_EQUAL(JID("example.com"), payload->getTo()); CPPUNIT_ASSERT_EQUAL(3, static_cast<int>(payload->getItems().size())); CPPUNIT_ASSERT_EQUAL(std::string("SECRET"), payload->getItems()[0].getLabel()->getDisplayMarking()); CPPUNIT_ASSERT_EQUAL(std::string("<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQYCAQQGASk=</esssecuritylabel>"), payload->getItems()[0].getLabel()->getLabel()); CPPUNIT_ASSERT_EQUAL(false, payload->getItems()[0].getIsDefault()); CPPUNIT_ASSERT_EQUAL(std::string("Classified|SECRET"), payload->getItems()[0].getSelector()); CPPUNIT_ASSERT_EQUAL(std::string("CONFIDENTIAL"), payload->getItems()[1].getLabel()->getDisplayMarking()); CPPUNIT_ASSERT_EQUAL(std::string("<esssecuritylabel xmlns=\"urn:xmpp:sec-label:ess:0\">MQMGASk=</esssecuritylabel>"), payload->getItems()[1].getLabel()->getLabel()); CPPUNIT_ASSERT_EQUAL(true, payload->getItems()[1].getIsDefault()); CPPUNIT_ASSERT_EQUAL(std::string("Classified|CONFIDENTIAL"), payload->getItems()[1].getSelector()); CPPUNIT_ASSERT_EQUAL(false, payload->getItems()[2].getIsDefault()); CPPUNIT_ASSERT_EQUAL(std::string("Unclassified|UNCLASSIFIED"), payload->getItems()[2].getSelector()); CPPUNIT_ASSERT(!payload->getItems()[2].getLabel()); }
void testParse_MultiplePayloads() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "<query xmlns='jabber:iq:private'>" "<storage xmlns='storage:bookmarks'>" "<conference name='Swift' jid='*****@*****.**'>" "<nick>Alice</nick>" "</conference>" "</storage>" "<storage xmlns='storage:bookmarks'>" "<conference name='Swift' jid='*****@*****.**'>" "<nick>Rabbit</nick>" "</conference>" "</storage>" "</query>")); boost::shared_ptr<PrivateStorage> payload = boost::dynamic_pointer_cast<PrivateStorage>(parser.getPayload()); CPPUNIT_ASSERT(payload); boost::shared_ptr<Storage> storage = boost::dynamic_pointer_cast<Storage>(payload->getPayload()); CPPUNIT_ASSERT(storage); CPPUNIT_ASSERT_EQUAL(std::string("Rabbit"), storage->getRooms()[0].nick); }
void testParse_NoPayload() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse("<query xmlns='jabber:iq:private'/>")); boost::shared_ptr<PrivateStorage> payload = boost::dynamic_pointer_cast<PrivateStorage>(parser.getPayload()); CPPUNIT_ASSERT(payload); CPPUNIT_ASSERT(!payload->getPayload()); }
void testParseXEP0184Example4() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse("<received xmlns='urn:xmpp:receipts' id='richard2-4.1.247'/>")); DeliveryReceipt::ref receipt = std::dynamic_pointer_cast<DeliveryReceipt>(parser.getPayload()); CPPUNIT_ASSERT_EQUAL(std::string("richard2-4.1.247"), receipt->getReceivedID()); }
void testParseXEP0184Example3() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse("<request xmlns='urn:xmpp:receipts'/>")); DeliveryReceiptRequest::ref request = std::dynamic_pointer_cast<DeliveryReceiptRequest>(parser.getPayload()); CPPUNIT_ASSERT(request); }
void testParse() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.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\">" "<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>" "<value>news</value>" "<value>search</value>" "</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>[email protected]</value>" "<value>[email protected]</value>" "</field>" "<field var=\"untyped\">" "<value>foo</value>" "</field>" "</x>")); Form* payload = dynamic_cast<Form*>(parser.getPayload().get()); CPPUNIT_ASSERT(payload); CPPUNIT_ASSERT_EQUAL(10, static_cast<int>(payload->getFields().size())); CPPUNIT_ASSERT_EQUAL(std::string("jabber:bot"), payload->getFields()[0]->getValues()[0]); CPPUNIT_ASSERT_EQUAL(std::string("FORM_TYPE"), payload->getFields()[0]->getName()); CPPUNIT_ASSERT(!payload->getFields()[0]->getRequired()); CPPUNIT_ASSERT_EQUAL(std::string("Section 1: Bot Info"), payload->getFields()[1]->getValues()[0]); CPPUNIT_ASSERT_EQUAL(std::string("The name of your bot"), payload->getFields()[2]->getLabel()); CPPUNIT_ASSERT_EQUAL(std::string("This is a bot.\nA quite good one actually"), payload->getFields()[3]->getTextMultiValue()); CPPUNIT_ASSERT_EQUAL(true, payload->getFields()[4]->getBoolValue()); CPPUNIT_ASSERT(payload->getFields()[4]->getRequired()); CPPUNIT_ASSERT_EQUAL(std::string("1"), payload->getFields()[4]->getValues()[0]); CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(payload->getFields()[6]->getValues().size())); CPPUNIT_ASSERT_EQUAL(std::string("news"), payload->getFields()[6]->getValues()[0]); CPPUNIT_ASSERT_EQUAL(std::string("search"), payload->getFields()[6]->getValues()[1]); CPPUNIT_ASSERT_EQUAL(5, static_cast<int>(payload->getFields()[6]->getOptions().size())); CPPUNIT_ASSERT_EQUAL(std::string("Contests"), payload->getFields()[6]->getOptions()[0].label); CPPUNIT_ASSERT_EQUAL(std::string("contests"), payload->getFields()[6]->getOptions()[0].value); CPPUNIT_ASSERT_EQUAL(std::string("News"), payload->getFields()[6]->getOptions()[1].label); CPPUNIT_ASSERT_EQUAL(std::string("news"), payload->getFields()[6]->getOptions()[1].value); CPPUNIT_ASSERT_EQUAL(std::string("20"), payload->getFields()[7]->getValues()[0]); CPPUNIT_ASSERT_EQUAL(JID("*****@*****.**"), payload->getFields()[8]->getJIDMultiValue(0)); CPPUNIT_ASSERT_EQUAL(JID("*****@*****.**"), payload->getFields()[8]->getJIDMultiValue(1)); CPPUNIT_ASSERT_EQUAL(std::string("Tell all your friends about your new bot!"), payload->getFields()[8]->getDescription()); CPPUNIT_ASSERT_EQUAL(std::string("foo"), payload->getFields()[9]->getValues()[0]); }
void testParse_FormItems() { PayloadsParserTester parser; CPPUNIT_ASSERT(parser.parse( "<x xmlns='jabber:x:data' type='result'>" "<field type='hidden' var='FORM_TYPE'>" "<value>jabber:iq:search</value>" "</field>" "<reported>" "<field var='first' label='Given Name' type='text-single'/>" "<field var='last' label='Family Name' type='text-single'/>" "<field var='jid' label='Jabber ID' type='jid-single'/>" "<field var='x-gender' label='Gender' type='list-single'/>" "</reported>" "<item>" "<field var='first'><value>Benvolio</value></field>" "<field var='last'><value>Montague</value></field>" "<field var='jid'><value>[email protected]</value></field>" "<field var='x-gender'><value>male</value></field>" "</item>" "<item>" "<field var='first'><value>Romeo</value></field>" "<field var='last'><value>Montague</value></field>" "<field var='jid'><value>[email protected]</value></field>" "<field var='x-gender'><value>male</value></field>" "</item>" "</x>")); Form* dataForm = dynamic_cast<Form*>(parser.getPayload().get()); CPPUNIT_ASSERT(dataForm); Form::FormItem reported = dataForm->getReportedFields(); CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(4), reported.size()); std::vector<Form::FormItem> items = dataForm->getItems(); CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), items.size()); Form::FormItem item = items[0]; CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(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()); std::shared_ptr<FormField> jidField = item[2]; CPPUNIT_ASSERT_EQUAL(JID("*****@*****.**"), jidField->getJIDSingleValue()); 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<size_t>(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()); jidField = item[2]; CPPUNIT_ASSERT(jidField); CPPUNIT_ASSERT_EQUAL(JID("*****@*****.**"), jidField->getJIDSingleValue()); 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()); }