[telepathy-gabble/master] file_transfer_helper.py: Bytestreams objects have been moved to bytestream.py
Guillaume Desmottes
guillaume.desmottes at collabora.co.uk
Fri Apr 3 09:26:05 PDT 2009
---
.../twisted/file-transfer/file_transfer_helper.py | 165 +-------------------
1 files changed, 3 insertions(+), 162 deletions(-)
diff --git a/tests/twisted/file-transfer/file_transfer_helper.py b/tests/twisted/file-transfer/file_transfer_helper.py
index bfa67ee..31c2c11 100644
--- a/tests/twisted/file-transfer/file_transfer_helper.py
+++ b/tests/twisted/file-transfer/file_transfer_helper.py
@@ -2,19 +2,14 @@ import dbus
import socket
import md5
import time
-import sha
from servicetest import EventPattern
-from gabbletest import acknowledge_iq, sync_stream, exec_test
+from gabbletest import exec_test
import ns
-from bytestream import parse_si_offer, create_si_reply, parse_ibb_open, parse_ibb_msg_data,\
- create_si_offer, parse_si_reply, send_ibb_open, send_ibb_msg_data, listen_socks5, \
- send_socks5_init, socks5_expect_connection, expect_socks5_init, socks5_connect, \
- send_socks5_reply, S5BFactory
+from bytestream import parse_si_offer, create_si_reply, create_si_offer, parse_si_reply,\
+ BytestreamIBB, BytestreamS5B, BytestreamS5BPidgin
from twisted.words.xish import domish, xpath
-from twisted.words.protocols.jabber.client import IQ
-from twisted.internet import reactor
from dbus import PROPERTIES_IFACE
@@ -437,157 +432,3 @@ def exec_file_transfer_test(test_cls):
exec_test(test.test)
test = test_cls(BytestreamS5BPidgin)
exec_test(test.test)
-
-class Bytestream(object):
- def __init__(self, stream, q, sid, initiator, target):
- self.stream = stream
- self.q = q
-
- self.stream_id = sid
- self.initiator = initiator
- self.target = target
-
- def open_bytestream(self):
- raise NotImplemented
-
- def send_data(self, data):
- raise NotImplemented
-
- def get_ns(self):
- raise NotImplemented
-
- def wait_bytestream_open(self):
- raise NotImplemented
-
- def get_data(self):
- raise NotImplemented
-
- def wait_bytestream_closed(self):
- raise NotImplemented
-
-class BytestreamIBB(Bytestream):
- def __init__(self, stream, q, sid, initiator, target):
- Bytestream.__init__(self, stream, q, sid, initiator, target)
-
- self.seq = 0
-
- def get_ns(self):
- return ns.IBB
-
- def open_bytestream(self):
- # open IBB bytestream
- send_ibb_open(self.stream, self.initiator, self.target, self.stream_id, 4096)
-
- def send_data(self, data):
- send_ibb_msg_data(self.stream, self.initiator, self.target, self.stream_id,
- self.seq, data)
- sync_stream(self.q, self.stream)
-
- self.seq += 1
-
- def wait_bytestream_open(self):
- # Wait IBB open iq
- event = self.q.expect('stream-iq', iq_type='set')
- sid = parse_ibb_open(event.stanza)
- assert sid == self.stream_id
-
- # open IBB bytestream
- acknowledge_iq(self.stream, event.stanza)
-
- def get_data(self):
- # wait for IBB stanzas
- ibb_event = self.q.expect('stream-message')
- sid, binary = parse_ibb_msg_data(ibb_event.stanza)
- assert sid == self.stream_id
- return binary
-
- def wait_bytestream_closed(self):
- close_event = self.q.expect('stream-iq', iq_type='set', query_name='close', query_ns=ns.IBB)
-
- # sender finish to send the file and so close the bytestream
- acknowledge_iq(self.stream, close_event.stanza)
-
-class BytestreamS5B(Bytestream):
- def get_ns(self):
- return ns.BYTESTREAMS
-
- def open_bytestream(self):
- port = listen_socks5(self.q)
-
- send_socks5_init(self.stream, self.initiator, self.target,
- self.stream_id, 'tcp', [(self.initiator, '127.0.0.1', port)])
-
- self.transport = socks5_expect_connection(self.q, self.stream_id,
- self.initiator, self.target)
-
- def send_data(self, data):
- self.transport.write(data)
-
- def wait_bytestream_open(self):
- id, mode, sid, hosts = expect_socks5_init(self.q)
-
- for jid, host, port in hosts:
- assert jid == self.initiator, jid
-
- assert mode == 'tcp'
- assert sid == self.stream_id
- jid, host, port = hosts[0]
-
- self.transport = socks5_connect(self.q, host, port, sid, self.initiator,
- self.target)
-
- send_socks5_reply(self.stream, self.target, self.initiator, id, jid)
-
- def get_data(self):
- e = self.q.expect('s5b-data-received', transport=self.transport)
- return e.data
-
- def wait_bytestream_closed(self):
- self.q.expect('s5b-connection-lost')
-
-class BytestreamS5BPidgin(BytestreamS5B):
- """Simulate buggy S5B implementation (as Pidgin's one)"""
- def open_bytestream(self):
- port = listen_socks5(self.q)
-
- send_socks5_init(self.stream, self.initiator, self.target,
- self.stream_id, 'tcp', [(self.initiator, '127.0.0.1', port)])
-
- # FIXME: we should share lot of code with socks5_expect_connection
- # once we'll have refactored Bytestream test objects
- sid = self.stream_id
- initiator = self.initiator
- target = self.target
-
- # wait auth
- event = self.q.expect('s5b-data-received')
- assert event.data == '\x05\x01\x00' # version 5, 1 auth method, no auth
-
- # send auth reply
- transport = event.transport
- transport.write('\x05\x00') # version 5, no auth
- event = self.q.expect('s5b-data-received')
-
- # sha-1(sid + initiator + target)
- unhashed_domain = sid + initiator + target
- hashed_domain = sha.new(unhashed_domain).hexdigest()
-
- # wait CONNECT cmd
- # version 5, connect, reserved, domain type
- expected_connect = '\x05\x01\x00\x03'
- expected_connect += chr(40) # len (SHA-1)
- expected_connect += hashed_domain
- expected_connect += '\x00\x00' # port
- assert event.data == expected_connect
-
- # send CONNECT reply
- # version 5, ok, reserved, domain type
- connect_reply = '\x05\x00\x00\x03'
- # I'm Pidgin, why should I respect SOCKS5 XEP?
- domain = '127.0.0.1'
- connect_reply += chr(len(domain))
- connect_reply += domain
- connect_reply += '\x00\x00' # port
- transport.write(connect_reply)
-
- self.transport = transport
--
1.5.6.5
More information about the telepathy-commits
mailing list