Ejemplo n.º 1
0
 def test_rooted_empty(self):
     """
     Rooted empty path.
     """
     self.assertThat([
         url_path(URL.from_text(u'http://example.com/')),
         url_path(URL.from_text(u'/'))
     ], AllMatch(Equals(u'/')))
Ejemplo n.º 2
0
def _nevow_request_to_request_map(req):
    """
    Convert a Nevow request object into an immutable request map.
    """
    headers = req.requestHeaders
    content_type, character_encoding = _get_content_type(headers)
    iri = URL.from_text(req.uri.decode('utf-8')).to_iri()
    host = _get_first_header(headers, b'host').decode('utf-8')
    scheme = u'https' if req.isSecure() else u'http'
    if u':' in host:
        host, port = host.split(u':', 1)
        port = int(port)
    else:
        port = {u'https': 443, u'http': 80}.get(scheme)
    return m(
        body=req.content,
        content_type=content_type,
        content_length=_get_first_header(headers, b'content-length'),
        character_encoding=character_encoding,
        headers=freeze(dict(headers.getAllRawHeaders())),
        remote_addr=req.getClientIP(),
        request_method=req.method,
        server_name=host,
        server_port=port,
        scheme=scheme,
        #ssl_client_cert=XXX,
        uri=iri,
        #query_string
        path_info=url_path(iri),
        protocol=getattr(req, 'clientproto', None))
Ejemplo n.º 3
0
def fake_nevow_request(method='GET',
                       body=b'',
                       is_secure=False,
                       uri=b'http://example.com/one',
                       request_headers=None,
                       Request=NevowRequest):
    """
    Create a fake `NevowRequest` instance for the purposes of testing.
    """
    uri = URL.from_text(uri.decode('utf-8')).to_uri()
    channel = DummyChannel()
    if is_secure:
        channel.transport = DummyChannel.SSL()
    request = Request(channel=channel)
    request.method = method
    request.uri = url_path(uri)
    request.clientproto = b'HTTP/1.1'
    request.client = channel.transport.getPeer()
    content_length = len(body)
    request.requestHeaders.setRawHeaders('host',
                                         [uri.authority().encode('utf-8')])
    request.requestHeaders.setRawHeaders('content-length', [content_length])
    if request_headers:
        for k, v in request_headers.items():
            request.requestHeaders.setRawHeaders(k, v)
    request.gotLength(content_length)
    request.content.write(body)
    request.content.seek(0)
    return request
Ejemplo n.º 4
0
def basic_request(method=route.GET, body=b'', uri=b'http://example.com/'):
    """
    Construct a suitable ``REQUEST`` context value.
    """
    uri = URL.from_text(uri).to_uri()
    return m(body=BytesIO(body),
             request_method=method,
             content_type=u'text/plain',
             character_encoding=u'utf-8',
             headers=m(),
             scheme=uri.scheme,
             path_info=url_path(uri))
Ejemplo n.º 5
0
 def test_unrooted(self):
     """
     Unrooted path.
     """
     self.assertThat(url_path(URL.from_text(u'foo/bar')),
                     Equals(u'foo/bar'))
Ejemplo n.º 6
0
 def test_unrooted_empty(self):
     """
     Unrooted empty path.
     """
     self.assertThat(url_path(URL.from_text(u'')), Equals(u''))