summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Maudsley <richard.maudsley@isode.com>2014-06-23 10:52:31 (GMT)
committerRichard Maudsley <richard.maudsley@isode.com>2014-06-24 14:32:55 (GMT)
commitc779e07f6d1d23cc157ab3823a00edd95f70ab3b (patch)
tree5de546a38677ce19be1b34932144460f11197f96 /Swiften/Avatars/UnitTest/VCardAvatarManagerTest.cpp
parentbd7f30aec53fc776be678577dbe4f9afec5898a6 (diff)
downloadswift-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.cpp27
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());