diff options
Diffstat (limited to 'itests/test_vcard_avatar.py')
-rw-r--r-- | itests/test_vcard_avatar.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/itests/test_vcard_avatar.py b/itests/test_vcard_avatar.py new file mode 100644 index 00000000..284c08e1 --- /dev/null +++ b/itests/test_vcard_avatar.py @@ -0,0 +1,49 @@ +import asyncio +import unittest +from slixmpp import JID +from slixmpp.test.integration import SlixIntegration +from hashlib import sha1 + + +class TestVcardAvatar(SlixIntegration): + async def asyncSetUp(self): + await super().asyncSetUp() + self.add_client( + self.envjid('CI_ACCOUNT1'), + self.envstr('CI_ACCOUNT1_PASSWORD'), + ) + self.register_plugins(['xep_0153']) + self.data = b'coucou coucou' + self.hashed_data = sha1(self.data).hexdigest() + await self.connect_clients() + + async def _clear_avatar(self): + """Utility for purging remote state""" + await self.clients[0]['xep_0153'].set_avatar(avatar=b'') + + async def test_set_avatar(self): + """Check we can set and get a PEP avatar and metadata""" + await self._clear_avatar() + + event = self.clients[0].wait_until('vcard_avatar_update') + update = self.clients[0]['xep_0153'].set_avatar( + avatar=self.data + ) + result = await asyncio.gather( + event, + update, + ) + presence = result[0] + hash = presence['vcard_temp_update']['photo'] + self.assertEqual(hash, self.hashed_data) + + iq = await self.clients[0]['xep_0054'].get_vcard( + JID(self.clients[0].boundjid.bare) + ) + photo = iq['vcard_temp']['PHOTO']['BINVAL'] + self.assertEqual(photo, self.data) + + await self._clear_avatar() + + +suite = unittest.TestLoader().loadTestsFromTestCase(TestVcardAvatar) |