From 024663b42bf910dd69a0e662738dba7a1a0a2d5a Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Tue, 14 Aug 2012 15:27:20 +0200 Subject: [PATCH] More tests --- src/tests/userregistration.cpp | 98 ++++++++++++++++++++++++++++++++++ src/userregistration.cpp | 4 +- 2 files changed, 100 insertions(+), 2 deletions(-) diff --git a/src/tests/userregistration.cpp b/src/tests/userregistration.cpp index 6f8596e3..50f23626 100644 --- a/src/tests/userregistration.cpp +++ b/src/tests/userregistration.cpp @@ -27,6 +27,9 @@ class UserRegistrationTest : public CPPUNIT_NS :: TestFixture, public BasicTest CPPUNIT_TEST(getFormRegistered); CPPUNIT_TEST(registerUser); CPPUNIT_TEST(unregisterUser); + CPPUNIT_TEST(unregisterEmptyPayload); + CPPUNIT_TEST(changePassword); + CPPUNIT_TEST(registerUserEmpty); CPPUNIT_TEST_SUITE_END(); public: @@ -113,6 +116,101 @@ class UserRegistrationTest : public CPPUNIT_NS :: TestFixture, public BasicTest iq->setFrom("user@localhost"); injectIQ(iq); loop->processEvents(); + + CPPUNIT_ASSERT_EQUAL(2, (int) received.size()); + + CPPUNIT_ASSERT(getStanza(received[0])->getPayload()); + + CPPUNIT_ASSERT(dynamic_cast(getStanza(received[1]))); + CPPUNIT_ASSERT_EQUAL(Swift::IQ::Result, dynamic_cast(getStanza(received[1]))->getType()); + + iq = Swift::IQ::createResult(Swift::JID("localhost"), getStanza(received[0])->getTo(), getStanza(received[0])->getID(), boost::shared_ptr(new Swift::RosterPayload())); + received.clear(); + injectIQ(iq); + loop->processEvents(); + + CPPUNIT_ASSERT_EQUAL(1, (int) received.size()); + CPPUNIT_ASSERT(dynamic_cast(getStanza(received[0]))); + CPPUNIT_ASSERT_EQUAL(Swift::IQ::Set, dynamic_cast(getStanza(received[0]))->getType()); + CPPUNIT_ASSERT(getStanza(received[0])->getPayload()); + + UserInfo user; + CPPUNIT_ASSERT_EQUAL(false, storage->getUser("user@localhost", user)); + } + + void changePassword() { + registerUser(); + received.clear(); + + Swift::InBandRegistrationPayload *reg = new Swift::InBandRegistrationPayload(); + reg->setUsername("legacyname"); + reg->setPassword("another"); + boost::shared_ptr iq = Swift::IQ::createRequest(Swift::IQ::Set, Swift::JID("localhost"), "id", boost::shared_ptr(reg)); + 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()); + + UserInfo user; + CPPUNIT_ASSERT_EQUAL(true, storage->getUser("user@localhost", user)); + + CPPUNIT_ASSERT_EQUAL(std::string("legacyname"), user.uin); + CPPUNIT_ASSERT_EQUAL(std::string("another"), user.password); + } + + void registerUserEmpty() { + Swift::InBandRegistrationPayload *reg = new Swift::InBandRegistrationPayload(); + reg->setUsername(""); + reg->setPassword("password"); + boost::shared_ptr iq = Swift::IQ::createRequest(Swift::IQ::Set, Swift::JID("localhost"), "id", boost::shared_ptr(reg)); + 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::Error, dynamic_cast(getStanza(received[0]))->getType()); + + UserInfo user; + CPPUNIT_ASSERT_EQUAL(false, storage->getUser("user@localhost", user)); + } + + void unregisterEmptyPayload() { + registerUser(); + received.clear(); + + Swift::InBandRegistrationPayload *reg = new Swift::InBandRegistrationPayload(); + reg->setRemove(true); + boost::shared_ptr iq = Swift::IQ::createRequest(Swift::IQ::Set, Swift::JID("localhost"), "id", boost::shared_ptr(reg)); + iq->setFrom("user@localhost"); + injectIQ(iq); + loop->processEvents(); + + CPPUNIT_ASSERT_EQUAL(2, (int) received.size()); + + CPPUNIT_ASSERT(getStanza(received[0])->getPayload()); + + CPPUNIT_ASSERT(dynamic_cast(getStanza(received[1]))); + CPPUNIT_ASSERT_EQUAL(Swift::IQ::Result, dynamic_cast(getStanza(received[1]))->getType()); + + iq = Swift::IQ::createResult(Swift::JID("localhost"), getStanza(received[0])->getTo(), getStanza(received[0])->getID()); + received.clear(); + injectIQ(iq); + loop->processEvents(); + + + CPPUNIT_ASSERT_EQUAL(2, (int) received.size()); + + CPPUNIT_ASSERT(dynamic_cast(getStanza(received[0]))); + CPPUNIT_ASSERT_EQUAL(Swift::Presence::Unsubscribe, dynamic_cast(getStanza(received[0]))->getType()); + + CPPUNIT_ASSERT(dynamic_cast(getStanza(received[1]))); + CPPUNIT_ASSERT_EQUAL(Swift::Presence::Unsubscribed, dynamic_cast(getStanza(received[1]))->getType()); } }; diff --git a/src/userregistration.cpp b/src/userregistration.cpp index 8691791a..6dea9047 100644 --- a/src/userregistration.cpp +++ b/src/userregistration.cpp @@ -90,7 +90,7 @@ void UserRegistration::handleUnregisterRemoteRosterResponse(boost::shared_ptr roster; m_storageBackend->getBuddies(userInfo.id, roster); for(std::list::iterator u = roster.begin(); u != roster.end() ; u++){ @@ -133,7 +133,7 @@ void UserRegistration::handleUnregisterRemoteRosterResponse(boost::shared_ptrremoveUser(user); } - if (remoteRosterNotSupported) { + if (remoteRosterNotSupported || !payload) { Swift::Presence::ref response; response = Swift::Presence::create(); response->setTo(Swift::JID(barejid));