[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
Mon Nov 3 11:20:52 PST 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.5
More information about the Telepathy-commits
mailing list