[Telepathy-commits] [telepathy-gabble/master] offer-muc-stream-tube-ibb: test tube offering using new API
Guillaume Desmottes
guillaume.desmottes at collabora.co.uk
Mon Jan 19 05:56:25 PST 2009
---
tests/twisted/tubes/offer-muc-stream-tube-ibb.py | 57 +++++++++++++++++++++-
1 files changed, 55 insertions(+), 2 deletions(-)
diff --git a/tests/twisted/tubes/offer-muc-stream-tube-ibb.py b/tests/twisted/tubes/offer-muc-stream-tube-ibb.py
index 90ffa5d..d0ccad2 100644
--- a/tests/twisted/tubes/offer-muc-stream-tube-ibb.py
+++ b/tests/twisted/tubes/offer-muc-stream-tube-ibb.py
@@ -5,6 +5,7 @@ import errno
import os
import dbus
+from dbus import PROPERTIES_IFACE
from servicetest import call_async, EventPattern, tp_name_prefix, EventProtocolFactory
from gabbletest import exec_test, make_result_iq, acknowledge_iq
@@ -291,6 +292,7 @@ def test(q, bus, conn, stream):
assert binary == 'hello joiner'
# offer a stream tube to another room (new API)
+ srv_path = set_up_listener_socket(q, '/stream2')
requestotron = dbus.Interface(conn, 'org.freedesktop.Telepathy.Connection.Interface.Requests')
# can we request muc stream tubes?
@@ -354,8 +356,59 @@ def test(q, bus, conn, stream):
assert prop[TARGET_HANDLE_TYPE] == HT_ROOM
assert prop[TARGET_ID] == 'chat2 at conf.localhost'
assert prop[STREAM_TUBE_SERVICE] == 'newecho'
- # FIXME
- #assert prop[TUBE_STATUS] == TUBE_CHANNEL_STATE_NOT_OFFERED
+
+ tube_chan = bus.get_object(conn.bus_name, path)
+ stream_tube_iface = dbus.Interface(tube_chan, CHANNEL_TYPE_STREAM_TUBE)
+ tube_props = tube_chan.GetAll(CHANNEL_IFACE_TUBE, dbus_interface=PROPERTIES_IFACE)
+
+ assert tube_props['Parameters'] == {'foo': 'bar'}
+ assert tube_props['Status'] == TUBE_CHANNEL_STATE_NOT_OFFERED
+
+ # offer the tube
+ call_async(q, stream_tube_iface, 'OfferStreamTube',
+ SOCKET_ADDRESS_TYPE_UNIX, dbus.ByteArray(srv_path), SOCKET_ACCESS_CONTROL_LOCALHOST, "")
+
+ new_tube_event, stream_event, _, status_event = q.expect_many(
+ EventPattern('dbus-signal', signal='NewTube'),
+ EventPattern('stream-presence', to='chat2 at conf.localhost/test'),
+ EventPattern('dbus-return', method='OfferStreamTube'),
+ EventPattern('dbus-signal', signal='TubeChannelStateChanged', args=[TUBE_CHANNEL_STATE_OPEN]))
+
+ # handle new_tube_event
+ stream_tube_id = new_tube_event.args[0]
+ assert new_tube_event.args[2] == 1 # Stream
+ assert new_tube_event.args[3] == 'newecho'
+ assert new_tube_event.args[4] == {'foo': 'bar'}
+ assert new_tube_event.args[5] == TUBE_CHANNEL_STATE_OPEN
+
+ presence = stream_event.stanza
+ x_nodes = xpath.queryForNodes('/presence/x[@xmlns="http://jabber.org/'
+ 'protocol/muc"]', presence)
+ assert x_nodes is not None
+ assert len(x_nodes) == 1
+
+ tubes_nodes = xpath.queryForNodes('/presence/tubes[@xmlns="%s"]'
+ % NS_TUBES, presence)
+ assert tubes_nodes is not None
+ assert len(tubes_nodes) == 1
+
+ tube_nodes = xpath.queryForNodes('/tubes/tube', tubes_nodes[0])
+ assert tube_nodes is not None
+ assert len(tube_nodes) == 1
+ for tube in tube_nodes:
+ assert tube['type'] == 'stream'
+ assert not tube.hasAttribute('initiator')
+ assert tube['service'] == 'newecho'
+ assert not tube.hasAttribute('stream-id')
+ assert not tube.hasAttribute('dbus-name')
+ assert tube['id'] == str(stream_tube_id)
+
+ params = {}
+ parameter_nodes = xpath.queryForNodes('/tube/parameters/parameter', tube)
+ for node in parameter_nodes:
+ assert node['name'] not in params
+ params[node['name']] = (node['type'], str(node))
+ assert params == {'foo': ('str', 'bar')}
# OK, we're done
conn.Disconnect()
--
1.5.6.5
More information about the Telepathy-commits
mailing list