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()
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
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
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
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)
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()
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()
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}
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)
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)
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
def set_socket(self, request): request.socket = sockets.get(request)
def test_sockets_get_nonsock_returns_None(): request = Request() request.socket = None expected = None actual = sockets.get(request) assert actual is expected, actual