Exemplo n.º 1
0
    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())
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
 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()
Exemplo n.º 8
0
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
Exemplo n.º 9
0
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
Exemplo n.º 10
0
def _create_blocking_request_hixie75():
    req = mock.MockRequest(connection=mock.MockBlockingConn())
    req.ws_stream = StreamHixie75(req)
    return req
Exemplo n.º 11
0
def _create_request_hixie75(read_data=''):
    req = mock.MockRequest(connection=mock.MockConn(read_data))
    req.ws_stream = StreamHixie75(req)
    return req
Exemplo n.º 12
0
 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)
Exemplo n.º 13
0
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)