diff options
author | Remko Tronçon <git@el-tramo.be> | 2010-05-04 18:20:52 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2010-05-04 18:20:52 (GMT) |
commit | 8c53236875d2ca77f1b463449918458f6b424ab1 (patch) | |
tree | 29cbbf0393ee05914f8121abd93d7668c0117253 /Swiften | |
parent | 43cd98f8e44e70cf1a2133a0202e933f41018cbf (diff) | |
download | swift-contrib-8c53236875d2ca77f1b463449918458f6b424ab1.zip swift-contrib-8c53236875d2ca77f1b463449918458f6b424ab1.tar.bz2 |
Don't take an avatar from a presence type='error'.
Resolves: #336
Diffstat (limited to 'Swiften')
-rw-r--r-- | Swiften/Avatars/AvatarManager.cpp | 3 | ||||
-rw-r--r-- | Swiften/Avatars/UnitTest/AvatarManagerTest.cpp | 27 | ||||
-rw-r--r-- | Swiften/SConscript | 1 |
3 files changed, 24 insertions, 7 deletions
diff --git a/Swiften/Avatars/AvatarManager.cpp b/Swiften/Avatars/AvatarManager.cpp index a5b6b36..3861520 100644 --- a/Swiften/Avatars/AvatarManager.cpp +++ b/Swiften/Avatars/AvatarManager.cpp @@ -42,6 +42,9 @@ void AvatarManager::handlePresenceReceived(boost::shared_ptr<Presence> presence) if (!update) { return; } + if (presence->getPayload<ErrorPayload>()) { + return; + } JID from = getAvatarJID(presence->getFrom()); String& hash = avatarHashes_[from]; if (hash != update->getPhotoHash()) { diff --git a/Swiften/Avatars/UnitTest/AvatarManagerTest.cpp b/Swiften/Avatars/UnitTest/AvatarManagerTest.cpp index 046f33e..511bd12 100644 --- a/Swiften/Avatars/UnitTest/AvatarManagerTest.cpp +++ b/Swiften/Avatars/UnitTest/AvatarManagerTest.cpp @@ -19,18 +19,19 @@ using namespace Swift; class AvatarManagerTest : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(AvatarManagerTest); CPPUNIT_TEST(testUpdate_UpdateNewHash); + /*& CPPUNIT_TEST(testUpdate_UpdateNewHashAlreadyHaveAvatar); CPPUNIT_TEST(testUpdate_UpdateNewHashFromMUC); - CPPUNIT_TEST(testUpdate_UpdateSameHash); + CPPUNIT_TEST(testUpdate_UpdateSameHash);*/ + CPPUNIT_TEST(testUpdate_UpdateWithError); + /* CPPUNIT_TEST(testUpdate_UpdateNewHashSameThanOtherUser); CPPUNIT_TEST(testReceiveVCard); CPPUNIT_TEST(testGetAvatarPath); - CPPUNIT_TEST(testGetAvatarPathFromMUC); + CPPUNIT_TEST(testGetAvatarPathFromMUC);*/ CPPUNIT_TEST_SUITE_END(); public: - AvatarManagerTest() {} - void setUp() { stanzaChannel_ = new DummyStanzaChannel(); iqRouter_ = new IQRouter(stanzaChannel_); @@ -49,11 +50,12 @@ class AvatarManagerTest : public CppUnit::TestFixture { std::auto_ptr<AvatarManager> testling = createManager(); stanzaChannel_->onPresenceReceived(createPresenceWithPhotoHash()); - CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(stanzaChannel_->sentStanzas_.size())); - IQ* - CPPUNIT_ASSERT(stanzaChannel->isRequestAtIndex<VCardUpdate>(0, JID("foo@bar.com"), IQ::Get)); + CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(stanzaChannel_->sentStanzas.size())); + // TODO + //CPPUNIT_ASSERT(stanzaChannel_->isRequestAtIndex<VCardUpdate>(0, JID("foo@bar.com"), IQ::Get)); } +/* void testUpdate_UpdateNewHashAlreadyHaveAvatar() { std::auto_ptr<AvatarManager> testling = createManager(); } @@ -81,6 +83,17 @@ class AvatarManagerTest : public CppUnit::TestFixture { void testGetAvatarPathFromMUC() { std::auto_ptr<AvatarManager> testling = createManager(); } + */ + + void testUpdate_UpdateWithError() { + std::auto_ptr<AvatarManager> testling = createManager(); + boost::shared_ptr<Presence> update = createPresenceWithPhotoHash(); + update->addPayload(boost::shared_ptr<ErrorPayload>(new ErrorPayload())); + stanzaChannel_->onPresenceReceived(update); + + CPPUNIT_ASSERT_EQUAL(0, static_cast<int>(stanzaChannel_->sentStanzas.size())); + } + private: std::auto_ptr<AvatarManager> createManager() { diff --git a/Swiften/SConscript b/Swiften/SConscript index a3426db..dfda3ba 100644 --- a/Swiften/SConscript +++ b/Swiften/SConscript @@ -132,6 +132,7 @@ if env["SCONS_STAGE"] == "build" : env.Append(UNITTEST_SOURCES = [ File("Application/UnitTest/ApplicationTest.cpp"), File("Avatars/UnitTest/MockAvatarManager.cpp"), + File("Avatars/UnitTest/AvatarManagerTest.cpp"), File("Base/UnitTest/IDGeneratorTest.cpp"), File("Base/UnitTest/StringTest.cpp"), File("Base/UnitTest/ByteArrayTest.cpp"), |