diff options
author | Remko Tronçon <git@el-tramo.be> | 2011-10-01 11:47:34 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2011-10-01 11:47:34 (GMT) |
commit | 0f9c50e7bf71d000f8576bd112bdfa25de1397eb (patch) | |
tree | 0a2e19cfdaf595b90f907720cf07fc0db972d8bc | |
parent | 6e345232b3a88e51f45149b039e1a27230a0bc2a (diff) | |
parent | 6a4a15088e7c97b3f6c1de179eee1defa2720bdb (diff) | |
download | swift-contrib-0f9c50e7bf71d000f8576bd112bdfa25de1397eb.zip swift-contrib-0f9c50e7bf71d000f8576bd112bdfa25de1397eb.tar.bz2 |
Merge branch 'swift-1.x'
* swift-1.x:
Fixed roster sender check.
Conflicts:
Swiften/Roster/UnitTest/XMPPRosterControllerTest.cpp
-rw-r--r-- | Swiften/Roster/RosterPushResponder.h | 9 | ||||
-rw-r--r-- | Swiften/Roster/UnitTest/XMPPRosterControllerTest.cpp | 14 |
2 files changed, 21 insertions, 2 deletions
diff --git a/Swiften/Roster/RosterPushResponder.h b/Swiften/Roster/RosterPushResponder.h index 7200b2d..74d300c 100644 --- a/Swiften/Roster/RosterPushResponder.h +++ b/Swiften/Roster/RosterPushResponder.h @@ -15,15 +15,20 @@ namespace Swift { class RosterPushResponder : public SetResponder<RosterPayload> { public: RosterPushResponder(IQRouter* router) : SetResponder<RosterPayload>(router) {} public: boost::signal<void (boost::shared_ptr<RosterPayload>)> onRosterReceived; private: virtual bool handleSetRequest(const JID& from, const JID&, const std::string& id, boost::shared_ptr<RosterPayload> payload) { - onRosterReceived(payload); - sendResponse(from, id, boost::shared_ptr<RosterPayload>()); + if (getIQRouter()->isAccountJID(from)) { + onRosterReceived(payload); + sendResponse(from, id, boost::shared_ptr<RosterPayload>()); + } + else { + sendError(from, id, ErrorPayload::NotAuthorized, ErrorPayload::Cancel); + } return true; } }; } diff --git a/Swiften/Roster/UnitTest/XMPPRosterControllerTest.cpp b/Swiften/Roster/UnitTest/XMPPRosterControllerTest.cpp index cb9f46f..f1bdf86 100644 --- a/Swiften/Roster/UnitTest/XMPPRosterControllerTest.cpp +++ b/Swiften/Roster/UnitTest/XMPPRosterControllerTest.cpp @@ -25,28 +25,30 @@ class XMPPRosterControllerTest : public CppUnit::TestFixture { 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() { @@ -194,18 +196,30 @@ class XMPPRosterControllerTest : public CppUnit::TestFixture { 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(); |