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'/')))
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))
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
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))
def test_unrooted(self): """ Unrooted path. """ self.assertThat(url_path(URL.from_text(u'foo/bar')), Equals(u'foo/bar'))
def test_unrooted_empty(self): """ Unrooted empty path. """ self.assertThat(url_path(URL.from_text(u'')), Equals(u''))