[Telepathy-commits] [telepathy-gabble/master] :view-presence.py: test buddy in more than one view
Guillaume Desmottes
guillaume.desmottes at collabora.co.uk
Fri Oct 17 10:24:36 PDT 2008
---
tests/twisted/olpc/view-presence.py | 71 +++++++++++++++++++++++++++++++++--
1 files changed, 67 insertions(+), 4 deletions(-)
diff --git a/tests/twisted/olpc/view-presence.py b/tests/twisted/olpc/view-presence.py
index 3087935..55432bd 100644
--- a/tests/twisted/olpc/view-presence.py
+++ b/tests/twisted/olpc/view-presence.py
@@ -69,9 +69,10 @@ def test(q, bus, conn, stream):
EventPattern('dbus-signal', signal='PresencesChanged'),
EventPattern('dbus-signal', signal='PresenceUpdate'))
- handles = {}
- handles['bob'], handles['charles'], handles['damien'], handles['eric'] = conn.RequestHandles(1,
- ['bob at localhost', 'charles at localhost', 'damien at localhost', 'eric at localhost'])
+ # get contacts handles
+ contacts = ['bob', 'charles', 'damien', 'eric', 'fred']
+ tmp = conn.RequestHandles(1, map(lambda x: "%s at localhost" % x, contacts))
+ handles = dict(zip(contacts, tmp))
presence = event.args[0]
# Connection_Presence_Type_Busy = 6
@@ -109,6 +110,8 @@ def test(q, bus, conn, stream):
buddy['jid'] = 'damien at localhost'
buddy = view.addElement((None, "buddy"))
buddy['jid'] = 'eric at localhost'
+ buddy = view.addElement((None, "buddy"))
+ buddy['jid'] = 'fred at localhost'
stream.send(reply)
view_path = return_event.value[0]
@@ -121,11 +124,12 @@ def test(q, bus, conn, stream):
# Only Bob and Damien presences are changed as we received a presence from Charles
presence = event.args[0]
- assert len(presence) == 3
+ assert len(presence) == 4
# Connection_Presence_Type_Available = 2
assert presence[handles['bob']] == (2, 'available', '')
assert presence[handles['damien']] == (2, 'available', '')
assert presence[handles['eric']] == (2, 'available', '')
+ assert presence[handles['fred']] == (2, 'available', '')
# Charles's presence didn't change
presence = simple_presence_iface.GetPresences([handles['charles']])
@@ -173,6 +177,49 @@ def test(q, bus, conn, stream):
presence = simple_presence_iface.GetPresences([handles['damien']])
assert presence[handles['damien']] == (3, 'away', 'Watching pr0n')
+ # request a second view
+ call_async(q, requests_iface, 'CreateChannel',
+ { tp_name_prefix + '.Channel.ChannelType':
+ olpc_name_prefix + '.Channel.Type.BuddyView',
+ olpc_name_prefix + '.Channel.Interface.View.MaxSize': 1
+ })
+
+ iq_event, return_event, new_channels_event, new_channel_event = q.expect_many(
+ EventPattern('stream-iq', to='gadget.localhost',
+ query_ns=NS_OLPC_BUDDY),
+ EventPattern('dbus-return', method='CreateChannel'),
+ EventPattern('dbus-signal', signal='NewChannels'),
+ EventPattern('dbus-signal', signal='NewChannel'))
+
+ view = iq_event.stanza.firstChildElement()
+ assert view.name == 'view'
+ assert view['id'] == '2'
+ assert view['size'] == '1'
+
+ # reply to random query
+ reply = make_result_iq(stream, iq_event.stanza)
+ reply['from'] = 'gadget.localhost'
+ reply['to'] = 'alice at localhost'
+ view = xpath.queryForNodes('/iq/view', reply)[0]
+ buddy = view.addElement((None, "buddy"))
+ buddy['jid'] = 'fred at localhost'
+ stream.send(reply)
+
+ view_path = return_event.value[0]
+ props = return_event.value[1]
+ view2 = bus.get_object(conn.bus_name, view_path)
+
+ event = q.expect('dbus-signal', signal='BuddiesChanged')
+
+ # Fred is the only buddy in this view
+ buddies = view2.Get('org.laptop.Telepathy.Channel.Interface.View', 'Buddies',
+ dbus_interface='org.freedesktop.DBus.Properties')
+ assert buddies == [handles['fred']]
+
+ # ... and his presence didn't change
+ presence = simple_presence_iface.GetPresences([handles['fred']])
+ assert presence[handles['fred']] == (2, 'available', '')
+
# close view 1
view1.Close(dbus_interface='org.freedesktop.Telepathy.Channel')
@@ -185,5 +232,21 @@ def test(q, bus, conn, stream):
# Connection_Presence_Type_Unknown = 7
assert presence[handles['eric']] == (7, 'unknown', '')
+ # but not the presence of Fred as he's still in view2
+ presence = simple_presence_iface.GetPresences([handles['fred']])
+ assert presence[handles['fred']] == (2, 'available', '')
+
+ # close view 2
+ view2.Close(dbus_interface='org.freedesktop.Telepathy.Channel')
+
+ # and now Fred is offline
+ event, _ = q.expect_many(
+ EventPattern('dbus-signal', signal='PresencesChanged'),
+ EventPattern('dbus-signal', signal='PresenceUpdate'))
+
+ presence = event.args[0]
+ # Connection_Presence_Type_Unknown = 7
+ assert presence[handles['fred']] == (7, 'unknown', '')
+
if __name__ == '__main__':
exec_test(test)
--
1.5.6.5
More information about the Telepathy-commits
mailing list