mirror of
https://github.com/django/daphne.git
synced 2024-11-10 18:16:34 +03:00
Fix header name, add test
This commit is contained in:
parent
cdafec588c
commit
0ebfea94a8
|
@ -30,11 +30,11 @@ Root Path (SCRIPT_NAME)
|
||||||
In order to set the root path for Daphne, which is the equivalent of the
|
In order to set the root path for Daphne, which is the equivalent of the
|
||||||
WSGI ``SCRIPT_NAME`` setting, you have two options:
|
WSGI ``SCRIPT_NAME`` setting, you have two options:
|
||||||
|
|
||||||
* Pass a header value ``DAPHNE_ROOT_PATH``, with the desired root path as a
|
* Pass a header value ``Daphne-Root-Path``, with the desired root path as a
|
||||||
URLencoded ASCII value
|
URLencoded ASCII value. This header will not be passed down to applications.
|
||||||
|
|
||||||
* Set the ``--root-path`` commandline option with the desired root path as a
|
* Set the ``--root-path`` commandline option with the desired root path as a
|
||||||
URLencoded ASCII value
|
URLencoded ASCII value.
|
||||||
|
|
||||||
The header takes precedence if both are set. As with ``SCRIPT_ALIAS``, the value
|
The header takes precedence if both are set. As with ``SCRIPT_ALIAS``, the value
|
||||||
should start with a slash, but not end with one; for example::
|
should start with a slash, but not end with one; for example::
|
||||||
|
|
|
@ -117,7 +117,7 @@ class WebRequest(http.Request):
|
||||||
if b"_" in name:
|
if b"_" in name:
|
||||||
continue
|
continue
|
||||||
for value in values:
|
for value in values:
|
||||||
if name.lower() == "daphne_root_path":
|
if name.lower() == "daphne-root-path":
|
||||||
self.root_path = self.unquote(value)
|
self.root_path = self.unquote(value)
|
||||||
else:
|
else:
|
||||||
self.clean_headers.append((name.lower(), value))
|
self.clean_headers.append((name.lower(), value))
|
||||||
|
|
|
@ -51,3 +51,18 @@ class TestHTTPProtocol(TestCase):
|
||||||
)
|
)
|
||||||
# Make sure that comes back right on the protocol
|
# Make sure that comes back right on the protocol
|
||||||
self.assertEqual(self.tr.value(), b"HTTP/1.1 201 Created\r\nTransfer-Encoding: chunked\r\nX-Test: Boom!\r\n\r\n6\r\nOH HAI\r\n0\r\n\r\n")
|
self.assertEqual(self.tr.value(), b"HTTP/1.1 201 Created\r\nTransfer-Encoding: chunked\r\nX-Test: Boom!\r\n\r\n6\r\nOH HAI\r\n0\r\n\r\n")
|
||||||
|
|
||||||
|
def test_root_path_header(self):
|
||||||
|
"""
|
||||||
|
Tests root path header handling
|
||||||
|
"""
|
||||||
|
# Send a simple request to the protocol
|
||||||
|
self.proto.dataReceived(
|
||||||
|
b"GET /te%20st-%C3%A0/?foo=bar HTTP/1.1\r\n" +
|
||||||
|
b"Host: somewhere.com\r\n" +
|
||||||
|
b"Daphne-Root-Path: /foobar%20/bar\r\n" +
|
||||||
|
b"\r\n"
|
||||||
|
)
|
||||||
|
# Get the resulting message off of the channel layer, check root_path
|
||||||
|
_, message = self.channel_layer.receive_many(["http.request"])
|
||||||
|
self.assertEqual(message['root_path'], "/foobar /bar")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user