mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-02 10:46:06 -04:00
Implement handling of HTTP HEAD requests. (#7999)
This commit is contained in:
parent
2a89ce8cd4
commit
6812509807
3 changed files with 54 additions and 8 deletions
|
@ -157,6 +157,29 @@ class JsonResourceTests(unittest.TestCase):
|
|||
self.assertEqual(channel.json_body["error"], "Unrecognized request")
|
||||
self.assertEqual(channel.json_body["errcode"], "M_UNRECOGNIZED")
|
||||
|
||||
def test_head_request(self):
|
||||
"""
|
||||
JsonResource.handler_for_request gives correctly decoded URL args to
|
||||
the callback, while Twisted will give the raw bytes of URL query
|
||||
arguments.
|
||||
"""
|
||||
|
||||
def _callback(request, **kwargs):
|
||||
return 200, {"result": True}
|
||||
|
||||
res = JsonResource(self.homeserver)
|
||||
res.register_paths(
|
||||
"GET", [re.compile("^/_matrix/foo$")], _callback, "test_servlet",
|
||||
)
|
||||
|
||||
# The path was registered as GET, but this is a HEAD request.
|
||||
request, channel = make_request(self.reactor, b"HEAD", b"/_matrix/foo")
|
||||
render(request, res, self.reactor)
|
||||
|
||||
self.assertEqual(channel.result["code"], b"200")
|
||||
self.assertNotIn("body", channel.result)
|
||||
self.assertEqual(channel.headers.getRawHeaders(b"Content-Length"), [b"15"])
|
||||
|
||||
|
||||
class OptionsResourceTests(unittest.TestCase):
|
||||
def setUp(self):
|
||||
|
@ -255,7 +278,7 @@ class WrapHtmlRequestHandlerTests(unittest.TestCase):
|
|||
self.reactor = ThreadedMemoryReactorClock()
|
||||
|
||||
def test_good_response(self):
|
||||
def callback(request):
|
||||
async def callback(request):
|
||||
request.write(b"response")
|
||||
request.finish()
|
||||
|
||||
|
@ -275,7 +298,7 @@ class WrapHtmlRequestHandlerTests(unittest.TestCase):
|
|||
with the right location.
|
||||
"""
|
||||
|
||||
def callback(request, **kwargs):
|
||||
async def callback(request, **kwargs):
|
||||
raise RedirectException(b"/look/an/eagle", 301)
|
||||
|
||||
res = WrapHtmlRequestHandlerTests.TestResource()
|
||||
|
@ -295,7 +318,7 @@ class WrapHtmlRequestHandlerTests(unittest.TestCase):
|
|||
returned too
|
||||
"""
|
||||
|
||||
def callback(request, **kwargs):
|
||||
async def callback(request, **kwargs):
|
||||
e = RedirectException(b"/no/over/there", 304)
|
||||
e.cookies.append(b"session=yespls")
|
||||
raise e
|
||||
|
@ -312,3 +335,19 @@ class WrapHtmlRequestHandlerTests(unittest.TestCase):
|
|||
self.assertEqual(location_headers, [b"/no/over/there"])
|
||||
cookies_headers = [v for k, v in headers if k == b"Set-Cookie"]
|
||||
self.assertEqual(cookies_headers, [b"session=yespls"])
|
||||
|
||||
def test_head_request(self):
|
||||
"""A head request should work by being turned into a GET request."""
|
||||
|
||||
async def callback(request):
|
||||
request.write(b"response")
|
||||
request.finish()
|
||||
|
||||
res = WrapHtmlRequestHandlerTests.TestResource()
|
||||
res.callback = callback
|
||||
|
||||
request, channel = make_request(self.reactor, b"HEAD", b"/path")
|
||||
render(request, res, self.reactor)
|
||||
|
||||
self.assertEqual(channel.result["code"], b"200")
|
||||
self.assertNotIn("body", channel.result)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue