[Telepathy-commits] [telepathy-gabble/master] check if we properly presence change from a buddy who is already in a view

Guillaume Desmottes guillaume.desmottes at collabora.co.uk
Wed Oct 15 10:25:11 PDT 2008


---
 tests/twisted/olpc/view-presence.py |   58 ++++++++++++++++++++++++++---------
 1 files changed, 43 insertions(+), 15 deletions(-)

diff --git a/tests/twisted/olpc/view-presence.py b/tests/twisted/olpc/view-presence.py
index d79621f..c2ed095 100644
--- a/tests/twisted/olpc/view-presence.py
+++ b/tests/twisted/olpc/view-presence.py
@@ -29,6 +29,15 @@ NS_AMP = "http://jabber.org/protocol/amp"
 tp_name_prefix = 'org.freedesktop.Telepathy'
 olpc_name_prefix = 'org.laptop.Telepathy'
 
+def send_presence(stream, from_, type, msg):
+    presence = domish.Element((None, 'presence'))
+    presence['from'] = from_
+    show = presence.addElement((None, 'show'))
+    show.addContent(type)
+    status = presence.addElement((None, 'status'))
+    status.addContent(msg)
+    stream.send(presence)
+
 def test(q, bus, conn, stream):
     conn.Connect()
 
@@ -49,20 +58,15 @@ def test(q, bus, conn, stream):
     sync_stream(q, stream)
 
     # receive presence from Charles
-    presence = domish.Element((None, 'presence'))
-    presence['from'] = 'charles at localhost'
-    show = presence.addElement((None, 'show'))
-    show.addContent('dnd')
-    status = presence.addElement((None, 'status'))
-    status.addContent('Hacking on Sugar')
-    stream.send(presence)
+    send_presence(stream, 'charles at localhost', 'dnd', 'Hacking on Sugar')
 
     event, _ = q.expect_many(
         EventPattern('dbus-signal', signal='PresencesChanged'),
         EventPattern('dbus-signal', signal='PresenceUpdate'))
 
     handles = {}
-    handles['bob'], handles['charles'] = conn.RequestHandles(1, ['bob at localhost', 'charles at localhost'])
+    handles['bob'], handles['charles'], handles['damien'] = conn.RequestHandles(1, ['bob at localhost', 'charles at localhost',
+        'damien at localhost'])
 
     presence = event.args[0]
     # Connection_Presence_Type_Busy = 6
@@ -96,6 +100,8 @@ def test(q, bus, conn, stream):
     buddy['jid'] = 'charles at localhost'
     buddy = view.addElement((None, "buddy"))
     buddy['jid'] = 'bob at localhost'
+    buddy = view.addElement((None, "buddy"))
+    buddy['jid'] = 'damien at localhost'
     stream.send(reply)
 
     view_path = return_event.value[0]
@@ -106,22 +112,18 @@ def test(q, bus, conn, stream):
         EventPattern('dbus-signal', signal='PresencesChanged'),
         EventPattern('dbus-signal', signal='PresenceUpdate'))
 
-    # Only Bob's presence is changed as we received a presence from Charles
+    # Only Bob and Damien presences are changed as we received a presence from Charles
     presence = event.args[0]
+    assert len(presence) == 2
     # Connection_Presence_Type_Available = 2
     assert presence[handles['bob']] == (2, 'available', '')
-    assert len(presence) == 1
+    assert presence[handles['damien']] == (2, 'available', '')
 
     # Charles's presence didn't change
     presence = simple_presence_iface.GetPresences([handles['charles']])
     assert presence[handles['charles']] == (6, 'dnd', 'Hacking on Sugar')
 
     event = q.expect('dbus-signal', signal='BuddiesChanged')
-    added, removed = event.args
-    assert removed == []
-    assert len(added) == 2
-    assert sorted(conn.InspectHandles(1, added)) == ['bob at localhost',
-            'charles at localhost']
 
     # remove bob from view
     message = create_gadget_message("test at localhost")
@@ -155,5 +157,31 @@ def test(q, bus, conn, stream):
     presence = simple_presence_iface.GetPresences([handles['charles']])
     assert presence[handles['charles']] == (6, 'dnd', 'Hacking on Sugar')
 
+    # we receive a presence from Dambien
+    send_presence(stream, 'damien at localhost', 'away', 'Watching pr0n')
+
+    # presence is properly changed
+    event, _ = q.expect_many(
+        EventPattern('dbus-signal', signal='PresencesChanged'),
+        EventPattern('dbus-signal', signal='PresenceUpdate'))
+
+    presence = event.args[0]
+    # Connection_Presence_Type_Away = 3
+    assert presence[handles['damien']] == (3, 'away', 'Watching pr0n')
+
+    # remove Damien from view
+    message = create_gadget_message("test at localhost")
+    added = message.addElement((NS_OLPC_BUDDY, 'removed'))
+    added['id'] = '1'
+    buddy = added.addElement((None, 'buddy'))
+    buddy['jid'] = 'damien at localhost'
+    stream.send(message)
+
+    event = q.expect('dbus-signal', signal='BuddiesChanged')
+
+    # Damien's presence didn't change
+    presence = simple_presence_iface.GetPresences([handles['damien']])
+    assert presence[handles['damien']] == (3, 'away', 'Watching pr0n')
+
 if __name__ == '__main__':
     exec_test(test)
-- 
1.5.6.5




More information about the Telepathy-commits mailing list