def test_transfer_data(self): dispatcher = dispatch.Dispatcher(_TEST_HANDLERS_DIR, None) request = mock.MockRequest(connection=mock.MockConn('\xff\x00')) request.ws_resource = '/origin_check' request.ws_protocol = 'p1' dispatcher.transfer_data(request) self.assertEqual( 'origin_check_wsh.py is called for /origin_check, p1' '\xff\x00', request.connection.written_data()) request = mock.MockRequest(connection=mock.MockConn('\xff\x00')) request.ws_resource = '/sub/plain' request.ws_protocol = None dispatcher.transfer_data(request) self.assertEqual( 'sub/plain_wsh.py is called for /sub/plain, None' '\xff\x00', request.connection.written_data()) request = mock.MockRequest(connection=mock.MockConn('\xff\x00')) request.ws_resource = '/sub/plain?' request.ws_protocol = None dispatcher.transfer_data(request) self.assertEqual( 'sub/plain_wsh.py is called for /sub/plain?, None' '\xff\x00', request.connection.written_data()) request = mock.MockRequest(connection=mock.MockConn('\xff\x00')) request.ws_resource = '/sub/plain?q=v' request.ws_protocol = None dispatcher.transfer_data(request) self.assertEqual( 'sub/plain_wsh.py is called for /sub/plain?q=v, None' '\xff\x00', request.connection.written_data())
def _create_request(request_def): conn = mock.MockConn('') conn.local_addr = ('0.0.0.0', request_def[0]) return mock.MockRequest( uri=request_def[1], headers_in=request_def[2], connection=conn)
def _create_request(request_def): data = '' if len(request_def) > 4: data = request_def[4] conn = mock.MockConn(data) conn.local_addr = ('0.0.0.0', request_def[0]) return mock.MockRequest(method=request_def[1], uri=request_def[2], headers_in=request_def[3], connection=conn)
def _create_blocking_request(): """Creates MockRequest. Data written to a MockRequest can be read out by calling request.connection.written_data(). """ req = mock.MockRequest(connection=mock.MockBlockingConn()) req.ws_version = common.VERSION_HYBI_LATEST stream_options = StreamOptions() req.ws_stream = Stream(req, stream_options) return req
def test_transfer_data_handler_exception(self): dispatcher = dispatch.Dispatcher(_TEST_HANDLERS_DIR, None) request = mock.MockRequest(connection=mock.MockConn('')) request.ws_resource = '/sub/exception_in_transfer' request.ws_protocol = 'p3' try: dispatcher.transfer_data(request) self.fail() except Exception, e: self.failUnless( str(e).find('Intentional') != -1, 'Unexpected exception: %s' % e)
def test_do_extra_handshake(self): dispatcher = dispatch.Dispatcher(_TEST_HANDLERS_DIR, None) request = mock.MockRequest() request.ws_resource = '/origin_check' request.ws_origin = 'http://example.com' dispatcher.do_extra_handshake(request) # Must not raise exception. request.ws_origin = 'http://bad.example.com' try: dispatcher.do_extra_handshake(request) self.fail('Could not catch HandshakeException with 403 status') except handshake.HandshakeException, e: self.assertEquals(403, e.status)
def test_transfer_data_no_handler(self): dispatcher = dispatch.Dispatcher(_TEST_HANDLERS_DIR, None) for resource in [ '/blank', '/sub/non_callable', '/sub/no_wsh_at_the_end', '/does/not/exist' ]: request = mock.MockRequest(connection=mock.MockConn('')) request.ws_resource = resource request.ws_protocol = 'p2' try: dispatcher.transfer_data(request) self.fail() except dispatch.DispatchException, e: self.failUnless(str(e).find('No handler') != -1) except Exception: self.fail()
def _create_request_from_rawdata(read_data, permessage_deflate_request=None): req = mock.MockRequest(connection=mock.MockConn(read_data)) req.ws_version = common.VERSION_HYBI_LATEST req.ws_extension_processors = [] processor = None if permessage_deflate_request is not None: processor = PerMessageDeflateExtensionProcessor( permessage_deflate_request) stream_options = StreamOptions() if processor is not None: _install_extension_processor(processor, req, stream_options) req.ws_stream = Stream(req, stream_options) return req
def _create_request_from_rawdata(read_data, deflate_stream=False, deflate_frame_request=None, perframe_compression_request=None, permessage_compression_request=None): req = mock.MockRequest(connection=mock.MockConn(''.join(read_data))) req.ws_version = common.VERSION_HYBI_LATEST stream_options = StreamOptions() stream_options.deflate_stream = deflate_stream req.ws_extension_processors = [] if deflate_frame_request is not None: processor = DeflateFrameExtensionProcessor(deflate_frame_request) _install_extension_processor(processor, req, stream_options) elif perframe_compression_request is not None: processor = PerFrameCompressionExtensionProcessor( perframe_compression_request) _install_extension_processor(processor, req, stream_options) elif permessage_compression_request is not None: processor = PerMessageCompressionExtensionProcessor( permessage_compression_request) _install_extension_processor(processor, req, stream_options) req.ws_stream = Stream(req, stream_options) return req
def _create_blocking_request_hixie75(): req = mock.MockRequest(connection=mock.MockBlockingConn()) req.ws_stream = StreamHixie75(req) return req
def _create_request_hixie75(read_data=''): req = mock.MockRequest(connection=mock.MockConn(read_data)) req.ws_stream = StreamHixie75(req) return req
def test_abort_transfer_data(self): dispatcher = dispatch.Dispatcher(_TEST_HANDLERS_DIR, None) request = mock.MockRequest() request.ws_resource = '/abort_by_user' self.assertRaises(handshake.AbortedByUserException, dispatcher.transfer_data, request)
def _create_request(request_def): conn = mock.MockConn(b'') return mock.MockRequest(method=request_def.method, uri=request_def.uri, headers_in=request_def.headers, connection=conn)