Exemple #1
0
def test_sockets_get_adds_channel(mk):
    mk(('echo.sock.spt', '[---]\n'))
    request = make_request()
    request.socket = '1/'

    try:
        sockets.get(request) # handshake

        expected = '/echo.sock'
        actual = sockets.__channels__['/echo.sock'].name
        assert actual == expected
    finally:
        sockets.__channels__['/echo.sock'].disconnect_all()
Exemple #2
0
    def handler(self, request):
        """Given an Aspen request, return an Aspen response.

        The default handler uses Resource subclasses to generate responses from
        simplates on the filesystem. See aspen/resources/__init__.py.

        You can monkey-patch this method to implement single-page web apps or
        other things in configure-aspen.py:

            from aspen import Response

            def greetings_program(website, request):
                return Response(200, "Greetings, program!")

            website.handler = greetings_program

        """
        self.hooks.inbound_early.run(request)
        self.check_auth(request)
        gauntlet.run(request)  # sets request.fs
        request.socket = sockets.get(request)
        self.hooks.inbound_late.run(request)

        # Look for a Socket.IO socket (http://socket.io/).
        if isinstance(request.socket, Response):  # handshake
            response = request.socket
            request.socket = None
        elif request.socket is None:  # non-socket
            request.resource = resources.get(request)
            response = request.resource.respond(request)
        else:  # socket
            response = request.socket.respond(request)
        return response
Exemple #3
0
    def handler(self, request):
        """Given an Aspen request, return an Aspen response.

        The default handler uses Resource subclasses to generate responses from
        simplates on the filesystem. See aspen/resources/__init__.py.

        You can monkey-patch this method to implement single-page web apps or
        other things in configure-aspen.py:

            from aspen import Response

            def greetings_program(website, request):
                return Response(200, "Greetings, program!")

            website.handler = greetings_program

        """
        self.hooks.inbound_early.run(request)
        gauntlet.run(request)  # sets request.fs
        request.socket = sockets.get(request)
        self.hooks.inbound_late.run(request)

        # Look for a Socket.IO socket (http://socket.io/).
        if isinstance(request.socket, Response):    # handshake
            response = request.socket
            request.socket = None
        elif request.socket is None:                # non-socket
            request.resource = resources.get(request)
            response = request.resource.respond(request)
        else:                                       # socket
            response = request.socket.respond(request)
        return response
Exemple #4
0
    def handle(self, request):
        """Given an Aspen request, return an Aspen response.

        Aspen uses Resource subclasses to generate responses. See
        aspen/resources/__init__.py.

        """
        try:
            try:
                self.copy_configuration_to(request)
                request.website = self

                self.hooks.run('inbound_early', request)
                gauntlet.run(request) # sets request.fs
                request.socket = sockets.get(request)
                self.hooks.run('inbound_late', request)

                # Look for a Socket.IO socket (http://socket.io/).
                if isinstance(request.socket, Response):    # handshake
                    response = request.socket
                    request.socket = None
                elif request.socket is None:                # non-socket
                    request.resource = resources.get(request)
                    response = request.resource.respond(request)
                else:                                       # socket
                    response = request.socket.respond(request)
            except:
                response = self.handle_error_nicely(request)
        except Response, response:
            # Grab the response object in the case where it was raised.  In the
            # case where it was returned, response is set in a try block above.
            pass
Exemple #5
0
 def run_inbound(self, request):
     """Factored out to support testing.
     """
     self.hooks.inbound_early.run(request)
     self.check_auth(request)
     gauntlet.run(request)  # sets request.fs
     request.socket = sockets.get(request)
     self.hooks.inbound_late.run(request)
Exemple #6
0
def test_channel_survives_transportation():
    mk(('echo.sock', ''))
    request = make_request()
    request.socket = '1/'
    response = sockets.get(request)  # handshake
    sid = response.body.split(':')[0]
    request.socket = '1/xhr-polling/' + sid
    transport = sockets.get(request)  # transport

    try:
        expected = '/echo.sock'
        actual = sockets.__channels__['/echo.sock'].name
        assert actual == expected, actual

        expected = transport.socket.channel
        actual = sockets.__channels__['/echo.sock']
        assert actual is expected, actual
    finally:
        transport.socket.disconnect()
def test_channel_survives_transportation(harness):
    harness.fs.www.mk(('echo.sock.spt', '[---]\n'))
    request = harness.make_socket_request()
    request.socket = '1/'
    response = sockets.get(request) # handshake
    sid = response.body.split(':')[0]
    request.socket = '1/xhr-polling/' + sid
    transport = sockets.get(request)   # transport

    try:
        expected = '/echo.sock'
        actual = sockets.__channels__['/echo.sock'].name
        assert actual == expected

        expected = transport.socket.channel
        actual = sockets.__channels__['/echo.sock']
        assert actual is expected
    finally:
        transport.socket.disconnect()
Exemple #8
0
def test_channel_survives_transportation():
    mk(('echo.sock', ''))
    request = make_request()
    request.socket = '1/'
    response = sockets.get(request) # handshake
    sid = response.body.split(':')[0]
    request.socket = '1/xhr-polling/' + sid
    transport = sockets.get(request)   # transport

    try:
        expected = '/echo.sock'
        actual = sockets.__channels__['/echo.sock'].name
        assert actual == expected, actual

        expected = transport.socket.channel
        actual = sockets.__channels__['/echo.sock']
        assert actual is expected, actual
    finally:
        transport.socket.disconnect()
Exemple #9
0
def test_sockets_get_adds_channel():
    mk(('echo.sock', ''))
    request = make_request()
    request.socket = '1/'
    try:
        response = sockets.get(request) # handshake

        expected = '/echo.sock'
        actual = sockets.__channels__['/echo.sock'].name
        assert actual == expected, actual
    finally:
        sockets.__channels__['/echo.sock'].disconnect_all()
Exemple #10
0
def test_sockets_get_adds_channel():
    mk(('echo.sock', ''))
    request = make_request()
    request.socket = '1/'
    try:
        response = sockets.get(request)  # handshake

        expected = '/echo.sock'
        actual = sockets.__channels__['/echo.sock'].name
        assert actual == expected, actual
    finally:
        sockets.__channels__['/echo.sock'].disconnect_all()
Exemple #11
0
def get_response_for_socket(request):
    socket = sockets.get(request)
    if socket is None:
        # This is not a socket request.
        response = None
    elif isinstance(socket, Response):
        # Actually, this is a handshake request.
        response = socket
    else:
        assert isinstance(socket, Socket)  # sanity check
        # This is a socket ... request?
        response = socket.respond(request)
    return {'response': response}
Exemple #12
0
def load_simplate(path):
    """Given an URL path, return resource.
    """
    request = StubRequest(path)
    request.website = test_website

    # XXX HACK - aspen.website should be refactored
    from aspen import dispatcher, sockets
    test_website.hooks.run('inbound_early', request)
    dispatcher.dispatch(request)  # sets request.fs
    request.socket = sockets.get(request)
    test_website.hooks.run('inbound_late', request)

    return resources.get(request)
Exemple #13
0
def load_simplate(path):
    """Given an URL path, return resource.
    """
    request = StubRequest(path)
    request.website = test_website

    # XXX HACK - aspen.website should be refactored
    from aspen import gauntlet, sockets
    test_website.hooks.inbound_early.run(request)
    gauntlet.run(request)  # sets request.fs
    request.socket = sockets.get(request)
    test_website.hooks.inbound_late.run(request)

    return resources.get(request)
Exemple #14
0
def load_request(path):
    """Given an URL path, return request.
    """
    request = StubRequest(path)
    request.website = test_website

    # XXX HACK - aspen.website should be refactored
    from aspen import dispatcher, sockets
    test_website.hooks.run('inbound_early', request)
    dispatcher.dispatch(request)  # sets request.fs
    request.socket = sockets.get(request)
    test_website.hooks.run('inbound_late', request)

    return request
Exemple #15
0
 def set_socket(self, request):
     request.socket = sockets.get(request)
Exemple #16
0
def test_sockets_get_nonsock_returns_None():
    request = Request()
    request.socket = None
    expected = None
    actual = sockets.get(request)
    assert actual is expected, actual
Exemple #17
0
def test_sockets_get_nonsock_returns_None():
    request = Request()
    request.socket = None
    expected = None
    actual = sockets.get(request)
    assert actual is expected, actual
Exemple #18
0
 def set_socket(self, request):
     request.socket = sockets.get(request)