diff --git a/src/tests/usermanager.cpp b/src/tests/usermanager.cpp index bd559a545bdca9aa4350361df4148ba60314f7e7..d0084ddfd8554bf98662639eb31247ee70e575e5 100644 --- a/src/tests/usermanager.cpp +++ b/src/tests/usermanager.cpp @@ -58,10 +58,13 @@ class TestingFactory : public Factory { class UserManagerTest : public CPPUNIT_NS :: TestFixture, public Swift::XMPPParserClient { CPPUNIT_TEST_SUITE(UserManagerTest); CPPUNIT_TEST(connectUser); + CPPUNIT_TEST(handleProbePresence); + CPPUNIT_TEST(disconnectUser); CPPUNIT_TEST_SUITE_END(); public: void setUp (void) { + streamEnded = false; std::istringstream ifs("service.server_mode = 1\n"); cfg = new Config(); cfg->load(ifs); @@ -119,7 +122,7 @@ class UserManagerTest : public CPPUNIT_NS :: TestFixture, public Swift::XMPPPars } void handleStreamEnd() { - + streamEnded = true; } void connectUser() { @@ -138,8 +141,36 @@ class UserManagerTest : public CPPUNIT_NS :: TestFixture, public Swift::XMPPPars user->setConnected(true); CPPUNIT_ASSERT(user->isConnected() == true); + + CPPUNIT_ASSERT_EQUAL(1, (int) received.size()); + CPPUNIT_ASSERT(getStanza(received[0])->getPayload()); } + void disconnectUser() { + connectUser(); + received.clear(); + + userManager->disconnectUser("user@localhost"); + dynamic_cast(factories->getTimerFactory())->setTime(10); + loop->processEvents(); + + CPPUNIT_ASSERT_EQUAL(0, userManager->getUserCount()); + CPPUNIT_ASSERT_EQUAL(1, (int) received.size()); + CPPUNIT_ASSERT(dynamic_cast(getStanza(received[0]))); + } + + void handleProbePresence() { + Swift::Presence::ref response = Swift::Presence::create(); + response->setTo("localhost"); + response->setFrom("user@localhost/resource"); + response->setType(Swift::Presence::Probe); + dynamic_cast(component->getStanzaChannel())->onPresenceReceived(response); + loop->processEvents(); + + CPPUNIT_ASSERT_EQUAL(2, (int) received.size()); + CPPUNIT_ASSERT(getStanza(received[0])->getPayload()); + CPPUNIT_ASSERT(dynamic_cast(getStanza(received[1]))); + } Swift::Stanza *getStanza(boost::shared_ptr element) { Swift::Stanza *stanza = dynamic_cast(element.get()); @@ -148,6 +179,7 @@ class UserManagerTest : public CPPUNIT_NS :: TestFixture, public Swift::XMPPPars } private: + bool streamEnded; UserManager *userManager; boost::shared_ptr serverFromClientSession; Swift::FullPayloadSerializerCollection* payloadSerializers;