diff options
| author | Richard Maudsley <richard.maudsley@isode.com> | 2014-06-23 10:52:31 (GMT) |
|---|---|---|
| committer | Richard Maudsley <richard.maudsley@isode.com> | 2014-06-24 14:32:55 (GMT) |
| commit | c779e07f6d1d23cc157ab3823a00edd95f70ab3b (patch) | |
| tree | 5de546a38677ce19be1b34932144460f11197f96 /Swiften/Avatars/UnitTest/VCardAvatarManagerTest.cpp | |
| parent | bd7f30aec53fc776be678577dbe4f9afec5898a6 (diff) | |
| download | swift-contrib-c779e07f6d1d23cc157ab3823a00edd95f70ab3b.zip swift-contrib-c779e07f6d1d23cc157ab3823a00edd95f70ab3b.tar.bz2 | |
Fix old avatar being displayed in QtRosterHeader when cleared.
Test-Information:
Added unit tests for AvatarManagerImpl and CombinedAvatarProvider. Updated test cases to distinguish between error case and empty avatar. Tested changing between blank and non-blank avatars while watching MUC and 1-to-1 chats.
Change-Id: I0bea89c7a22ae9c44a0b126e672a7af94b6f5049
Diffstat (limited to 'Swiften/Avatars/UnitTest/VCardAvatarManagerTest.cpp')
| -rw-r--r-- | Swiften/Avatars/UnitTest/VCardAvatarManagerTest.cpp | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/Swiften/Avatars/UnitTest/VCardAvatarManagerTest.cpp b/Swiften/Avatars/UnitTest/VCardAvatarManagerTest.cpp index 97edc73..778b001 100644 --- a/Swiften/Avatars/UnitTest/VCardAvatarManagerTest.cpp +++ b/Swiften/Avatars/UnitTest/VCardAvatarManagerTest.cpp @@ -34,111 +34,116 @@ class VCardAvatarManagerTest : public CppUnit::TestFixture { CPPUNIT_TEST(testVCardUpdateTriggersUpdate); CPPUNIT_TEST(testGetAvatarHashKnownAvatarUnknownVCard); CPPUNIT_TEST_SUITE_END(); public: void setUp() { crypto = boost::shared_ptr<CryptoProvider>(PlatformCryptoProvider::create()); ownJID = JID("foo@fum.com/bum"); stanzaChannel = new DummyStanzaChannel(); stanzaChannel->setAvailable(true); iqRouter = new IQRouter(stanzaChannel); mucRegistry = new DummyMUCRegistry(); avatarStorage = new AvatarMemoryStorage(); vcardStorage = new VCardMemoryStorage(crypto.get()); vcardManager = new VCardManager(ownJID, iqRouter, vcardStorage); avatar1 = createByteArray("abcdefg"); avatar1Hash = Hexify::hexify(crypto->getSHA1Hash(avatar1)); user1 = JID("user1@bar.com/bla"); user2 = JID("user2@foo.com/baz"); } void tearDown() { delete vcardManager; delete vcardStorage; delete avatarStorage; delete mucRegistry; delete iqRouter; delete stanzaChannel; } void testGetAvatarHashKnownAvatar() { boost::shared_ptr<VCardAvatarManager> testling = createManager(); storeVCardWithPhoto(user1.toBare(), avatar1); avatarStorage->addAvatar(avatar1Hash, avatar1); - std::string result = testling->getAvatarHash(user1); + boost::optional<std::string> result = testling->getAvatarHash(user1); - CPPUNIT_ASSERT_EQUAL(avatar1Hash, result); + CPPUNIT_ASSERT(result); + CPPUNIT_ASSERT_EQUAL(avatar1Hash, *result); } void testGetAvatarHashEmptyAvatar() { boost::shared_ptr<VCardAvatarManager> testling = createManager(); storeEmptyVCard(user1.toBare()); - std::string result = testling->getAvatarHash(user1); + boost::optional<std::string> result = testling->getAvatarHash(user1); - CPPUNIT_ASSERT_EQUAL(std::string(), result); + CPPUNIT_ASSERT(result); + CPPUNIT_ASSERT_EQUAL(std::string(), *result); } void testGetAvatarHashUnknownAvatarKnownVCardStoresAvatar() { boost::shared_ptr<VCardAvatarManager> testling = createManager(); storeVCardWithPhoto(user1.toBare(), avatar1); - std::string result = testling->getAvatarHash(user1); + boost::optional<std::string> result = testling->getAvatarHash(user1); - CPPUNIT_ASSERT_EQUAL(avatar1Hash, result); + CPPUNIT_ASSERT(result); + CPPUNIT_ASSERT_EQUAL(avatar1Hash, *result); CPPUNIT_ASSERT(avatarStorage->hasAvatar(avatar1Hash)); CPPUNIT_ASSERT_EQUAL(avatar1, avatarStorage->getAvatar(avatar1Hash)); } void testGetAvatarHashUnknownAvatarUnknownVCard() { boost::shared_ptr<VCardAvatarManager> testling = createManager(); - std::string result = testling->getAvatarHash(user1); + boost::optional<std::string> result = testling->getAvatarHash(user1); - CPPUNIT_ASSERT_EQUAL(std::string(), result); + CPPUNIT_ASSERT(result); + CPPUNIT_ASSERT_EQUAL(std::string(), *result); } void testGetAvatarHashKnownAvatarUnknownVCard() { boost::shared_ptr<VCardAvatarManager> testling = createManager(); avatarStorage->setAvatarForJID(user1, avatar1Hash); - std::string result = testling->getAvatarHash(user1); - - CPPUNIT_ASSERT_EQUAL(std::string(), result); + boost::optional<std::string> result = testling->getAvatarHash(user1); + + CPPUNIT_ASSERT(result); + CPPUNIT_ASSERT_EQUAL(std::string(), *result); } void testVCardUpdateTriggersUpdate() { boost::shared_ptr<VCardAvatarManager> testling = createManager(); vcardManager->requestVCard(user1); sendVCardResult(); CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(changes.size())); } private: boost::shared_ptr<VCardAvatarManager> createManager() { boost::shared_ptr<VCardAvatarManager> result(new VCardAvatarManager(vcardManager, avatarStorage, crypto.get(), mucRegistry)); result->onAvatarChanged.connect(boost::bind(&VCardAvatarManagerTest::handleAvatarChanged, this, _1)); return result; } void storeVCardWithPhoto(const JID& jid, const ByteArray& avatar) { VCard::ref vcard(new VCard()); vcard->setPhoto(avatar); vcardStorage->setVCard(jid, vcard); } void storeEmptyVCard(const JID& jid) { VCard::ref vcard(new VCard()); vcardStorage->setVCard(jid, vcard); } void handleAvatarChanged(const JID& jid) { changes.push_back(jid); } void sendVCardResult() { VCard::ref vcard(new VCard()); |
Swift