[Telepathy-commits] [telepathy-gabble/master] rename accept-muc-stream-tube-ibb.py to accept-muc-stream-tube.py
Guillaume Desmottes
guillaume.desmottes at collabora.co.uk
Wed Feb 25 07:18:51 PST 2009
---
tests/twisted/Makefile.am | 2 +-
tests/twisted/tubes/accept-muc-stream-tube-ibb.py | 257 ---------------------
tests/twisted/tubes/accept-muc-stream-tube.py | 257 +++++++++++++++++++++
3 files changed, 258 insertions(+), 258 deletions(-)
delete mode 100644 tests/twisted/tubes/accept-muc-stream-tube-ibb.py
create mode 100644 tests/twisted/tubes/accept-muc-stream-tube.py
diff --git a/tests/twisted/Makefile.am b/tests/twisted/Makefile.am
index c78ac49..6a70413 100644
--- a/tests/twisted/Makefile.am
+++ b/tests/twisted/Makefile.am
@@ -48,7 +48,7 @@ TWISTED_TESTS = \
tubes/crash-on-list-channels.py \
tubes/create-invalid-tube-channels.py \
tubes/test-get-available-tubes.py \
- tubes/accept-muc-stream-tube-ibb.py \
+ tubes/accept-muc-stream-tube.py \
tubes/accept-private-stream-tube.py \
tubes/offer-accept-private-dbus-stream-tube-ibb.py \
tubes/offer-accept-private-dbus-stream-tube-socks5.py \
diff --git a/tests/twisted/tubes/accept-muc-stream-tube-ibb.py b/tests/twisted/tubes/accept-muc-stream-tube-ibb.py
deleted file mode 100644
index c5bfffe..0000000
--- a/tests/twisted/tubes/accept-muc-stream-tube-ibb.py
+++ /dev/null
@@ -1,257 +0,0 @@
-"""Test IBB stream tube support in the context of a MUC."""
-
-import dbus
-
-from servicetest import call_async, EventPattern, EventProtocolClientFactory, unwrap
-from gabbletest import exec_test, make_result_iq, acknowledge_iq
-import constants as cs
-import ns
-import tubetestutil as t
-from bytestream import parse_si_offer, create_si_reply, BytestreamIBB, BytestreamS5B
-
-from twisted.words.xish import domish, xpath
-from twisted.internet import reactor
-
-sample_parameters = dbus.Dictionary({
- 's': 'hello',
- 'ay': dbus.ByteArray('hello'),
- 'u': dbus.UInt32(123),
- 'i': dbus.Int32(-123),
- }, signature='sv')
-
-def test_ibb(q, bus, conn, stream):
- run_test(q, bus, conn, stream, BytestreamIBB)
-
-def test_socks5(q, bus, conn, stream):
- run_test(q, bus, conn, stream, BytestreamS5B)
-
-def run_test(q, bus, conn, stream, bytestream_cls):
- conn.Connect()
-
- _, iq_event = q.expect_many(
- EventPattern('dbus-signal', signal='StatusChanged', args=[0, 1]),
- EventPattern('stream-iq', to=None, query_ns='vcard-temp',
- query_name='vCard'))
-
- acknowledge_iq(stream, iq_event.stanza)
-
- call_async(q, conn, 'RequestHandles', 2,
- ['chat at conf.localhost'])
-
- event = q.expect('stream-iq', to='conf.localhost',
- query_ns='http://jabber.org/protocol/disco#info')
- result = make_result_iq(stream, event.stanza)
- feature = result.firstChildElement().addElement('feature')
- feature['var'] = 'http://jabber.org/protocol/muc'
- stream.send(result)
-
- event = q.expect('dbus-return', method='RequestHandles')
- handles = event.value[0]
- room_handle = handles[0]
-
- # join the muc
- call_async(q, conn, 'RequestChannel', cs.CHANNEL_TYPE_TEXT, cs.HT_ROOM,
- room_handle, True)
-
- _, stream_event = q.expect_many(
- EventPattern('dbus-signal', signal='MembersChanged',
- args=[u'', [], [], [], [2], 0, 0]),
- EventPattern('stream-presence', to='chat at conf.localhost/test'))
-
- # Send presence for other member of room.
- presence = domish.Element((None, 'presence'))
- presence['from'] = 'chat at conf.localhost/bob'
- x = presence.addElement(('http://jabber.org/protocol/muc#user', 'x'))
- item = x.addElement('item')
- item['affiliation'] = 'owner'
- item['role'] = 'moderator'
- stream.send(presence)
-
- # Send presence for own membership of room.
- presence = domish.Element((None, 'presence'))
- presence['from'] = 'chat at conf.localhost/test'
- x = presence.addElement(('http://jabber.org/protocol/muc#user', 'x'))
- item = x.addElement('item')
- item['affiliation'] = 'none'
- item['role'] = 'participant'
- stream.send(presence)
-
- q.expect('dbus-signal', signal='MembersChanged',
- args=[u'', [2, 3], [], [], [], 0, 0])
-
- assert conn.InspectHandles(1, [2]) == ['chat at conf.localhost/test']
- assert conn.InspectHandles(1, [3]) == ['chat at conf.localhost/bob']
- bob_handle = 3
-
- event = q.expect('dbus-return', method='RequestChannel')
-
- # Bob offers a stream tube
- stream_tube_id = 666
- presence = domish.Element((None, 'presence'))
- presence['from'] = 'chat at conf.localhost/bob'
- x = presence.addElement(('http://jabber.org/protocol/muc#user', 'x'))
- item = x.addElement('item')
- item['affiliation'] = 'owner'
- item['role'] = 'moderator'
- tubes = presence.addElement((ns.TUBES, 'tubes'))
- tube = tubes.addElement((None, 'tube'))
- tube['type'] = 'stream'
- tube['service'] = 'echo'
- tube['id'] = str(stream_tube_id)
- parameters = tube.addElement((None, 'parameters'))
- parameter = parameters.addElement((None, 'parameter'))
- parameter['name'] = 's'
- parameter['type'] = 'str'
- parameter.addContent('hello')
- parameter = parameters.addElement((None, 'parameter'))
- parameter['name'] = 'ay'
- parameter['type'] = 'bytes'
- parameter.addContent('aGVsbG8=')
- parameter = parameters.addElement((None, 'parameter'))
- parameter['name'] = 'u'
- parameter['type'] = 'uint'
- parameter.addContent('123')
- parameter = parameters.addElement((None, 'parameter'))
- parameter['name'] = 'i'
- parameter['type'] = 'int'
- parameter.addContent('-123')
-
- stream.send(presence)
-
- # text channel
- event, new_event = q.expect_many(
- EventPattern('dbus-signal', signal='NewChannel'),
- EventPattern('dbus-signal', signal='NewChannels'))
-
- assert event.args[1] == cs.CHANNEL_TYPE_TEXT, event.args
-
- channels = new_event.args[0]
- assert len(channels) == 1
- path, props = channels[0]
- assert props[cs.CHANNEL_TYPE] == cs.CHANNEL_TYPE_TEXT
-
- # tubes channel is automatically created
- event, new_event = q.expect_many(
- EventPattern('dbus-signal', signal='NewChannel'),
- EventPattern('dbus-signal', signal='NewChannels'))
-
- assert event.args[1] == cs.CHANNEL_TYPE_TUBES, event.args
- assert event.args[2] == cs.HT_ROOM
- assert event.args[3] == room_handle
-
- tubes_chan = bus.get_object(conn.bus_name, event.args[0])
- tubes_iface = dbus.Interface(tubes_chan, event.args[1])
-
- channel_props = tubes_chan.GetAll(cs.CHANNEL, dbus_interface=cs.PROPERTIES_IFACE)
- assert channel_props['TargetID'] == 'chat at conf.localhost', channel_props
- assert channel_props['Requested'] == False
- assert channel_props['InitiatorID'] == ''
- assert channel_props['InitiatorHandle'] == 0
-
- channels = new_event.args[0]
- assert len(channels) == 1
- path, props = channels[0]
- assert props[cs.CHANNEL_TYPE] == cs.CHANNEL_TYPE_TUBES
-
- tubes_self_handle = tubes_chan.GetSelfHandle(dbus_interface=cs.CHANNEL_IFACE_GROUP)
-
- q.expect('dbus-signal', signal='NewTube',
- args=[stream_tube_id, bob_handle, 1, 'echo', sample_parameters, 0])
-
- expected_tube = (stream_tube_id, bob_handle, cs.TUBE_TYPE_STREAM, 'echo',
- sample_parameters, cs.TUBE_STATE_LOCAL_PENDING)
- tubes = tubes_iface.ListTubes(byte_arrays=True)
- assert tubes == [(
- stream_tube_id,
- bob_handle,
- 1, # Stream
- 'echo',
- sample_parameters,
- cs.TUBE_CHANNEL_STATE_LOCAL_PENDING
- )]
-
- assert len(tubes) == 1, unwrap(tubes)
- t.check_tube_in_tubes(expected_tube, tubes)
-
- # tube channel is also announced (new API)
- new_event = q.expect('dbus-signal', signal='NewChannels')
-
- channels = new_event.args[0]
- assert len(channels) == 1
- path, props = channels[0]
- assert props[cs.CHANNEL_TYPE] == cs.CHANNEL_TYPE_STREAM_TUBE
- assert props[cs.INITIATOR_HANDLE] == bob_handle
- assert props[cs.INITIATOR_ID] == 'chat at conf.localhost/bob'
- assert props[cs.INTERFACES] == [cs.CHANNEL_IFACE_GROUP, cs.CHANNEL_IFACE_TUBE]
- assert props[cs.REQUESTED] == False
- assert props[cs.TARGET_HANDLE] == room_handle
- assert props[cs.TARGET_ID] == 'chat at conf.localhost'
- assert props[cs.STREAM_TUBE_SERVICE] == 'echo'
- assert props[cs.TUBE_PARAMETERS] == {'s': 'hello', 'ay': 'hello', 'u': 123, 'i': -123}
-
- tube_chan = bus.get_object(conn.bus_name, path)
- tube_props = tube_chan.GetAll(cs.CHANNEL_IFACE_TUBE, dbus_interface=cs.PROPERTIES_IFACE,
- byte_arrays=True)
- assert tube_props['Parameters'] == sample_parameters
- assert tube_props['State'] == cs.TUBE_CHANNEL_STATE_LOCAL_PENDING
-
- # Accept the tube
- call_async(q, tubes_iface, 'AcceptStreamTube', stream_tube_id, 0, 0, '',
- byte_arrays=True)
-
- accept_return_event, _ = q.expect_many(
- EventPattern('dbus-return', method='AcceptStreamTube'),
- EventPattern('dbus-signal', signal='TubeStateChanged',
- args=[stream_tube_id, 2]))
-
- unix_socket_adr = accept_return_event.value[0]
-
- factory = EventProtocolClientFactory(q)
- reactor.connectUNIX(unix_socket_adr, factory)
-
- event = q.expect('socket-connected')
- protocol = event.protocol
- protocol.sendData("hello initiator")
-
- # expect SI request
- event = q.expect('stream-iq', to='chat at conf.localhost/bob', query_ns=ns.SI,
- query_name='si')
-
- profile, stream_id, bytestreams = parse_si_offer(event.stanza)
-
- bytestream = bytestream_cls(stream, q, stream_id, 'chat at conf.localhost/test',
- event.stanza['to'], False)
-
- assert bytestream.get_ns() in bytestreams
- assert profile == ns.TUBES
-
- muc_stream_node = xpath.queryForNodes('/iq/si/muc-stream[@xmlns="%s"]' %
- ns.TUBES, event.stanza)[0]
- assert muc_stream_node is not None
- assert muc_stream_node['tube'] == str(stream_tube_id)
-
- result, si = create_si_reply(stream, event.stanza, 'chat at conf.localhost/test',
- bytestream.get_ns())
- si.addElement((ns.TUBES, 'tube'))
- stream.send(result)
-
- bytestream.wait_bytestream_open()
-
- binary = bytestream.get_data()
- assert binary == 'hello initiator'
-
- # reply on the socket
- bytestream.send_data('hi joiner!')
-
- q.expect('socket-data', protocol=protocol, data="hi joiner!")
-
- # OK, we're done
- conn.Disconnect()
-
- q.expect_many(
- EventPattern('dbus-signal', signal='TubeClosed', args=[stream_tube_id]),
- EventPattern('dbus-signal', signal='StatusChanged', args=[2, 1]))
-
-if __name__ == '__main__':
- exec_test(test_ibb)
- exec_test(test_socks5)
diff --git a/tests/twisted/tubes/accept-muc-stream-tube.py b/tests/twisted/tubes/accept-muc-stream-tube.py
new file mode 100644
index 0000000..c5bfffe
--- /dev/null
+++ b/tests/twisted/tubes/accept-muc-stream-tube.py
@@ -0,0 +1,257 @@
+"""Test IBB stream tube support in the context of a MUC."""
+
+import dbus
+
+from servicetest import call_async, EventPattern, EventProtocolClientFactory, unwrap
+from gabbletest import exec_test, make_result_iq, acknowledge_iq
+import constants as cs
+import ns
+import tubetestutil as t
+from bytestream import parse_si_offer, create_si_reply, BytestreamIBB, BytestreamS5B
+
+from twisted.words.xish import domish, xpath
+from twisted.internet import reactor
+
+sample_parameters = dbus.Dictionary({
+ 's': 'hello',
+ 'ay': dbus.ByteArray('hello'),
+ 'u': dbus.UInt32(123),
+ 'i': dbus.Int32(-123),
+ }, signature='sv')
+
+def test_ibb(q, bus, conn, stream):
+ run_test(q, bus, conn, stream, BytestreamIBB)
+
+def test_socks5(q, bus, conn, stream):
+ run_test(q, bus, conn, stream, BytestreamS5B)
+
+def run_test(q, bus, conn, stream, bytestream_cls):
+ conn.Connect()
+
+ _, iq_event = q.expect_many(
+ EventPattern('dbus-signal', signal='StatusChanged', args=[0, 1]),
+ EventPattern('stream-iq', to=None, query_ns='vcard-temp',
+ query_name='vCard'))
+
+ acknowledge_iq(stream, iq_event.stanza)
+
+ call_async(q, conn, 'RequestHandles', 2,
+ ['chat at conf.localhost'])
+
+ event = q.expect('stream-iq', to='conf.localhost',
+ query_ns='http://jabber.org/protocol/disco#info')
+ result = make_result_iq(stream, event.stanza)
+ feature = result.firstChildElement().addElement('feature')
+ feature['var'] = 'http://jabber.org/protocol/muc'
+ stream.send(result)
+
+ event = q.expect('dbus-return', method='RequestHandles')
+ handles = event.value[0]
+ room_handle = handles[0]
+
+ # join the muc
+ call_async(q, conn, 'RequestChannel', cs.CHANNEL_TYPE_TEXT, cs.HT_ROOM,
+ room_handle, True)
+
+ _, stream_event = q.expect_many(
+ EventPattern('dbus-signal', signal='MembersChanged',
+ args=[u'', [], [], [], [2], 0, 0]),
+ EventPattern('stream-presence', to='chat at conf.localhost/test'))
+
+ # Send presence for other member of room.
+ presence = domish.Element((None, 'presence'))
+ presence['from'] = 'chat at conf.localhost/bob'
+ x = presence.addElement(('http://jabber.org/protocol/muc#user', 'x'))
+ item = x.addElement('item')
+ item['affiliation'] = 'owner'
+ item['role'] = 'moderator'
+ stream.send(presence)
+
+ # Send presence for own membership of room.
+ presence = domish.Element((None, 'presence'))
+ presence['from'] = 'chat at conf.localhost/test'
+ x = presence.addElement(('http://jabber.org/protocol/muc#user', 'x'))
+ item = x.addElement('item')
+ item['affiliation'] = 'none'
+ item['role'] = 'participant'
+ stream.send(presence)
+
+ q.expect('dbus-signal', signal='MembersChanged',
+ args=[u'', [2, 3], [], [], [], 0, 0])
+
+ assert conn.InspectHandles(1, [2]) == ['chat at conf.localhost/test']
+ assert conn.InspectHandles(1, [3]) == ['chat at conf.localhost/bob']
+ bob_handle = 3
+
+ event = q.expect('dbus-return', method='RequestChannel')
+
+ # Bob offers a stream tube
+ stream_tube_id = 666
+ presence = domish.Element((None, 'presence'))
+ presence['from'] = 'chat at conf.localhost/bob'
+ x = presence.addElement(('http://jabber.org/protocol/muc#user', 'x'))
+ item = x.addElement('item')
+ item['affiliation'] = 'owner'
+ item['role'] = 'moderator'
+ tubes = presence.addElement((ns.TUBES, 'tubes'))
+ tube = tubes.addElement((None, 'tube'))
+ tube['type'] = 'stream'
+ tube['service'] = 'echo'
+ tube['id'] = str(stream_tube_id)
+ parameters = tube.addElement((None, 'parameters'))
+ parameter = parameters.addElement((None, 'parameter'))
+ parameter['name'] = 's'
+ parameter['type'] = 'str'
+ parameter.addContent('hello')
+ parameter = parameters.addElement((None, 'parameter'))
+ parameter['name'] = 'ay'
+ parameter['type'] = 'bytes'
+ parameter.addContent('aGVsbG8=')
+ parameter = parameters.addElement((None, 'parameter'))
+ parameter['name'] = 'u'
+ parameter['type'] = 'uint'
+ parameter.addContent('123')
+ parameter = parameters.addElement((None, 'parameter'))
+ parameter['name'] = 'i'
+ parameter['type'] = 'int'
+ parameter.addContent('-123')
+
+ stream.send(presence)
+
+ # text channel
+ event, new_event = q.expect_many(
+ EventPattern('dbus-signal', signal='NewChannel'),
+ EventPattern('dbus-signal', signal='NewChannels'))
+
+ assert event.args[1] == cs.CHANNEL_TYPE_TEXT, event.args
+
+ channels = new_event.args[0]
+ assert len(channels) == 1
+ path, props = channels[0]
+ assert props[cs.CHANNEL_TYPE] == cs.CHANNEL_TYPE_TEXT
+
+ # tubes channel is automatically created
+ event, new_event = q.expect_many(
+ EventPattern('dbus-signal', signal='NewChannel'),
+ EventPattern('dbus-signal', signal='NewChannels'))
+
+ assert event.args[1] == cs.CHANNEL_TYPE_TUBES, event.args
+ assert event.args[2] == cs.HT_ROOM
+ assert event.args[3] == room_handle
+
+ tubes_chan = bus.get_object(conn.bus_name, event.args[0])
+ tubes_iface = dbus.Interface(tubes_chan, event.args[1])
+
+ channel_props = tubes_chan.GetAll(cs.CHANNEL, dbus_interface=cs.PROPERTIES_IFACE)
+ assert channel_props['TargetID'] == 'chat at conf.localhost', channel_props
+ assert channel_props['Requested'] == False
+ assert channel_props['InitiatorID'] == ''
+ assert channel_props['InitiatorHandle'] == 0
+
+ channels = new_event.args[0]
+ assert len(channels) == 1
+ path, props = channels[0]
+ assert props[cs.CHANNEL_TYPE] == cs.CHANNEL_TYPE_TUBES
+
+ tubes_self_handle = tubes_chan.GetSelfHandle(dbus_interface=cs.CHANNEL_IFACE_GROUP)
+
+ q.expect('dbus-signal', signal='NewTube',
+ args=[stream_tube_id, bob_handle, 1, 'echo', sample_parameters, 0])
+
+ expected_tube = (stream_tube_id, bob_handle, cs.TUBE_TYPE_STREAM, 'echo',
+ sample_parameters, cs.TUBE_STATE_LOCAL_PENDING)
+ tubes = tubes_iface.ListTubes(byte_arrays=True)
+ assert tubes == [(
+ stream_tube_id,
+ bob_handle,
+ 1, # Stream
+ 'echo',
+ sample_parameters,
+ cs.TUBE_CHANNEL_STATE_LOCAL_PENDING
+ )]
+
+ assert len(tubes) == 1, unwrap(tubes)
+ t.check_tube_in_tubes(expected_tube, tubes)
+
+ # tube channel is also announced (new API)
+ new_event = q.expect('dbus-signal', signal='NewChannels')
+
+ channels = new_event.args[0]
+ assert len(channels) == 1
+ path, props = channels[0]
+ assert props[cs.CHANNEL_TYPE] == cs.CHANNEL_TYPE_STREAM_TUBE
+ assert props[cs.INITIATOR_HANDLE] == bob_handle
+ assert props[cs.INITIATOR_ID] == 'chat at conf.localhost/bob'
+ assert props[cs.INTERFACES] == [cs.CHANNEL_IFACE_GROUP, cs.CHANNEL_IFACE_TUBE]
+ assert props[cs.REQUESTED] == False
+ assert props[cs.TARGET_HANDLE] == room_handle
+ assert props[cs.TARGET_ID] == 'chat at conf.localhost'
+ assert props[cs.STREAM_TUBE_SERVICE] == 'echo'
+ assert props[cs.TUBE_PARAMETERS] == {'s': 'hello', 'ay': 'hello', 'u': 123, 'i': -123}
+
+ tube_chan = bus.get_object(conn.bus_name, path)
+ tube_props = tube_chan.GetAll(cs.CHANNEL_IFACE_TUBE, dbus_interface=cs.PROPERTIES_IFACE,
+ byte_arrays=True)
+ assert tube_props['Parameters'] == sample_parameters
+ assert tube_props['State'] == cs.TUBE_CHANNEL_STATE_LOCAL_PENDING
+
+ # Accept the tube
+ call_async(q, tubes_iface, 'AcceptStreamTube', stream_tube_id, 0, 0, '',
+ byte_arrays=True)
+
+ accept_return_event, _ = q.expect_many(
+ EventPattern('dbus-return', method='AcceptStreamTube'),
+ EventPattern('dbus-signal', signal='TubeStateChanged',
+ args=[stream_tube_id, 2]))
+
+ unix_socket_adr = accept_return_event.value[0]
+
+ factory = EventProtocolClientFactory(q)
+ reactor.connectUNIX(unix_socket_adr, factory)
+
+ event = q.expect('socket-connected')
+ protocol = event.protocol
+ protocol.sendData("hello initiator")
+
+ # expect SI request
+ event = q.expect('stream-iq', to='chat at conf.localhost/bob', query_ns=ns.SI,
+ query_name='si')
+
+ profile, stream_id, bytestreams = parse_si_offer(event.stanza)
+
+ bytestream = bytestream_cls(stream, q, stream_id, 'chat at conf.localhost/test',
+ event.stanza['to'], False)
+
+ assert bytestream.get_ns() in bytestreams
+ assert profile == ns.TUBES
+
+ muc_stream_node = xpath.queryForNodes('/iq/si/muc-stream[@xmlns="%s"]' %
+ ns.TUBES, event.stanza)[0]
+ assert muc_stream_node is not None
+ assert muc_stream_node['tube'] == str(stream_tube_id)
+
+ result, si = create_si_reply(stream, event.stanza, 'chat at conf.localhost/test',
+ bytestream.get_ns())
+ si.addElement((ns.TUBES, 'tube'))
+ stream.send(result)
+
+ bytestream.wait_bytestream_open()
+
+ binary = bytestream.get_data()
+ assert binary == 'hello initiator'
+
+ # reply on the socket
+ bytestream.send_data('hi joiner!')
+
+ q.expect('socket-data', protocol=protocol, data="hi joiner!")
+
+ # OK, we're done
+ conn.Disconnect()
+
+ q.expect_many(
+ EventPattern('dbus-signal', signal='TubeClosed', args=[stream_tube_id]),
+ EventPattern('dbus-signal', signal='StatusChanged', args=[2, 1]))
+
+if __name__ == '__main__':
+ exec_test(test_ibb)
+ exec_test(test_socks5)
--
1.5.6.5
More information about the telepathy-commits
mailing list