[Telepathy-commits] [telepathy-gabble/master] muc/roomlist.py: add tests for using the Requests API on room lists

Simon McVittie simon.mcvittie at collabora.co.uk
Thu Aug 21 06:31:59 PDT 2008


20080805142719-53eee-261b09dcf199d66b7ffeda95d5746f9f2faa54d2.gz
---
 tests/twisted/muc/roomlist.py |  120 +++++++++++++++++++++++++++++++++++++---
 1 files changed, 111 insertions(+), 9 deletions(-)

diff --git a/tests/twisted/muc/roomlist.py b/tests/twisted/muc/roomlist.py
index cac5a84..e056d8c 100644
--- a/tests/twisted/muc/roomlist.py
+++ b/tests/twisted/muc/roomlist.py
@@ -8,7 +8,8 @@ import dbus
 from twisted.words.xish import domish
 
 from gabbletest import go, make_result_iq, exec_test, sync_stream
-from servicetest import call_async, lazy, match, EventPattern
+from servicetest import call_async, lazy, match, EventPattern, \
+        tp_name_prefix, tp_path_prefix
 
 def test(q, bus, conn, stream):
     conn.Connect()
@@ -36,43 +37,144 @@ def test(q, bus, conn, stream):
     # Make sure the stream has been processed
     sync_stream(q, stream)
 
+    properties = conn.GetAll(
+            tp_name_prefix + '.Connection.Interface.Requests.DRAFT',
+            dbus_interface='org.freedesktop.DBus.Properties')
+    assert properties.get('Channels') == [], properties['Channels']
+    assert ({tp_name_prefix + '.Channel.ChannelType':
+                tp_name_prefix + '.Channel.Type.RoomList',
+             tp_name_prefix + '.Channel.TargetHandleType': 0,
+             },
+             [],
+             [tp_name_prefix + '.Channel.Type.RoomList.Server'],
+             ) in properties.get('RequestableChannelClasses'),\
+                     properties['RequestableChannelClasses']
+
     call_async(q, conn, 'RequestChannel',
-        'org.freedesktop.Telepathy.Channel.Type.RoomList', 0, 0, True)
+        tp_name_prefix + '.Channel.Type.RoomList', 0, 0, True)
 
-    event = q.expect('dbus-return', method='RequestChannel')
+    ret, old_sig, new_sig = q.expect_many(
+        EventPattern('dbus-return', method='RequestChannel'),
+        EventPattern('dbus-signal', signal='NewChannel'),
+        EventPattern('dbus-signal', signal='NewChannels'),
+        )
 
     bus = dbus.SessionBus()
-    chan = bus.get_object(conn.bus_name, event.value[0])
+    path1 = ret.value[0]
+    chan = bus.get_object(conn.bus_name, path1)
+
+    assert new_sig.args[0][0][0] == path1
+
+    props = new_sig.args[0][0][1]
+    assert props[tp_name_prefix + '.Channel.ChannelType'] ==\
+            tp_name_prefix + '.Channel.Type.RoomList'
+    assert props[tp_name_prefix + '.Channel.TargetHandleType'] == 0
+    assert props[tp_name_prefix + '.Channel.TargetHandle'] == 0
+    assert props[tp_name_prefix + '.Channel.FUTURE.Requested'] == True
+    assert props[tp_name_prefix + '.Channel.FUTURE.TargetID'] == ''
+    assert props[tp_name_prefix + '.Channel.FUTURE.InitiatorHandle'] \
+            == conn.GetSelfHandle()
+    assert props[tp_name_prefix + '.Channel.FUTURE.InitiatorID'] \
+            == 'test at localhost'
+    assert props[tp_name_prefix + '.Channel.Type.RoomList.Server'] == \
+            'conf.localhost'
+
+    assert old_sig.args[0] == path1
+    assert old_sig.args[1] == tp_name_prefix + '.Channel.Type.RoomList'
+    assert old_sig.args[2] == 0     # handle type
+    assert old_sig.args[3] == 0     # handle
+    assert old_sig.args[4] == 1     # suppress handler
 
     # Exercise basic Channel Properties from spec 0.17.7
     channel_props = chan.GetAll(
-            'org.freedesktop.Telepathy.Channel',
+            tp_name_prefix + '.Channel',
             dbus_interface='org.freedesktop.DBus.Properties')
     assert channel_props.get('TargetHandle') == 0,\
             channel_props.get('TargetHandle')
     assert channel_props.get('TargetHandleType') == 0,\
             channel_props.get('TargetHandleType')
     assert channel_props.get('ChannelType') == \
-            'org.freedesktop.Telepathy.Channel.Type.RoomList',\
+            tp_name_prefix + '.Channel.Type.RoomList',\
             channel_props.get('ChannelType')
     assert 'Interfaces' in channel_props
-    assert 'org.freedesktop.Telepathy.Channel.FUTURE' in \
+    assert tp_name_prefix + '.Channel.FUTURE' in \
             channel_props['Interfaces']
 
     # Exercise FUTURE properties
     future_props = chan.GetAll(
-            'org.freedesktop.Telepathy.Channel.FUTURE',
+            tp_name_prefix + '.Channel.FUTURE',
             dbus_interface='org.freedesktop.DBus.Properties')
     assert future_props['Requested'] == True
     assert future_props['TargetID'] == ''
     assert future_props['InitiatorID'] == 'test at localhost'
     assert future_props['InitiatorHandle'] == conn.GetSelfHandle()
 
+    assert chan.Get(
+            tp_name_prefix + '.Channel.Type.RoomList', 'Server',
+            dbus_interface='org.freedesktop.DBus.Properties') == \
+                    'conf.localhost'
+
+    # FIXME: actually list the rooms!
+
+    requestotron = dbus.Interface(conn,
+            tp_name_prefix + '.Connection.Interface.Requests.DRAFT')
+    call_async(q, requestotron, 'CreateChannel',
+            { tp_name_prefix + '.Channel.ChannelType':
+                tp_name_prefix + '.Channel.Type.RoomList',
+              tp_name_prefix + '.Channel.TargetHandleType': 0,
+              tp_name_prefix + '.Channel.Type.RoomList.Server':
+                'conference.example.net',
+              })
+
+    ret, old_sig, new_sig = q.expect_many(
+        EventPattern('dbus-return', method='CreateChannel'),
+        EventPattern('dbus-signal', signal='NewChannel'),
+        EventPattern('dbus-signal', signal='NewChannels'),
+        )
+    path2 = ret.value[0]
+    chan = bus.get_object(conn.bus_name, path2)
+
+    props = ret.value[1]
+    assert props[tp_name_prefix + '.Channel.ChannelType'] ==\
+            tp_name_prefix + '.Channel.Type.RoomList'
+    assert props[tp_name_prefix + '.Channel.TargetHandleType'] == 0
+    assert props[tp_name_prefix + '.Channel.TargetHandle'] == 0
+    assert props[tp_name_prefix + '.Channel.FUTURE.Requested'] == True
+    assert props[tp_name_prefix + '.Channel.FUTURE.TargetID'] == ''
+    assert props[tp_name_prefix + '.Channel.FUTURE.InitiatorHandle'] \
+            == conn.GetSelfHandle()
+    assert props[tp_name_prefix + '.Channel.FUTURE.InitiatorID'] \
+            == 'test at localhost'
+    assert props[tp_name_prefix + '.Channel.Type.RoomList.Server'] == \
+            'conference.example.net'
+
+    assert new_sig.args[0][0][0] == path2
+    assert new_sig.args[0][0][1] == props
+
+    assert old_sig.args[0] == path2
+    assert old_sig.args[1] == tp_name_prefix + '.Channel.Type.RoomList'
+    assert old_sig.args[2] == 0     # handle type
+    assert old_sig.args[3] == 0     # handle
+    assert old_sig.args[4] == 1     # suppress handler
+
+    assert chan.Get(
+            tp_name_prefix + '.Channel.Type.RoomList', 'Server',
+            dbus_interface='org.freedesktop.DBus.Properties') == \
+                    'conference.example.net'
+
     # FIXME: actually list the rooms!
 
     conn.Disconnect()
 
-    q.expect('dbus-signal', signal='StatusChanged', args=[2, 1])
+    q.expect_many(
+            EventPattern('dbus-signal', signal='Closed',
+                path=path1[len(tp_path_prefix):]),
+            EventPattern('dbus-signal', signal='Closed',
+                path=path2[len(tp_path_prefix):]),
+            EventPattern('dbus-signal', signal='ChannelClosed', args=[path1]),
+            EventPattern('dbus-signal', signal='ChannelClosed', args=[path2]),
+            EventPattern('dbus-signal', signal='StatusChanged', args=[2, 1]),
+            )
 
 if __name__ == '__main__':
     exec_test(test)
-- 
1.5.6.3




More information about the Telepathy-commits mailing list