Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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());
		}
Esempio n. 6
0
        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());
		}
Esempio n. 8
0
        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]);
        }
Esempio n. 9
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);
		}
Esempio n. 10
0
        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]);
        }
Esempio n. 11
0
        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());
		}
Esempio n. 13
0
        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());
        }
Esempio n. 14
0
		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());
		}
Esempio n. 15
0
        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()));
        }
Esempio n. 16
0
		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());
		}
Esempio n. 17
0
        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());
        }
Esempio n. 18
0
        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]);
        }
Esempio n. 19
0
		void testParse_MultipleRooms() {
			PayloadsParserTester parser;

			CPPUNIT_ASSERT(parser.parse(
				"<storage xmlns='storage:bookmarks'>"
					"<conference "
							"name='Council of Oberon' "
							"jid='*****@*****.**' />"
					"<conference "
							"name='Tea &amp; 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);
		}
Esempio n. 20
0
		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);
		}
Esempio n. 21
0
        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);
        }
Esempio n. 22
0
		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());
		}
Esempio n. 26
0
        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());
        }
Esempio n. 27
0
        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);
        }
Esempio n. 28
0
        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]);
        }
Esempio n. 29
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());
        }