From 1cb79aafa683eefeb4253cd9338fa8c3446bf318 Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Wed, 27 Jan 2016 08:50:41 +0100 Subject: [PATCH] Test room escaping in DiscoItemsResponder --- tests/libtransport/discoitemsresponder.cpp | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/tests/libtransport/discoitemsresponder.cpp b/tests/libtransport/discoitemsresponder.cpp index 62243299..b27aa67f 100644 --- a/tests/libtransport/discoitemsresponder.cpp +++ b/tests/libtransport/discoitemsresponder.cpp @@ -16,6 +16,8 @@ class DiscoItemsResponderTest : public CPPUNIT_NS :: TestFixture, public BasicTe CPPUNIT_TEST_SUITE(DiscoItemsResponderTest); CPPUNIT_TEST(roomList); CPPUNIT_TEST(roomInfo); + CPPUNIT_TEST(roomListEscaping); + CPPUNIT_TEST(roomInfoEscaping); CPPUNIT_TEST(clearRooms); CPPUNIT_TEST(receipts); CPPUNIT_TEST_SUITE_END(); @@ -67,6 +69,42 @@ class DiscoItemsResponderTest : public CPPUNIT_NS :: TestFixture, public BasicTe CPPUNIT_ASSERT_EQUAL(std::string("text"), getStanza(received[0])->getPayload()->getIdentities()[0].getType()); } + void roomListEscaping() { + itemsResponder->addRoom(Swift::JID::getEscapedNode("19:room@localhost") + "@" + component->getJID().toString(), "#room"); + + boost::shared_ptr payload(new Swift::DiscoItems()); + boost::shared_ptr iq = Swift::IQ::createRequest(Swift::IQ::Get, Swift::JID("localhost"), "id", payload); + iq->setFrom("user@localhost"); + injectIQ(iq); + loop->processEvents(); + + CPPUNIT_ASSERT_EQUAL(1, (int) received.size()); + CPPUNIT_ASSERT(dynamic_cast(getStanza(received[0]))); + CPPUNIT_ASSERT_EQUAL(Swift::IQ::Result, dynamic_cast(getStanza(received[0]))->getType()); + CPPUNIT_ASSERT(getStanza(received[0])->getPayload()); + CPPUNIT_ASSERT_EQUAL(std::string("19\\3aroom\\40localhost@localhost"), getStanza(received[0])->getPayload()->getItems()[0].getJID().toString()); + CPPUNIT_ASSERT_EQUAL(std::string("#room"), getStanza(received[0])->getPayload()->getItems()[0].getName()); + } + + void roomInfoEscaping() { + itemsResponder->addRoom(Swift::JID::getEscapedNode("19:room@localhost") + "@" + component->getJID().toString(), "#room"); + + boost::shared_ptr payload(new Swift::DiscoInfo()); + boost::shared_ptr iq = Swift::IQ::createRequest(Swift::IQ::Get, Swift::JID("localhost"), "id", payload); + iq->setFrom("user@localhost"); + iq->setTo("19\\3aroom\\40localhost@localhost"); + injectIQ(iq); + loop->processEvents(); + + CPPUNIT_ASSERT_EQUAL(1, (int) received.size()); + CPPUNIT_ASSERT(dynamic_cast(getStanza(received[0]))); + CPPUNIT_ASSERT_EQUAL(Swift::IQ::Result, dynamic_cast(getStanza(received[0]))->getType()); + CPPUNIT_ASSERT(getStanza(received[0])->getPayload()); + CPPUNIT_ASSERT_EQUAL(std::string("#room"), getStanza(received[0])->getPayload()->getIdentities()[0].getName()); + CPPUNIT_ASSERT_EQUAL(std::string("conference"), getStanza(received[0])->getPayload()->getIdentities()[0].getCategory()); + CPPUNIT_ASSERT_EQUAL(std::string("text"), getStanza(received[0])->getPayload()->getIdentities()[0].getType()); + } + void clearRooms() { itemsResponder->addRoom("#room@localhost", "#room"); itemsResponder->clearRooms();