[telepathy-gabble/master] add test-socks5-muc.py

Guillaume Desmottes guillaume.desmottes at collabora.co.uk
Fri Apr 3 08:41:37 PDT 2009


---
 tests/twisted/tubes/test-socks5-muc.py |   83 ++++++++++++++++++++++++++++++++
 1 files changed, 83 insertions(+), 0 deletions(-)
 create mode 100644 tests/twisted/tubes/test-socks5-muc.py

diff --git a/tests/twisted/tubes/test-socks5-muc.py b/tests/twisted/tubes/test-socks5-muc.py
new file mode 100644
index 0000000..56a381a
--- /dev/null
+++ b/tests/twisted/tubes/test-socks5-muc.py
@@ -0,0 +1,83 @@
+"""Check if SOCKS5 relays are disabled in muc"""
+
+from servicetest import call_async, EventPattern, EventProtocolClientFactory
+from gabbletest import acknowledge_iq, make_muc_presence, exec_test
+import constants as cs
+import ns
+from muctubeutil import get_muc_tubes_channel
+from bytestream import BytestreamS5BRelay, create_from_si_offer, announce_socks5_proxy
+
+from twisted.internet import reactor
+
+def test(q, bus, conn, stream):
+    conn.Connect()
+
+    _, iq_event, disco_event = q.expect_many(
+        EventPattern('dbus-signal', signal='StatusChanged', args=[0, 1]),
+        EventPattern('stream-iq', to=None, query_ns='vcard-temp',
+            query_name='vCard'),
+        EventPattern('stream-iq', to='localhost', query_ns=ns.DISCO_ITEMS))
+
+    acknowledge_iq(stream, iq_event.stanza)
+
+    announce_socks5_proxy(q, stream, disco_event.stanza)
+
+    room_handle, tubes_chan, tubes_iface = get_muc_tubes_channel(q, bus, conn,
+        stream, 'chat at conf.localhost')
+
+    # bob offers a stream tube
+    stream_tube_id = 1
+
+    presence = make_muc_presence('owner', 'moderator', 'chat at conf.localhost', 'bob')
+    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'))
+    stream.send(presence)
+
+    e = q.expect('dbus-signal', signal='NewChannels')
+    channels = e.args[0]
+    assert len(channels) == 1
+    path, props = channels[0]
+    assert props[cs.CHANNEL_TYPE] == cs.CHANNEL_TYPE_STREAM_TUBE
+
+    tube_chan = bus.get_object(conn.bus_name, path)
+    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, cs.TUBE_CHANNEL_STATE_OPEN]))
+
+    unix_socket_adr = accept_return_event.value[0]
+
+    factory = EventProtocolClientFactory(q)
+    reactor.connectUNIX(unix_socket_adr, factory)
+
+     # expect SI request
+    e = q.expect('stream-iq', to='chat at conf.localhost/bob', query_ns=ns.SI,
+        query_name='si')
+
+    bytestream, profile = create_from_si_offer(stream, q, BytestreamS5BRelay, e.stanza,
+        'chat at conf.localhost/bob')
+
+    result, si = bytestream.create_si_reply(e.stanza, 'test at localhost/Resource')
+    si.addElement((ns.TUBES, 'tube'))
+    stream.send(result)
+
+    # wait SOCKS5 init iq
+    id, mode, si, hosts = bytestream._expect_socks5_init()
+    for jid, host, port in hosts:
+        # the proxy is not announced because we are in a muc
+        assert jid != 'proxy.localhost'
+
+    # OK, we're done
+    conn.Disconnect()
+
+    q.expect('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