mirror of
https://github.com/django/daphne.git
synced 2024-11-22 07:56:34 +03:00
d68461920f
* Fix: Always call Request.write() The spec says 'content' is an optional key, defaulting to b''. But before this commit, if 'content' wasn't specified, Request.write() was not called. In conjunction with setting 'more_content' to True, this would result in nothing being written on the transport. If 'content' was set to b'' instead, the HTTP preamble and any headers were written as expected. That smells like a bug, so I'm making sure we're always calling Request.write(). * Require status key in first message to response channel Previous to this commit, it was possible to not pass in a 'status' key. This would result in any passed in headers being ignored as well. Instead of relying on user data ('status' being present or not), this commit now enforces that the first message to a response channel is indead a HTTP Response-style message, and hence contains status. It will complain loudly if that isn't the case. * Helper for getting HTTP Response for a given channel message To test Daphne's message-to-HTTP part, we need an easy way to fetch the HTTP response for a given response channel message. I borrowed the approach from Andrew's existing code. I feel like we might be able to do with less scaffolding at some point, but didn't have time to investigate. It's good enough for now. * Add assert method to check a response for spec conformance Similarly to the method for checking HTTP requests for spec conformance, we're adding a method to do the same for HTTP responses. This one is a bit less exciting because we're testing raw HTTP responses. * Add Hypothesis tests for HTTP responses Similarly to what I did for HTTP requests, this commit adds a couple test that try to check different parts of the ASGI spec. Because going from message to HTTP response is more straightforward than going from HTTP request to channel message, there's not a whole lot going on here. |
||
---|---|---|
.. | ||
tests | ||
twisted/plugins | ||
__init__.py | ||
access.py | ||
cli.py | ||
http_protocol.py | ||
server.py | ||
utils.py | ||
ws_protocol.py |