[telepathy-gabble/master] tests/twisted/vcard/test-avatar-multiple-resources.py: New regression test for Bug fd.o #23684
Alban Crequy
alban.crequy at collabora.co.uk
Thu Sep 3 10:59:24 PDT 2009
---
tests/twisted/Makefile.am | 1 +
.../vcard/test-avatar-multiple-resources.py | 68 ++++++++++++++++++++
2 files changed, 69 insertions(+), 0 deletions(-)
create mode 100644 tests/twisted/vcard/test-avatar-multiple-resources.py
diff --git a/tests/twisted/Makefile.am b/tests/twisted/Makefile.am
index 634ea14..e7eb2b5 100644
--- a/tests/twisted/Makefile.am
+++ b/tests/twisted/Makefile.am
@@ -81,6 +81,7 @@ TWISTED_TESTS = \
vcard/test-avatar.py \
vcard/test-avatar-retrieved.py \
vcard/test-avatar-tokens.py \
+ vcard/test-avatar-multiple-resources.py \
vcard/test-save-alias-to-vcard.py \
vcard/test-set-alias.py \
vcard/test-vcard-cache.py \
diff --git a/tests/twisted/vcard/test-avatar-multiple-resources.py b/tests/twisted/vcard/test-avatar-multiple-resources.py
new file mode 100644
index 0000000..62b6044
--- /dev/null
+++ b/tests/twisted/vcard/test-avatar-multiple-resources.py
@@ -0,0 +1,68 @@
+
+"""
+Test avatar support with multiple resources as defined in XEP-0153 section
+4.3.
+"""
+
+import base64
+
+from twisted.words.xish import domish
+from servicetest import call_async, EventPattern, sync_dbus
+from gabbletest import exec_test, acknowledge_iq, make_result_iq, sync_stream
+import constants as cs
+
+def make_presence(jid, sha1sum):
+ p = domish.Element((None, 'presence'))
+ p['from'] = jid
+ x = p.addElement(('vcard-temp:x:update', 'x'))
+ x.addElement('photo', content=sha1sum)
+ return p
+
+def test(q, bus, conn, stream):
+ conn.Connect()
+ _, event = q.expect_many(
+ EventPattern('dbus-signal', signal='StatusChanged',
+ args=[cs.CONN_STATUS_CONNECTED, cs.CSR_REQUESTED]),
+ EventPattern('stream-iq', to=None, query_ns='vcard-temp',
+ query_name='vCard'))
+
+ acknowledge_iq(stream, event.stanza)
+ sync_stream(q, stream)
+ sync_dbus(bus, q, conn)
+
+ # A presence from a contact
+ stream.send(make_presence('contact1 at localhost/client',
+ 'SHA1SUM-FOR-CONTACT1'))
+ event = q.expect('dbus-signal', signal='AvatarUpdated')
+ assert event.args[0] == 2, event.args
+ assert event.args[1] == "SHA1SUM-FOR-CONTACT1", event.args
+
+ AvatarRetrieved_event = EventPattern('dbus-signal', signal='AvatarRetrieved')
+ AvatarUpdated_event = EventPattern('dbus-signal', signal='AvatarUpdated')
+ StreamPresence_event = EventPattern('stream-presence')
+ StreamIqVcard_event = EventPattern('stream-iq', query_ns='vcard-temp')
+
+ # A presence from myself on another resource
+ stream.send(make_presence('test at localhost/resource1',
+ 'SHA1SUM-FOR-MYSELF-RES1'))
+ q.forbid_events([AvatarRetrieved_event])
+ event = q.expect('stream-presence')
+ event = q.expect('dbus-signal', signal='AvatarUpdated')
+ assert event.args[0] == 1, event.args
+ assert event.args[1] == "", event.args
+ event = q.expect('stream-iq', to=None, query_ns='vcard-temp',
+ query_name='vCard')
+ sync_dbus(bus, q, conn)
+ q.unforbid_events([AvatarRetrieved_event])
+
+ # If the server wrongly send a presence stanza with our resource,
+ # AvatarUpdated must not be emitted
+ q.forbid_events([StreamPresence_event, StreamIqVcard_event, AvatarRetrieved_event, AvatarUpdated_event])
+ stream.send(make_presence('test at localhost/Resource',
+ 'SHA1SUM-FOR-MYSELF'))
+ sync_dbus(bus, q, conn)
+ sync_stream(q, stream)
+ q.unforbid_events([StreamPresence_event, StreamIqVcard_event, AvatarRetrieved_event, AvatarUpdated_event])
+
+if __name__ == '__main__':
+ exec_test(test)
--
1.5.6.5
More information about the telepathy-commits
mailing list