[Telepathy-commits] [telepathy-gabble/master] Test both SimplePresence and Presence

Sjoerd Simons sjoerd.simons at collabora.co.uk
Tue Aug 19 10:54:14 PDT 2008


20080730122119-b58c9-eeee8a4c63db2a063a5cc206828b4dc0c2af45c5.gz
---
 tests/twisted/test-set-status-idempotence.py |   50 ++++++++++++++++++++------
 1 files changed, 39 insertions(+), 11 deletions(-)

diff --git a/tests/twisted/test-set-status-idempotence.py b/tests/twisted/test-set-status-idempotence.py
index f8795ef..ab1586f 100644
--- a/tests/twisted/test-set-status-idempotence.py
+++ b/tests/twisted/test-set-status-idempotence.py
@@ -8,22 +8,44 @@ import dbus
 from servicetest import EventPattern
 from gabbletest import exec_test
 
-def test(q, bus, conn, stream):
+def test_presence(q, bus, conn, stream):
     conn.Connect()
 
     q.expect('dbus-signal', signal='StatusChanged', args=[0, 1])
 
-    presence_iface = dbus.Interface (conn,
+    iface = dbus.Interface (conn,
         u'org.freedesktop.Telepathy.Connection.Interface.Presence')
 
+    def set_presence (status, message):
+        if message != "":
+          iface.SetStatus({status: {'message': message}})
+        else:
+          iface.SetStatus({status: {}})
+
+    run_test(q, bus, conn, stream,
+      (lambda status, message: set_presence(status, message)))
+
+def test_simple_presence(q, bus, conn, stream):
+    conn.Connect()
+
+    q.expect('dbus-signal', signal='StatusChanged', args=[0, 1])
+
+    iface = dbus.Interface (conn,
+        u'org.freedesktop.Telepathy.Connection.Interface.SimplePresence')
+    run_test(q, bus, conn, stream,
+      (lambda status, message: iface.SetPresence (status, message)))
+
+def run_test(q, bus, conn, stream, set_status_func):
     # Set presence to away. This should cause PresenceUpdate to be emitted,
     # and a new <presence> stanza to be sent to the server.
-    presence_iface.SetStatus({'away': {'message': 'gone'}})
+    set_status_func('away', 'gone')
 
-    signal, presence = q.expect_many (
+    signal, simple_signal, presence = q.expect_many (
         EventPattern('dbus-signal', signal='PresenceUpdate'),
+        EventPattern('dbus-signal', signal='PresencesChanged'),
         EventPattern('stream-presence'))
     assert signal.args == [{1L: (0L, {u'away': {u'message': u'gone'}})}]
+    assert simple_signal.args == [{1L: (3L, u'away',  u'gone')}]
 
     children = list(presence.stanza.elements())
     assert children[0].name == 'show'
@@ -33,33 +55,39 @@ def test(q, bus, conn, stream):
 
     # Set presence a second time. Since this call is redundant, there should
     # be no PresenceUpdate or <presence> sent to the server.
-    presence_iface.SetStatus({'away':{'message': 'gone'}})
+    set_status_func('away', 'gone')
 
     # Set presence a third time. This call is not redundant, and should
     # generate a signal/message.
-    presence_iface.SetStatus({'available': {'message': 'yo'}})
+    set_status_func('available', 'yo')
 
-    signal, presence = q.expect_many (
+    signal, simple_signal, presence = q.expect_many (
         EventPattern('dbus-signal', signal='PresenceUpdate'),
+        EventPattern('dbus-signal', signal='PresencesChanged'),
         EventPattern('stream-presence'))
 
     assert signal.args == [{1L: (0L, {u'available': {u'message': u'yo'}})}]
+    assert simple_signal.args == [{1L: (2L, u'available',  u'yo')}]
     children = list(presence.stanza.elements())
     assert children[0].name == 'status'
     assert str(children[0]) == 'yo'
 
     # call SetPresence with no optional arguments, as this used to cause a
     # crash in tp-glib
-    presence_iface.SetStatus({'available': {}})
-
+    set_status_func('available', "")
 
-    signal, _ = q.expect_many (
+    signal, simple_signal, presence = q.expect_many (
         EventPattern('dbus-signal', signal='PresenceUpdate'),
+        EventPattern('dbus-signal', signal='PresencesChanged'),
         EventPattern('stream-presence'))
     assert signal.args == [{1L: (0L, {u'available': {}})}]
+    assert simple_signal.args == [{1L: (2L, u'available',  u'')}]
 
     conn.Disconnect()
     q.expect('dbus-signal', signal='StatusChanged', args=[2, 1])
 
 if __name__ == '__main__':
-    exec_test(test)
+    exec_test(test_simple_presence)
+    exec_test(test_presence)
+
+
-- 
1.5.6.3




More information about the Telepathy-commits mailing list