Skip to content

Commit 39d04c9

Browse files
committed
Add test-avatar-pep fetching test (twisted)
1 parent b0fc4f9 commit 39d04c9

File tree

2 files changed

+66
-0
lines changed

2 files changed

+66
-0
lines changed

tests/twisted/vcard/meson.build

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ twisted_tests += files(
1919
'test-avatar.py',
2020
'test-avatar-retrieved.py',
2121
'test-avatar-tokens.py',
22+
'test-avatar-pep.py',
2223
'test-save-alias-to-vcard.py',
2324
'test-set-alias.py',
2425
'test-vcard-cache.py',
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
2+
"""
3+
Test PEP avatar support.
4+
"""
5+
6+
import base64
7+
import hashlib
8+
9+
from servicetest import call_async, EventPattern, assertEquals, assertLength
10+
from gabbletest import exec_test, make_result_iq, acknowledge_iq, elem
11+
from caps_helper import receive_presence_and_ask_caps
12+
13+
import constants as cs
14+
import ns
15+
16+
NS_XMPP_AVATAR_META='urn:xmpp:avatar:metadata'
17+
NS_XMPP_AVATAR_DATA='urn:xmpp:avatar:data'
18+
png_pxl_b64=b'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=='
19+
20+
def test(q, bus, conn, stream):
21+
event, feats, forms, caps = receive_presence_and_ask_caps(q, stream, False)
22+
assert NS_XMPP_AVATAR_META in feats and NS_XMPP_AVATAR_META+'+notify' in feats, feats
23+
24+
png_pxl_raw = base64.b64decode(png_pxl_b64)
25+
png_pxl_sha = hashlib.sha1(png_pxl_raw).hexdigest()
26+
27+
msg = elem('message', from_='[email protected]')(
28+
elem((ns.PUBSUB_EVENT), 'event')(
29+
elem('items', node=NS_XMPP_AVATAR_META)(
30+
elem('item', id=png_pxl_sha)(
31+
elem(NS_XMPP_AVATAR_META, 'metadata')(
32+
elem('info', bytes='70', id=png_pxl_sha, type='image/png')
33+
)
34+
)
35+
)
36+
)
37+
)
38+
stream.send(msg)
39+
40+
handle = conn.get_contact_handle_sync('[email protected]')
41+
42+
event = q.expect('dbus-signal', signal='AvatarUpdated', args=[handle, png_pxl_sha])
43+
conn.Avatars.RequestAvatars([handle])
44+
45+
event = q.expect('stream-iq', to='[email protected]', iq_type='get',
46+
query_ns=ns.PUBSUB, query_name='pubsub')
47+
48+
items = event.query.firstChildElement()
49+
assertEquals('items', items.name)
50+
assertEquals(NS_XMPP_AVATAR_DATA, items['node'])
51+
52+
result = make_result_iq(stream, event.stanza)
53+
pubsub = result.firstChildElement()
54+
items = pubsub.addElement('items')
55+
items['node'] = NS_XMPP_AVATAR_DATA
56+
item = items.addElement('item')
57+
item['id'] = png_pxl_sha
58+
item.addElement('data', NS_XMPP_AVATAR_DATA, content=png_pxl_b64.decode())
59+
stream.send(result)
60+
61+
q.expect('dbus-signal', signal='AvatarRetrieved',
62+
args=[handle, png_pxl_sha, png_pxl_raw, 'image/png'])
63+
64+
if __name__ == '__main__':
65+
exec_test(test)

0 commit comments

Comments
 (0)