diff --git a/tests/libtransport/discoitemsresponder.cpp b/tests/libtransport/discoitemsresponder.cpp index b27aa67f8d77f8bf813a842dceb6d3c39c7eb7cc..a93c2a65f84868cd648e4b89b10a06ac387e7243 100644 --- a/tests/libtransport/discoitemsresponder.cpp +++ b/tests/libtransport/discoitemsresponder.cpp @@ -15,7 +15,9 @@ using namespace Transport; class DiscoItemsResponderTest : public CPPUNIT_NS :: TestFixture, public BasicTest { CPPUNIT_TEST_SUITE(DiscoItemsResponderTest); CPPUNIT_TEST(roomList); + CPPUNIT_TEST(roomListUser); CPPUNIT_TEST(roomInfo); + CPPUNIT_TEST(roomInfoUser); CPPUNIT_TEST(roomListEscaping); CPPUNIT_TEST(roomInfoEscaping); CPPUNIT_TEST(clearRooms); @@ -50,6 +52,50 @@ class DiscoItemsResponderTest : public CPPUNIT_NS :: TestFixture, public BasicTe CPPUNIT_ASSERT_EQUAL(std::string("#room"), getStanza(received[0])->getPayload()->getItems()[0].getName()); } + void roomListUser() { + connectUser(); + User *user = userManager->getUser("user@localhost"); + user->addRoomToRoomList("#room2@localhost", "#room2"); + itemsResponder->addRoom("#room@localhost", "#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("#room@localhost"), getStanza(received[0])->getPayload()->getItems()[0].getJID().toString()); + CPPUNIT_ASSERT_EQUAL(std::string("#room"), getStanza(received[0])->getPayload()->getItems()[0].getName()); + CPPUNIT_ASSERT_EQUAL(std::string("#room2@localhost"), getStanza(received[0])->getPayload()->getItems()[1].getJID().toString()); + CPPUNIT_ASSERT_EQUAL(std::string("#room2"), getStanza(received[0])->getPayload()->getItems()[1].getName()); + } + + void roomInfoUser() { + connectUser(); + User *user = userManager->getUser("user@localhost"); + user->addRoomToRoomList("#room2@localhost", "#room2"); + itemsResponder->addRoom("#room@localhost", "#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("#room2@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("#room2"), 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 roomInfo() { itemsResponder->addRoom("#room@localhost", "#room");