summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/Avatars/UnitTest/VCardUpdateAvatarManagerTest.cpp')
-rw-r--r--Swiften/Avatars/UnitTest/VCardUpdateAvatarManagerTest.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/Swiften/Avatars/UnitTest/VCardUpdateAvatarManagerTest.cpp b/Swiften/Avatars/UnitTest/VCardUpdateAvatarManagerTest.cpp
index ce100ee..5a98a0e 100644
--- a/Swiften/Avatars/UnitTest/VCardUpdateAvatarManagerTest.cpp
+++ b/Swiften/Avatars/UnitTest/VCardUpdateAvatarManagerTest.cpp
@@ -25,10 +25,11 @@ class VCardUpdateAvatarManagerTest : public CppUnit::TestFixture {
25 CPPUNIT_TEST_SUITE(VCardUpdateAvatarManagerTest); 25 CPPUNIT_TEST_SUITE(VCardUpdateAvatarManagerTest);
26 CPPUNIT_TEST(testUpdate_NewHashNewVCardRequestsVCard); 26 CPPUNIT_TEST(testUpdate_NewHashNewVCardRequestsVCard);
27 CPPUNIT_TEST(testUpdate_NewHashStoresAvatarAndEmitsNotificationOnVCardReceive); 27 CPPUNIT_TEST(testUpdate_NewHashStoresAvatarAndEmitsNotificationOnVCardReceive);
28 CPPUNIT_TEST(testUpdate_KnownHash); 28 CPPUNIT_TEST(testUpdate_KnownHash);
29 CPPUNIT_TEST(testUpdate_KnownHashFromDifferentUserDoesNotRequestVCardButTriggersNotification); 29 CPPUNIT_TEST(testUpdate_KnownHashFromDifferentUserDoesNotRequestVCardButTriggersNotification);
30 CPPUNIT_TEST(testVCardWithEmptyPhoto);
30 CPPUNIT_TEST(testStanzaChannelReset); 31 CPPUNIT_TEST(testStanzaChannelReset);
31 CPPUNIT_TEST_SUITE_END(); 32 CPPUNIT_TEST_SUITE_END();
32 33
33 public: 34 public:
34 void setUp() { 35 void setUp() {
@@ -101,10 +102,19 @@ class VCardUpdateAvatarManagerTest : public CppUnit::TestFixture {
101 CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(changes.size())); 102 CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(changes.size()));
102 CPPUNIT_ASSERT_EQUAL(user2.toBare(), changes[0].first); 103 CPPUNIT_ASSERT_EQUAL(user2.toBare(), changes[0].first);
103 CPPUNIT_ASSERT_EQUAL(avatar1Hash, changes[0].second); 104 CPPUNIT_ASSERT_EQUAL(avatar1Hash, changes[0].second);
104 } 105 }
105 106
107 void testVCardWithEmptyPhoto() {
108 std::auto_ptr<VCardUpdateAvatarManager> testling = createManager();
109 vcardManager->requestVCard(JID("foo@bar.com"));
110 stanzaChannel->onIQReceived(createVCardResult(ByteArray()));
111
112 CPPUNIT_ASSERT(!avatarStorage->hasAvatar(Hexify::hexify(SHA1::getHash(ByteArray()))));
113 CPPUNIT_ASSERT_EQUAL(boost::filesystem::path(), testling->getAvatarPath(JID("foo@bar.com")));
114 }
115
106 void testStanzaChannelReset() { 116 void testStanzaChannelReset() {
107 std::auto_ptr<VCardUpdateAvatarManager> testling = createManager(); 117 std::auto_ptr<VCardUpdateAvatarManager> testling = createManager();
108 stanzaChannel->onPresenceReceived(createPresenceWithPhotoHash(user1, avatar1Hash)); 118 stanzaChannel->onPresenceReceived(createPresenceWithPhotoHash(user1, avatar1Hash));
109 stanzaChannel->onIQReceived(createVCardResult(avatar1)); 119 stanzaChannel->onIQReceived(createVCardResult(avatar1));
110 changes.clear(); 120 changes.clear();
@@ -133,11 +143,13 @@ class VCardUpdateAvatarManagerTest : public CppUnit::TestFixture {
133 return presence; 143 return presence;
134 } 144 }
135 145
136 IQ::ref createVCardResult(const ByteArray& avatar) { 146 IQ::ref createVCardResult(const ByteArray& avatar) {
137 VCard::ref vcard(new VCard()); 147 VCard::ref vcard(new VCard());
138 vcard->setPhoto(avatar); 148 if (!avatar.isEmpty()) {
149 vcard->setPhoto(avatar);
150 }
139 return IQ::createResult(JID("baz@fum.com"), stanzaChannel->sentStanzas[0]->getID(), vcard); 151 return IQ::createResult(JID("baz@fum.com"), stanzaChannel->sentStanzas[0]->getID(), vcard);
140 } 152 }
141 153
142 void handleAvatarChanged(const JID& jid, const String& hash) { 154 void handleAvatarChanged(const JID& jid, const String& hash) {
143 changes.push_back(std::pair<JID,String>(jid, hash)); 155 changes.push_back(std::pair<JID,String>(jid, hash));