def test_transport_handles_roundtrip(make_transport):
    transport = make_transport(state=1, content="socket.send(socket.recv())")

    request = Request('POST',
                      '/echo.sock',
                      body=StringIO(b"3::/echo.sock:ping"))
    transport.respond(request)
    transport.socket.tick()  # do it manually

    request = Request('GET', '/echo.sock')
    response = transport.respond(request)

    expected = FFFD + b"18" + FFFD + b"3::/echo.sock:ping"
    actual = response.body.next()
    assert actual == expected
Ejemplo n.º 2
0
 def serve_request(self, path):
     """Given an URL path, return response.
     """
     request = Request(uri=path)
     request.website = self
     response = self.handle_safely(request)
     return response
Ejemplo n.º 3
0
def test_intercept_socket_intercepts_transported():
    request = Request(uri="/foo.sock/1/websocket/46327hfjew3?foo=bar")
    gauntlet.intercept_socket(request)

    expected = ('/foo.sock', '1/websocket/46327hfjew3')
    actual = (request.line.uri.path.decoded, request.socket)
    assert actual == expected, actual
Ejemplo n.º 4
0
def test_intercept_socket_intercepts_handshake():
    request = Request(uri="/foo.sock/1")
    gauntlet.intercept_socket(request)

    expected = ('/foo.sock', '1')
    actual = (request.line.uri.path.decoded, request.socket)
    assert actual == expected, actual
def test_transport_can_minimally_respond(make_transport):
    transport = make_transport()
    request = Request()

    expected = Response
    actual = transport.respond(request).__class__
    assert actual is expected
def test_transport_starts_in_state_0(make_transport):
    transport = make_transport()
    request = Request()

    expected = 0
    actual = transport.state
    assert actual == expected
 def make_transport(content='', state=0):
     mk(('echo.sock.spt', content))
     socket = make_socket()
     transport = XHRPollingTransport(socket)
     transport.timeout = 0.05  # for testing, could screw up the test
     if state == 1:
         transport.respond(Request(uri='/echo.sock'))
     return transport
def test_transport_goes_to_state_1_after_first_request(make_transport):
    transport = make_transport()
    request = Request()
    transport.respond(request)

    expected = 1
    actual = transport.state
    assert actual == expected
def test_transport_POST_gives_data_to_socket(make_transport):
    transport = make_transport(state=1)

    request = Request('POST',
                      '/echo.sock',
                      body=StringIO(b'3::/echo.sock:Greetings, program!'))
    transport.respond(request)

    expected = deque(['Greetings, program!'])
    actual = transport.socket.incoming.queue
    assert actual == expected
def test_transport_GET_gets_data_from_socket(make_transport):
    transport = make_transport(state=1)
    message = Message.from_bytes(b"3:::Greetings, program!")
    transport.socket.outgoing.put(message)

    request = Request('GET')
    response = transport.respond(request)

    expected = FFFD + b'23' + FFFD + b'3:::Greetings, program!'
    actual = response.body.next()
    assert actual == expected
Ejemplo n.º 11
0
 def load_simplate(self, path, request=None, return_request_too=False):
     """Given an URL path, return a simplate (Resource) object.
     """
     if request is None:
         request = Request(uri=path)
     if not hasattr(request, 'website'):
         request.website = self
     self.do_inbound(request)
     resource = resources.get(request)
     if return_request_too:
         return resource, request
     else:
         return resource
Ejemplo n.º 12
0
def test_raw_is_raw():
    request = Request()
    expected = b"GET / HTTP/1.1\r\nHost: localhost\r\n\r\n"
    actual = request
    assert actual == expected
Ejemplo n.º 13
0
def test_extract_path_params_complex():
    request = Request(uri="/foo;a=1;b=2,3;c;a=2;b=4/bar;a=2,ab;b=1")
    actual = _extract_params(request.line.uri)
    expected = (['foo', 'bar'], [{'a':['1','2'], 'b':['2,3', '4'], 'c':['']}, {'a':[ '2,ab' ], 'b':['1']}])
    assert actual == expected
Ejemplo n.º 14
0
def test_path_params_api():
    request = Request(uri="/foo;a=1;b=2;b=3;c/bar;a=2,ab;b=1")
    parts, params = (['foo', 'bar'], [{'a':['1'], 'b':['2', '3'], 'c':['']}, {'a':[ '2,ab' ], 'b':['1']}])
    assert request.line.uri.path.parts == parts, request.line.uri.path.parts
    assert request.line.uri.path.parts[0].params == params[0]
    assert request.line.uri.path.parts[1].params == params[1]
Ejemplo n.º 15
0
def test_intercept_socket_protects_direct_access():
    request = Request(uri="/foo.sock")
    assert_raises(Response, gauntlet.intercept_socket, request)
Ejemplo n.º 16
0
def get_simplate_context(website, fs):
    request = Request()
    request.fs = fs
    request.website = website
    resource = resources.get(request)
    return {} if isinstance(resource, StaticResource) else resource.pages[0]
Ejemplo n.º 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
Ejemplo n.º 18
0
def test_intercept_socket_intercepts_transported():
    request = Request(uri="/foo.sock/1/websocket/46327hfjew3?foo=bar")
    actual = dispatcher.extract_socket_info(request.line.uri.path.decoded)
    expected = ('/foo.sock', '1/websocket/46327hfjew3')
    assert actual == expected
Ejemplo n.º 19
0
def test_extract_path_params_simple():
    request = Request(uri="/foo;a=1;b=2;c/bar;a=2;b=1")
    actual = _extract_params(request.line.uri)
    expected = (['foo', 'bar'], [{'a':['1'], 'b':['2'], 'c':['']}, {'a':['2'], 'b':['1']}])
    assert actual == expected
Ejemplo n.º 20
0
 def test_disallows_a_bunch_of_other_stuff(self):
     for disallowed in ('OPTIONS', 'TRACE', 'TRACK', 'PUT', 'DELETE'):
         request = Request(disallowed)
         response = raises(Response, security.only_allow_certain_methods,
                           request).value
         assert response.code == 405
Ejemplo n.º 21
0
def test_request_redirect_works_on_instance():
    request = Request()
    actual = raises(Response, request.redirect, '/').value.code
    assert actual == 302
Ejemplo n.º 22
0
def test_blank_by_default():
    assert_raises(AttributeError, lambda: Request().version)
Ejemplo n.º 23
0
def test_intercept_socket_protects_direct_access():
    request = Request(uri="/foo.sock")
    raises(Response, dispatcher.dispatch, request)
Ejemplo n.º 24
0
 def test_allows_certain_methods(self):
     for allowed in ('GEt', 'HEaD', 'PosT'):
         request = Request(allowed)
         assert security.only_allow_certain_methods(request) is None
Ejemplo n.º 25
0
def test_intercept_socket_intercepts_handshake():
    request = Request(uri="/foo.sock/1")
    actual = dispatcher.extract_socket_info(request.line.uri.path.decoded)
    expected = ('/foo.sock', '1')
    assert actual == expected
Ejemplo n.º 26
0
def make_request(filename='echo.sock'):
    request = Request(uri='/echo.sock')
    request.website = Website([])
    request.fs = fix(filename)
    return request
Ejemplo n.º 27
0
def test_extract_path_params_with_none():
    request = Request(uri="/foo/bar")
    actual = _extract_params(request.line.uri)
    expected = (['foo', 'bar'], [{}, {}])
    assert actual == expected