diff options
Diffstat (limited to 'Swiften/Roster/UnitTest')
-rw-r--r-- | Swiften/Roster/UnitTest/XMPPRosterControllerTest.cpp | 668 | ||||
-rw-r--r-- | Swiften/Roster/UnitTest/XMPPRosterImplTest.cpp | 166 | ||||
-rw-r--r-- | Swiften/Roster/UnitTest/XMPPRosterSignalHandler.cpp | 20 | ||||
-rw-r--r-- | Swiften/Roster/UnitTest/XMPPRosterSignalHandler.h | 76 |
4 files changed, 465 insertions, 465 deletions
diff --git a/Swiften/Roster/UnitTest/XMPPRosterControllerTest.cpp b/Swiften/Roster/UnitTest/XMPPRosterControllerTest.cpp index 3e2f85e..6850c21 100644 --- a/Swiften/Roster/UnitTest/XMPPRosterControllerTest.cpp +++ b/Swiften/Roster/UnitTest/XMPPRosterControllerTest.cpp @@ -22,340 +22,340 @@ using namespace Swift; class XMPPRosterControllerTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(XMPPRosterControllerTest); - CPPUNIT_TEST(testGet_Response); - CPPUNIT_TEST(testGet_EmptyResponse); - CPPUNIT_TEST(testGet_NoRosterInStorage); - CPPUNIT_TEST(testGet_NoVersionInStorage); - CPPUNIT_TEST(testGet_VersionInStorage); - CPPUNIT_TEST(testGet_ServerDoesNotSupportVersion); - CPPUNIT_TEST(testGet_ResponseWithoutNewVersion); - CPPUNIT_TEST(testGet_ResponseWithNewVersion); - CPPUNIT_TEST(testAdd); - CPPUNIT_TEST(testAddFromNonAccount); - CPPUNIT_TEST(testModify); - CPPUNIT_TEST(testRemove); - CPPUNIT_TEST(testRemove_RosterStorageUpdated); - CPPUNIT_TEST(testMany); - CPPUNIT_TEST_SUITE_END(); - - public: - void setUp() { - channel_ = new DummyStanzaChannel(); - router_ = new IQRouter(channel_); - router_->setJID("me@bla.com"); - xmppRoster_ = new XMPPRosterImpl(); - handler_ = new XMPPRosterSignalHandler(xmppRoster_); - rosterStorage_ = new RosterMemoryStorage(); - jid1_ = JID("foo@bar.com"); - jid2_ = JID("alice@wonderland.lit"); - jid3_ = JID("jane@austen.lit"); - } - - void tearDown() { - delete rosterStorage_; - delete handler_; - delete xmppRoster_; - delete router_; - delete channel_; - } - - void testGet_Response() { - boost::shared_ptr<XMPPRosterController> testling(createController()); - - testling->requestRoster(); - boost::shared_ptr<RosterPayload> payload = boost::make_shared<RosterPayload>(); - payload->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Both)); - payload->addItem(RosterItemPayload(jid2_, "Alice", RosterItemPayload::Both)); - channel_->onIQReceived(IQ::createResult("foo@bar.com", channel_->sentStanzas[0]->getID(), payload)); - - CPPUNIT_ASSERT_EQUAL(2, handler_->getEventCount()); - CPPUNIT_ASSERT(xmppRoster_->getItem(jid1_)); - CPPUNIT_ASSERT(xmppRoster_->getItem(jid2_)); - } - - void testGet_EmptyResponse() { - XMPPRosterController controller(router_, xmppRoster_, rosterStorage_); - - controller.requestRoster(); - - channel_->onIQReceived(IQ::createResult(JID("baz@fum.com/dum"), channel_->sentStanzas[0]->getID(), boost::shared_ptr<RosterPayload>())); - } - - void testAdd() { - XMPPRosterController controller(router_, xmppRoster_, rosterStorage_); - - boost::shared_ptr<RosterPayload> payload(new RosterPayload()); - payload->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Both)); - channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "eou", payload)); - - CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), xmppRoster_->getGroupsForJID(jid1_).size()); - CPPUNIT_ASSERT(xmppRoster_->containsJID(jid1_)); - CPPUNIT_ASSERT_EQUAL(std::string("Bob"), xmppRoster_->getNameForJID(jid1_)); - } - - void testGet_NoRosterInStorage() { - boost::shared_ptr<XMPPRosterController> testling(createController()); - testling->setUseVersioning(true); - - testling->requestRoster(); - - boost::shared_ptr<RosterPayload> roster = channel_->sentStanzas[0]->getPayload<RosterPayload>(); - CPPUNIT_ASSERT(roster->getVersion()); - CPPUNIT_ASSERT_EQUAL(std::string(""), *roster->getVersion()); - } - - void testGet_NoVersionInStorage() { - boost::shared_ptr<XMPPRosterController> testling(createController()); - testling->setUseVersioning(true); - rosterStorage_->setRoster(boost::make_shared<RosterPayload>()); - - testling->requestRoster(); - - boost::shared_ptr<RosterPayload> roster = channel_->sentStanzas[0]->getPayload<RosterPayload>(); - CPPUNIT_ASSERT(roster->getVersion()); - CPPUNIT_ASSERT_EQUAL(std::string(""), *roster->getVersion()); - } - - void testGet_VersionInStorage() { - boost::shared_ptr<XMPPRosterController> testling(createController()); - testling->setUseVersioning(true); - boost::shared_ptr<RosterPayload> payload(new RosterPayload()); - payload->setVersion("foover"); - rosterStorage_->setRoster(payload); - - testling->requestRoster(); - - boost::shared_ptr<RosterPayload> roster = channel_->sentStanzas[0]->getPayload<RosterPayload>(); - CPPUNIT_ASSERT(roster->getVersion()); - CPPUNIT_ASSERT_EQUAL(std::string("foover"), *roster->getVersion()); - } - - void testGet_ServerDoesNotSupportVersion() { - boost::shared_ptr<XMPPRosterController> testling(createController()); - boost::shared_ptr<RosterPayload> payload(new RosterPayload()); - payload->setVersion("foover"); - rosterStorage_->setRoster(payload); - - testling->requestRoster(); - - boost::shared_ptr<RosterPayload> roster = channel_->sentStanzas[0]->getPayload<RosterPayload>(); - CPPUNIT_ASSERT(!roster->getVersion()); - } - - void testGet_ResponseWithoutNewVersion() { - boost::shared_ptr<XMPPRosterController> testling(createController()); - testling->setUseVersioning(true); - boost::shared_ptr<RosterPayload> storedRoster(new RosterPayload()); - storedRoster->setVersion("version10"); - storedRoster->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Both)); - storedRoster->addItem(RosterItemPayload(jid2_, "Alice", RosterItemPayload::Both)); - rosterStorage_->setRoster(storedRoster); - testling->requestRoster(); - - channel_->onIQReceived(IQ::createResult("foo@bar.com", channel_->sentStanzas[0]->getID(), boost::shared_ptr<RosterPayload>())); - - CPPUNIT_ASSERT_EQUAL(2, handler_->getEventCount()); - CPPUNIT_ASSERT(xmppRoster_->getItem(jid1_)); - CPPUNIT_ASSERT(xmppRoster_->getItem(jid2_)); - CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid2_, handler_->getLastJID()); - CPPUNIT_ASSERT(rosterStorage_->getRoster()); - CPPUNIT_ASSERT(rosterStorage_->getRoster()->getVersion()); - CPPUNIT_ASSERT_EQUAL(std::string("version10"), *rosterStorage_->getRoster()->getVersion()); - CPPUNIT_ASSERT(rosterStorage_->getRoster()->getItem(jid1_)); - CPPUNIT_ASSERT(rosterStorage_->getRoster()->getItem(jid2_)); - } - - void testGet_ResponseWithNewVersion() { - boost::shared_ptr<XMPPRosterController> testling(createController()); - testling->setUseVersioning(true); - boost::shared_ptr<RosterPayload> storedRoster(new RosterPayload()); - storedRoster->setVersion("version10"); - storedRoster->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Both)); - rosterStorage_->setRoster(storedRoster); - testling->requestRoster(); - - boost::shared_ptr<RosterPayload> serverRoster(new RosterPayload()); - serverRoster->setVersion("version12"); - serverRoster->addItem(RosterItemPayload(jid2_, "Alice", RosterItemPayload::Both)); - std::vector<std::string> groups; - groups.push_back("foo"); - groups.push_back("bar"); - serverRoster->addItem(RosterItemPayload(jid3_, "Rabbit", RosterItemPayload::Both, groups)); - channel_->onIQReceived(IQ::createResult("foo@bar.com", channel_->sentStanzas[0]->getID(), serverRoster)); - - - CPPUNIT_ASSERT_EQUAL(2, handler_->getEventCount()); - CPPUNIT_ASSERT(!xmppRoster_->getItem(jid1_)); - CPPUNIT_ASSERT(xmppRoster_->getItem(jid2_)); - CPPUNIT_ASSERT(xmppRoster_->getItem(jid3_)); - CPPUNIT_ASSERT_EQUAL(jid3_, handler_->getLastJID()); - CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); - CPPUNIT_ASSERT(rosterStorage_->getRoster()); - CPPUNIT_ASSERT(rosterStorage_->getRoster()->getVersion()); - CPPUNIT_ASSERT_EQUAL(std::string("version12"), *rosterStorage_->getRoster()->getVersion()); - CPPUNIT_ASSERT(!rosterStorage_->getRoster()->getItem(jid1_)); - CPPUNIT_ASSERT(rosterStorage_->getRoster()->getItem(jid2_)); - CPPUNIT_ASSERT(rosterStorage_->getRoster()->getItem(jid3_)); - CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(rosterStorage_->getRoster()->getItem(jid3_)->getGroups().size())); - } - - void testAddFromNonAccount() { - boost::shared_ptr<XMPPRosterController> testling(createController()); - - boost::shared_ptr<RosterPayload> payload(new RosterPayload()); - payload->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Both)); - IQ::ref request = IQ::createRequest(IQ::Set, JID(), "eou", payload); - request->setFrom(jid2_); - channel_->onIQReceived(request); - - CPPUNIT_ASSERT_EQUAL(None, handler_->getLastEvent()); - } - - void testModify() { - XMPPRosterController controller(router_, xmppRoster_, rosterStorage_); - boost::shared_ptr<RosterPayload> payload1(new RosterPayload()); - payload1->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Both)); - channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "id1", payload1)); - - CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); - handler_->reset(); - - boost::shared_ptr<RosterPayload> payload2(new RosterPayload()); - payload2->addItem(RosterItemPayload(jid1_, "Bob2", RosterItemPayload::Both)); - channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "id2", payload2)); - - CPPUNIT_ASSERT_EQUAL(Update, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); - - CPPUNIT_ASSERT_EQUAL(std::string("Bob2"), xmppRoster_->getNameForJID(jid1_)); - } - - void testRemove() { - XMPPRosterController controller(router_, xmppRoster_, rosterStorage_); - boost::shared_ptr<RosterPayload> payload1(new RosterPayload()); - payload1->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Both)); - channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "id1", payload1)); - - CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); - handler_->reset(); - - boost::shared_ptr<RosterPayload> payload2(new RosterPayload()); - payload2->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Remove)); - channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "id2", payload2)); - CPPUNIT_ASSERT(!xmppRoster_->containsJID(jid1_)); - CPPUNIT_ASSERT_EQUAL(Remove, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); - - } - - void testRemove_RosterStorageUpdated() { - boost::shared_ptr<XMPPRosterController> testling(createController()); - testling->setUseVersioning(true); - boost::shared_ptr<RosterPayload> storedRoster(new RosterPayload()); - storedRoster->setVersion("version10"); - storedRoster->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Both)); - storedRoster->addItem(RosterItemPayload(jid2_, "Alice", RosterItemPayload::Both)); - rosterStorage_->setRoster(storedRoster); - testling->requestRoster(); - channel_->onIQReceived(IQ::createResult("foo@bar.com", channel_->sentStanzas[0]->getID(), boost::shared_ptr<RosterPayload>())); - - boost::shared_ptr<RosterPayload> payload2(new RosterPayload()); - payload2->setVersion("version15"); - payload2->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Remove)); - channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "id2", payload2)); - - CPPUNIT_ASSERT(rosterStorage_->getRoster()); - CPPUNIT_ASSERT(rosterStorage_->getRoster()->getVersion()); - CPPUNIT_ASSERT_EQUAL(std::string("version15"), *rosterStorage_->getRoster()->getVersion()); - CPPUNIT_ASSERT(!rosterStorage_->getRoster()->getItem(jid1_)); - CPPUNIT_ASSERT(rosterStorage_->getRoster()->getItem(jid2_)); - } - - void testMany() { - XMPPRosterController controller(router_, xmppRoster_, rosterStorage_); - boost::shared_ptr<RosterPayload> payload1(new RosterPayload()); - payload1->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Both)); - channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "id1", payload1)); - - CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); - handler_->reset(); - - boost::shared_ptr<RosterPayload> payload2(new RosterPayload()); - payload2->addItem(RosterItemPayload(jid2_, "Alice", RosterItemPayload::Both)); - channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "id2", payload2)); - - CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid2_, handler_->getLastJID()); - handler_->reset(); - - boost::shared_ptr<RosterPayload> payload3(new RosterPayload()); - payload3->addItem(RosterItemPayload(jid1_, "Ernie", RosterItemPayload::Both)); - channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "id3", payload3)); - - CPPUNIT_ASSERT_EQUAL(Update, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); - handler_->reset(); - - boost::shared_ptr<RosterPayload> payload4(new RosterPayload()); - RosterItemPayload item(jid3_, "Jane", RosterItemPayload::Both); - std::string janesGroup("Jane's Group"); - item.addGroup(janesGroup); - payload4->addItem(item); - channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "id4", payload4)); - - CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid3_, handler_->getLastJID()); - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), xmppRoster_->getGroupsForJID(jid3_).size()); - CPPUNIT_ASSERT_EQUAL(janesGroup, xmppRoster_->getGroupsForJID(jid3_)[0]); - handler_->reset(); - - boost::shared_ptr<RosterPayload> payload5(new RosterPayload()); - payload5->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Remove)); - channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "id5", payload5)); - CPPUNIT_ASSERT(!xmppRoster_->containsJID(jid1_)); - CPPUNIT_ASSERT_EQUAL(Remove, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); - handler_->reset(); - - boost::shared_ptr<RosterPayload> payload6(new RosterPayload()); - RosterItemPayload item2(jid2_, "Little Alice", RosterItemPayload::Both); - std::string alicesGroup("Alice's Group"); - item2.addGroup(alicesGroup); - payload6->addItem(item2); - channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "id6", payload6)); - CPPUNIT_ASSERT_EQUAL(Update, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid2_, handler_->getLastJID()); - CPPUNIT_ASSERT_EQUAL(std::string("Little Alice"), xmppRoster_->getNameForJID(jid2_)); - CPPUNIT_ASSERT_EQUAL(std::string("Jane"), xmppRoster_->getNameForJID(jid3_)); - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), xmppRoster_->getGroupsForJID(jid2_).size()); - CPPUNIT_ASSERT_EQUAL(alicesGroup, xmppRoster_->getGroupsForJID(jid2_)[0]); - CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), xmppRoster_->getGroupsForJID(jid3_).size()); - CPPUNIT_ASSERT_EQUAL(janesGroup, xmppRoster_->getGroupsForJID(jid3_)[0]); - handler_->reset(); - - } - - private: - XMPPRosterController* createController() { - return new XMPPRosterController(router_, xmppRoster_, rosterStorage_); - } - - private: - DummyStanzaChannel* channel_; - IQRouter* router_; - XMPPRosterImpl* xmppRoster_; - XMPPRosterSignalHandler* handler_; - RosterMemoryStorage* rosterStorage_; - JID jid1_; - JID jid2_; - JID jid3_; + CPPUNIT_TEST_SUITE(XMPPRosterControllerTest); + CPPUNIT_TEST(testGet_Response); + CPPUNIT_TEST(testGet_EmptyResponse); + CPPUNIT_TEST(testGet_NoRosterInStorage); + CPPUNIT_TEST(testGet_NoVersionInStorage); + CPPUNIT_TEST(testGet_VersionInStorage); + CPPUNIT_TEST(testGet_ServerDoesNotSupportVersion); + CPPUNIT_TEST(testGet_ResponseWithoutNewVersion); + CPPUNIT_TEST(testGet_ResponseWithNewVersion); + CPPUNIT_TEST(testAdd); + CPPUNIT_TEST(testAddFromNonAccount); + CPPUNIT_TEST(testModify); + CPPUNIT_TEST(testRemove); + CPPUNIT_TEST(testRemove_RosterStorageUpdated); + CPPUNIT_TEST(testMany); + CPPUNIT_TEST_SUITE_END(); + + public: + void setUp() { + channel_ = new DummyStanzaChannel(); + router_ = new IQRouter(channel_); + router_->setJID("me@bla.com"); + xmppRoster_ = new XMPPRosterImpl(); + handler_ = new XMPPRosterSignalHandler(xmppRoster_); + rosterStorage_ = new RosterMemoryStorage(); + jid1_ = JID("foo@bar.com"); + jid2_ = JID("alice@wonderland.lit"); + jid3_ = JID("jane@austen.lit"); + } + + void tearDown() { + delete rosterStorage_; + delete handler_; + delete xmppRoster_; + delete router_; + delete channel_; + } + + void testGet_Response() { + boost::shared_ptr<XMPPRosterController> testling(createController()); + + testling->requestRoster(); + boost::shared_ptr<RosterPayload> payload = boost::make_shared<RosterPayload>(); + payload->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Both)); + payload->addItem(RosterItemPayload(jid2_, "Alice", RosterItemPayload::Both)); + channel_->onIQReceived(IQ::createResult("foo@bar.com", channel_->sentStanzas[0]->getID(), payload)); + + CPPUNIT_ASSERT_EQUAL(2, handler_->getEventCount()); + CPPUNIT_ASSERT(xmppRoster_->getItem(jid1_)); + CPPUNIT_ASSERT(xmppRoster_->getItem(jid2_)); + } + + void testGet_EmptyResponse() { + XMPPRosterController controller(router_, xmppRoster_, rosterStorage_); + + controller.requestRoster(); + + channel_->onIQReceived(IQ::createResult(JID("baz@fum.com/dum"), channel_->sentStanzas[0]->getID(), boost::shared_ptr<RosterPayload>())); + } + + void testAdd() { + XMPPRosterController controller(router_, xmppRoster_, rosterStorage_); + + boost::shared_ptr<RosterPayload> payload(new RosterPayload()); + payload->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Both)); + channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "eou", payload)); + + CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); + CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), xmppRoster_->getGroupsForJID(jid1_).size()); + CPPUNIT_ASSERT(xmppRoster_->containsJID(jid1_)); + CPPUNIT_ASSERT_EQUAL(std::string("Bob"), xmppRoster_->getNameForJID(jid1_)); + } + + void testGet_NoRosterInStorage() { + boost::shared_ptr<XMPPRosterController> testling(createController()); + testling->setUseVersioning(true); + + testling->requestRoster(); + + boost::shared_ptr<RosterPayload> roster = channel_->sentStanzas[0]->getPayload<RosterPayload>(); + CPPUNIT_ASSERT(roster->getVersion()); + CPPUNIT_ASSERT_EQUAL(std::string(""), *roster->getVersion()); + } + + void testGet_NoVersionInStorage() { + boost::shared_ptr<XMPPRosterController> testling(createController()); + testling->setUseVersioning(true); + rosterStorage_->setRoster(boost::make_shared<RosterPayload>()); + + testling->requestRoster(); + + boost::shared_ptr<RosterPayload> roster = channel_->sentStanzas[0]->getPayload<RosterPayload>(); + CPPUNIT_ASSERT(roster->getVersion()); + CPPUNIT_ASSERT_EQUAL(std::string(""), *roster->getVersion()); + } + + void testGet_VersionInStorage() { + boost::shared_ptr<XMPPRosterController> testling(createController()); + testling->setUseVersioning(true); + boost::shared_ptr<RosterPayload> payload(new RosterPayload()); + payload->setVersion("foover"); + rosterStorage_->setRoster(payload); + + testling->requestRoster(); + + boost::shared_ptr<RosterPayload> roster = channel_->sentStanzas[0]->getPayload<RosterPayload>(); + CPPUNIT_ASSERT(roster->getVersion()); + CPPUNIT_ASSERT_EQUAL(std::string("foover"), *roster->getVersion()); + } + + void testGet_ServerDoesNotSupportVersion() { + boost::shared_ptr<XMPPRosterController> testling(createController()); + boost::shared_ptr<RosterPayload> payload(new RosterPayload()); + payload->setVersion("foover"); + rosterStorage_->setRoster(payload); + + testling->requestRoster(); + + boost::shared_ptr<RosterPayload> roster = channel_->sentStanzas[0]->getPayload<RosterPayload>(); + CPPUNIT_ASSERT(!roster->getVersion()); + } + + void testGet_ResponseWithoutNewVersion() { + boost::shared_ptr<XMPPRosterController> testling(createController()); + testling->setUseVersioning(true); + boost::shared_ptr<RosterPayload> storedRoster(new RosterPayload()); + storedRoster->setVersion("version10"); + storedRoster->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Both)); + storedRoster->addItem(RosterItemPayload(jid2_, "Alice", RosterItemPayload::Both)); + rosterStorage_->setRoster(storedRoster); + testling->requestRoster(); + + channel_->onIQReceived(IQ::createResult("foo@bar.com", channel_->sentStanzas[0]->getID(), boost::shared_ptr<RosterPayload>())); + + CPPUNIT_ASSERT_EQUAL(2, handler_->getEventCount()); + CPPUNIT_ASSERT(xmppRoster_->getItem(jid1_)); + CPPUNIT_ASSERT(xmppRoster_->getItem(jid2_)); + CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); + CPPUNIT_ASSERT_EQUAL(jid2_, handler_->getLastJID()); + CPPUNIT_ASSERT(rosterStorage_->getRoster()); + CPPUNIT_ASSERT(rosterStorage_->getRoster()->getVersion()); + CPPUNIT_ASSERT_EQUAL(std::string("version10"), *rosterStorage_->getRoster()->getVersion()); + CPPUNIT_ASSERT(rosterStorage_->getRoster()->getItem(jid1_)); + CPPUNIT_ASSERT(rosterStorage_->getRoster()->getItem(jid2_)); + } + + void testGet_ResponseWithNewVersion() { + boost::shared_ptr<XMPPRosterController> testling(createController()); + testling->setUseVersioning(true); + boost::shared_ptr<RosterPayload> storedRoster(new RosterPayload()); + storedRoster->setVersion("version10"); + storedRoster->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Both)); + rosterStorage_->setRoster(storedRoster); + testling->requestRoster(); + + boost::shared_ptr<RosterPayload> serverRoster(new RosterPayload()); + serverRoster->setVersion("version12"); + serverRoster->addItem(RosterItemPayload(jid2_, "Alice", RosterItemPayload::Both)); + std::vector<std::string> groups; + groups.push_back("foo"); + groups.push_back("bar"); + serverRoster->addItem(RosterItemPayload(jid3_, "Rabbit", RosterItemPayload::Both, groups)); + channel_->onIQReceived(IQ::createResult("foo@bar.com", channel_->sentStanzas[0]->getID(), serverRoster)); + + + CPPUNIT_ASSERT_EQUAL(2, handler_->getEventCount()); + CPPUNIT_ASSERT(!xmppRoster_->getItem(jid1_)); + CPPUNIT_ASSERT(xmppRoster_->getItem(jid2_)); + CPPUNIT_ASSERT(xmppRoster_->getItem(jid3_)); + CPPUNIT_ASSERT_EQUAL(jid3_, handler_->getLastJID()); + CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); + CPPUNIT_ASSERT(rosterStorage_->getRoster()); + CPPUNIT_ASSERT(rosterStorage_->getRoster()->getVersion()); + CPPUNIT_ASSERT_EQUAL(std::string("version12"), *rosterStorage_->getRoster()->getVersion()); + CPPUNIT_ASSERT(!rosterStorage_->getRoster()->getItem(jid1_)); + CPPUNIT_ASSERT(rosterStorage_->getRoster()->getItem(jid2_)); + CPPUNIT_ASSERT(rosterStorage_->getRoster()->getItem(jid3_)); + CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(rosterStorage_->getRoster()->getItem(jid3_)->getGroups().size())); + } + + void testAddFromNonAccount() { + boost::shared_ptr<XMPPRosterController> testling(createController()); + + boost::shared_ptr<RosterPayload> payload(new RosterPayload()); + payload->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Both)); + IQ::ref request = IQ::createRequest(IQ::Set, JID(), "eou", payload); + request->setFrom(jid2_); + channel_->onIQReceived(request); + + CPPUNIT_ASSERT_EQUAL(None, handler_->getLastEvent()); + } + + void testModify() { + XMPPRosterController controller(router_, xmppRoster_, rosterStorage_); + boost::shared_ptr<RosterPayload> payload1(new RosterPayload()); + payload1->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Both)); + channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "id1", payload1)); + + CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); + CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); + handler_->reset(); + + boost::shared_ptr<RosterPayload> payload2(new RosterPayload()); + payload2->addItem(RosterItemPayload(jid1_, "Bob2", RosterItemPayload::Both)); + channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "id2", payload2)); + + CPPUNIT_ASSERT_EQUAL(Update, handler_->getLastEvent()); + CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); + + CPPUNIT_ASSERT_EQUAL(std::string("Bob2"), xmppRoster_->getNameForJID(jid1_)); + } + + void testRemove() { + XMPPRosterController controller(router_, xmppRoster_, rosterStorage_); + boost::shared_ptr<RosterPayload> payload1(new RosterPayload()); + payload1->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Both)); + channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "id1", payload1)); + + CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); + CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); + handler_->reset(); + + boost::shared_ptr<RosterPayload> payload2(new RosterPayload()); + payload2->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Remove)); + channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "id2", payload2)); + CPPUNIT_ASSERT(!xmppRoster_->containsJID(jid1_)); + CPPUNIT_ASSERT_EQUAL(Remove, handler_->getLastEvent()); + CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); + + } + + void testRemove_RosterStorageUpdated() { + boost::shared_ptr<XMPPRosterController> testling(createController()); + testling->setUseVersioning(true); + boost::shared_ptr<RosterPayload> storedRoster(new RosterPayload()); + storedRoster->setVersion("version10"); + storedRoster->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Both)); + storedRoster->addItem(RosterItemPayload(jid2_, "Alice", RosterItemPayload::Both)); + rosterStorage_->setRoster(storedRoster); + testling->requestRoster(); + channel_->onIQReceived(IQ::createResult("foo@bar.com", channel_->sentStanzas[0]->getID(), boost::shared_ptr<RosterPayload>())); + + boost::shared_ptr<RosterPayload> payload2(new RosterPayload()); + payload2->setVersion("version15"); + payload2->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Remove)); + channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "id2", payload2)); + + CPPUNIT_ASSERT(rosterStorage_->getRoster()); + CPPUNIT_ASSERT(rosterStorage_->getRoster()->getVersion()); + CPPUNIT_ASSERT_EQUAL(std::string("version15"), *rosterStorage_->getRoster()->getVersion()); + CPPUNIT_ASSERT(!rosterStorage_->getRoster()->getItem(jid1_)); + CPPUNIT_ASSERT(rosterStorage_->getRoster()->getItem(jid2_)); + } + + void testMany() { + XMPPRosterController controller(router_, xmppRoster_, rosterStorage_); + boost::shared_ptr<RosterPayload> payload1(new RosterPayload()); + payload1->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Both)); + channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "id1", payload1)); + + CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); + CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); + handler_->reset(); + + boost::shared_ptr<RosterPayload> payload2(new RosterPayload()); + payload2->addItem(RosterItemPayload(jid2_, "Alice", RosterItemPayload::Both)); + channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "id2", payload2)); + + CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); + CPPUNIT_ASSERT_EQUAL(jid2_, handler_->getLastJID()); + handler_->reset(); + + boost::shared_ptr<RosterPayload> payload3(new RosterPayload()); + payload3->addItem(RosterItemPayload(jid1_, "Ernie", RosterItemPayload::Both)); + channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "id3", payload3)); + + CPPUNIT_ASSERT_EQUAL(Update, handler_->getLastEvent()); + CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); + handler_->reset(); + + boost::shared_ptr<RosterPayload> payload4(new RosterPayload()); + RosterItemPayload item(jid3_, "Jane", RosterItemPayload::Both); + std::string janesGroup("Jane's Group"); + item.addGroup(janesGroup); + payload4->addItem(item); + channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "id4", payload4)); + + CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); + CPPUNIT_ASSERT_EQUAL(jid3_, handler_->getLastJID()); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), xmppRoster_->getGroupsForJID(jid3_).size()); + CPPUNIT_ASSERT_EQUAL(janesGroup, xmppRoster_->getGroupsForJID(jid3_)[0]); + handler_->reset(); + + boost::shared_ptr<RosterPayload> payload5(new RosterPayload()); + payload5->addItem(RosterItemPayload(jid1_, "Bob", RosterItemPayload::Remove)); + channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "id5", payload5)); + CPPUNIT_ASSERT(!xmppRoster_->containsJID(jid1_)); + CPPUNIT_ASSERT_EQUAL(Remove, handler_->getLastEvent()); + CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); + handler_->reset(); + + boost::shared_ptr<RosterPayload> payload6(new RosterPayload()); + RosterItemPayload item2(jid2_, "Little Alice", RosterItemPayload::Both); + std::string alicesGroup("Alice's Group"); + item2.addGroup(alicesGroup); + payload6->addItem(item2); + channel_->onIQReceived(IQ::createRequest(IQ::Set, JID(), "id6", payload6)); + CPPUNIT_ASSERT_EQUAL(Update, handler_->getLastEvent()); + CPPUNIT_ASSERT_EQUAL(jid2_, handler_->getLastJID()); + CPPUNIT_ASSERT_EQUAL(std::string("Little Alice"), xmppRoster_->getNameForJID(jid2_)); + CPPUNIT_ASSERT_EQUAL(std::string("Jane"), xmppRoster_->getNameForJID(jid3_)); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), xmppRoster_->getGroupsForJID(jid2_).size()); + CPPUNIT_ASSERT_EQUAL(alicesGroup, xmppRoster_->getGroupsForJID(jid2_)[0]); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), xmppRoster_->getGroupsForJID(jid3_).size()); + CPPUNIT_ASSERT_EQUAL(janesGroup, xmppRoster_->getGroupsForJID(jid3_)[0]); + handler_->reset(); + + } + + private: + XMPPRosterController* createController() { + return new XMPPRosterController(router_, xmppRoster_, rosterStorage_); + } + + private: + DummyStanzaChannel* channel_; + IQRouter* router_; + XMPPRosterImpl* xmppRoster_; + XMPPRosterSignalHandler* handler_; + RosterMemoryStorage* rosterStorage_; + JID jid1_; + JID jid2_; + JID jid3_; }; CPPUNIT_TEST_SUITE_REGISTRATION(XMPPRosterControllerTest); diff --git a/Swiften/Roster/UnitTest/XMPPRosterImplTest.cpp b/Swiften/Roster/UnitTest/XMPPRosterImplTest.cpp index d485596..f611fec 100644 --- a/Swiften/Roster/UnitTest/XMPPRosterImplTest.cpp +++ b/Swiften/Roster/UnitTest/XMPPRosterImplTest.cpp @@ -18,95 +18,95 @@ using namespace Swift; class XMPPRosterImplTest : public CppUnit::TestFixture { - CPPUNIT_TEST_SUITE(XMPPRosterImplTest); - CPPUNIT_TEST(testJIDAdded); - CPPUNIT_TEST(testJIDRemoved); - CPPUNIT_TEST(testJIDUpdated); - CPPUNIT_TEST_SUITE_END(); + CPPUNIT_TEST_SUITE(XMPPRosterImplTest); + CPPUNIT_TEST(testJIDAdded); + CPPUNIT_TEST(testJIDRemoved); + CPPUNIT_TEST(testJIDUpdated); + CPPUNIT_TEST_SUITE_END(); - public: - void setUp() { - jid1_ = JID("a@b.c"); - jid2_ = JID("b@c.d"); - jid3_ = JID("c@d.e"); - roster_ = new XMPPRosterImpl(); - handler_ = new XMPPRosterSignalHandler(roster_); - groups1_.push_back("bobs"); - groups1_.push_back("berts"); - groups2_.push_back("ernies"); - } + public: + void setUp() { + jid1_ = JID("a@b.c"); + jid2_ = JID("b@c.d"); + jid3_ = JID("c@d.e"); + roster_ = new XMPPRosterImpl(); + handler_ = new XMPPRosterSignalHandler(roster_); + groups1_.push_back("bobs"); + groups1_.push_back("berts"); + groups2_.push_back("ernies"); + } - void tearDown() { - delete handler_; - delete roster_; - } + void tearDown() { + delete handler_; + delete roster_; + } - void testJIDAdded() { - roster_->addContact(jid1_, "NewName", groups1_, RosterItemPayload::Both); - CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); - CPPUNIT_ASSERT_EQUAL(std::string("NewName"), roster_->getNameForJID(jid1_)); - CPPUNIT_ASSERT(groups1_ == roster_->getGroupsForJID(jid1_)); - handler_->reset(); - roster_->addContact(jid2_, "NameTwo", groups1_, RosterItemPayload::Both); - CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid2_, handler_->getLastJID()); - CPPUNIT_ASSERT_EQUAL(std::string("NameTwo"), roster_->getNameForJID(jid2_)); - CPPUNIT_ASSERT_EQUAL(std::string("NewName"), roster_->getNameForJID(jid1_)); - CPPUNIT_ASSERT(groups1_ == roster_->getGroupsForJID(jid2_)); - CPPUNIT_ASSERT(groups1_ == roster_->getGroupsForJID(jid1_)); - handler_->reset(); - roster_->addContact(jid3_, "NewName", groups2_, RosterItemPayload::Both); - CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid3_, handler_->getLastJID()); - CPPUNIT_ASSERT_EQUAL(std::string("NewName"), roster_->getNameForJID(jid3_)); - CPPUNIT_ASSERT(groups2_ == roster_->getGroupsForJID(jid3_)); - } + void testJIDAdded() { + roster_->addContact(jid1_, "NewName", groups1_, RosterItemPayload::Both); + CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); + CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); + CPPUNIT_ASSERT_EQUAL(std::string("NewName"), roster_->getNameForJID(jid1_)); + CPPUNIT_ASSERT(groups1_ == roster_->getGroupsForJID(jid1_)); + handler_->reset(); + roster_->addContact(jid2_, "NameTwo", groups1_, RosterItemPayload::Both); + CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); + CPPUNIT_ASSERT_EQUAL(jid2_, handler_->getLastJID()); + CPPUNIT_ASSERT_EQUAL(std::string("NameTwo"), roster_->getNameForJID(jid2_)); + CPPUNIT_ASSERT_EQUAL(std::string("NewName"), roster_->getNameForJID(jid1_)); + CPPUNIT_ASSERT(groups1_ == roster_->getGroupsForJID(jid2_)); + CPPUNIT_ASSERT(groups1_ == roster_->getGroupsForJID(jid1_)); + handler_->reset(); + roster_->addContact(jid3_, "NewName", groups2_, RosterItemPayload::Both); + CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); + CPPUNIT_ASSERT_EQUAL(jid3_, handler_->getLastJID()); + CPPUNIT_ASSERT_EQUAL(std::string("NewName"), roster_->getNameForJID(jid3_)); + CPPUNIT_ASSERT(groups2_ == roster_->getGroupsForJID(jid3_)); + } - void testJIDRemoved() { - roster_->addContact(jid1_, "NewName", groups1_, RosterItemPayload::Both); - handler_->reset(); - roster_->removeContact(jid1_); - CPPUNIT_ASSERT_EQUAL(Remove, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); - handler_->reset(); - roster_->addContact(jid1_, "NewName2", groups1_, RosterItemPayload::Both); - CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); - CPPUNIT_ASSERT_EQUAL(std::string("NewName2"), roster_->getNameForJID(jid1_)); - roster_->addContact(jid2_, "NewName3", groups1_, RosterItemPayload::Both); - handler_->reset(); - roster_->removeContact(jid2_); - CPPUNIT_ASSERT_EQUAL(Remove, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid2_, handler_->getLastJID()); - handler_->reset(); - roster_->removeContact(jid1_); - CPPUNIT_ASSERT_EQUAL(Remove, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); - } + void testJIDRemoved() { + roster_->addContact(jid1_, "NewName", groups1_, RosterItemPayload::Both); + handler_->reset(); + roster_->removeContact(jid1_); + CPPUNIT_ASSERT_EQUAL(Remove, handler_->getLastEvent()); + CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); + handler_->reset(); + roster_->addContact(jid1_, "NewName2", groups1_, RosterItemPayload::Both); + CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); + CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); + CPPUNIT_ASSERT_EQUAL(std::string("NewName2"), roster_->getNameForJID(jid1_)); + roster_->addContact(jid2_, "NewName3", groups1_, RosterItemPayload::Both); + handler_->reset(); + roster_->removeContact(jid2_); + CPPUNIT_ASSERT_EQUAL(Remove, handler_->getLastEvent()); + CPPUNIT_ASSERT_EQUAL(jid2_, handler_->getLastJID()); + handler_->reset(); + roster_->removeContact(jid1_); + CPPUNIT_ASSERT_EQUAL(Remove, handler_->getLastEvent()); + CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); + } - void testJIDUpdated() { - roster_->addContact(jid1_, "NewName", groups1_, RosterItemPayload::Both); - CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); - CPPUNIT_ASSERT_EQUAL(std::string("NewName"), roster_->getNameForJID(jid1_)); - CPPUNIT_ASSERT(groups1_ == roster_->getGroupsForJID(jid1_)); - handler_->reset(); - roster_->addContact(jid1_, "NameTwo", groups2_, RosterItemPayload::Both); - CPPUNIT_ASSERT_EQUAL(Update, handler_->getLastEvent()); - CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); - CPPUNIT_ASSERT_EQUAL(std::string("NameTwo"), roster_->getNameForJID(jid1_)); - CPPUNIT_ASSERT(groups2_ == roster_->getGroupsForJID(jid1_)); - } + void testJIDUpdated() { + roster_->addContact(jid1_, "NewName", groups1_, RosterItemPayload::Both); + CPPUNIT_ASSERT_EQUAL(Add, handler_->getLastEvent()); + CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); + CPPUNIT_ASSERT_EQUAL(std::string("NewName"), roster_->getNameForJID(jid1_)); + CPPUNIT_ASSERT(groups1_ == roster_->getGroupsForJID(jid1_)); + handler_->reset(); + roster_->addContact(jid1_, "NameTwo", groups2_, RosterItemPayload::Both); + CPPUNIT_ASSERT_EQUAL(Update, handler_->getLastEvent()); + CPPUNIT_ASSERT_EQUAL(jid1_, handler_->getLastJID()); + CPPUNIT_ASSERT_EQUAL(std::string("NameTwo"), roster_->getNameForJID(jid1_)); + CPPUNIT_ASSERT(groups2_ == roster_->getGroupsForJID(jid1_)); + } - private: - XMPPRosterImpl* roster_; - XMPPRosterSignalHandler* handler_; - JID jid1_; - JID jid2_; - JID jid3_; - std::vector<std::string> groups1_; - std::vector<std::string> groups2_; + private: + XMPPRosterImpl* roster_; + XMPPRosterSignalHandler* handler_; + JID jid1_; + JID jid2_; + JID jid3_; + std::vector<std::string> groups1_; + std::vector<std::string> groups2_; }; CPPUNIT_TEST_SUITE_REGISTRATION(XMPPRosterImplTest); diff --git a/Swiften/Roster/UnitTest/XMPPRosterSignalHandler.cpp b/Swiften/Roster/UnitTest/XMPPRosterSignalHandler.cpp index 102e31b..add34a0 100644 --- a/Swiften/Roster/UnitTest/XMPPRosterSignalHandler.cpp +++ b/Swiften/Roster/UnitTest/XMPPRosterSignalHandler.cpp @@ -13,17 +13,17 @@ using namespace Swift; XMPPRosterSignalHandler::XMPPRosterSignalHandler(Swift::XMPPRoster* roster) : eventCount(0) { - lastEvent_ = None; - roster->onJIDAdded.connect(boost::bind(&XMPPRosterSignalHandler::handleJIDAdded, this, _1)); - roster->onJIDRemoved.connect(boost::bind(&XMPPRosterSignalHandler::handleJIDRemoved, this, _1)); - roster->onJIDUpdated.connect(boost::bind(&XMPPRosterSignalHandler::handleJIDUpdated, this, _1, _2, _3)); + lastEvent_ = None; + roster->onJIDAdded.connect(boost::bind(&XMPPRosterSignalHandler::handleJIDAdded, this, _1)); + roster->onJIDRemoved.connect(boost::bind(&XMPPRosterSignalHandler::handleJIDRemoved, this, _1)); + roster->onJIDUpdated.connect(boost::bind(&XMPPRosterSignalHandler::handleJIDUpdated, this, _1, _2, _3)); } void XMPPRosterSignalHandler::handleJIDUpdated(const Swift::JID& jid, const std::string& oldName, const std::vector<std::string>& oldGroups) { - assert(lastEvent_ == None); - lastJID_ = jid; - lastOldName_ = oldName; - lastOldGroups_ = oldGroups; - lastEvent_ = Update; - eventCount++; + assert(lastEvent_ == None); + lastJID_ = jid; + lastOldName_ = oldName; + lastOldGroups_ = oldGroups; + lastEvent_ = Update; + eventCount++; } diff --git a/Swiften/Roster/UnitTest/XMPPRosterSignalHandler.h b/Swiften/Roster/UnitTest/XMPPRosterSignalHandler.h index d2beecf..9c9afad 100644 --- a/Swiften/Roster/UnitTest/XMPPRosterSignalHandler.h +++ b/Swiften/Roster/UnitTest/XMPPRosterSignalHandler.h @@ -16,50 +16,50 @@ enum XMPPRosterEvents {None, Add, Remove, Update}; class XMPPRosterSignalHandler { public: - XMPPRosterSignalHandler(Swift::XMPPRoster* roster); + XMPPRosterSignalHandler(Swift::XMPPRoster* roster); - XMPPRosterEvents getLastEvent() { - return lastEvent_; - } + XMPPRosterEvents getLastEvent() { + return lastEvent_; + } - Swift::JID getLastJID() { - return lastJID_; - } + Swift::JID getLastJID() { + return lastJID_; + } - std::string getLastOldName() { - return lastOldName_; - } + std::string getLastOldName() { + return lastOldName_; + } - std::vector<std::string> getLastOldGroups() { - return lastOldGroups_; - } + std::vector<std::string> getLastOldGroups() { + return lastOldGroups_; + } - void reset() { - lastEvent_ = None; - } + void reset() { + lastEvent_ = None; + } - int getEventCount() const { - return eventCount; - } + int getEventCount() const { + return eventCount; + } private: - void handleJIDAdded(const Swift::JID& jid) { - lastJID_ = jid; - lastEvent_ = Add; - eventCount++; - } - - void handleJIDRemoved(const Swift::JID& jid) { - lastJID_ = jid; - lastEvent_ = Remove; - eventCount++; - } - - void handleJIDUpdated(const Swift::JID& jid, const std::string& oldName, const std::vector<std::string>& oldGroups); - - XMPPRosterEvents lastEvent_; - Swift::JID lastJID_; - std::string lastOldName_; - std::vector<std::string> lastOldGroups_; - int eventCount; + void handleJIDAdded(const Swift::JID& jid) { + lastJID_ = jid; + lastEvent_ = Add; + eventCount++; + } + + void handleJIDRemoved(const Swift::JID& jid) { + lastJID_ = jid; + lastEvent_ = Remove; + eventCount++; + } + + void handleJIDUpdated(const Swift::JID& jid, const std::string& oldName, const std::vector<std::string>& oldGroups); + + XMPPRosterEvents lastEvent_; + Swift::JID lastJID_; + std::string lastOldName_; + std::vector<std::string> lastOldGroups_; + int eventCount; }; |