diff options
| author | Tim Graham <timograham@gmail.com> | 2016-04-25 07:56:07 -0400 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-04-25 07:56:07 -0400 |
| commit | bb0b4b705b508451567bcada9106b91b8fca9e86 (patch) | |
| tree | e7239192a52349d084f621d7bf6ffe656447de80 /django/test | |
| parent | bd145e7209a0e628cced10384bd6f62d65c0f211 (diff) | |
Fixed #26052 -- Moved conditional_content_removal() processing to the test client.
Diffstat (limited to 'django/test')
| -rw-r--r-- | django/test/client.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/django/test/client.py b/django/test/client.py index 8349a902fa..166e6ef877 100644 --- a/django/test/client.py +++ b/django/test/client.py @@ -92,6 +92,26 @@ def closing_iterator_wrapper(iterable, close): request_finished.connect(close_old_connections) +def conditional_content_removal(request, response): + """ + Simulate the behavior of most Web servers by removing the content of + responses for HEAD requests, 1xx, 204, and 304 responses. Ensures + compliance with RFC 2616, section 4.3. + """ + if 100 <= response.status_code < 200 or response.status_code in (204, 304): + if response.streaming: + response.streaming_content = [] + else: + response.content = b'' + response['Content-Length'] = '0' + if request.method == 'HEAD': + if response.streaming: + response.streaming_content = [] + else: + response.content = b'' + return response + + class ClientHandler(BaseHandler): """ A HTTP Handler that can be used for testing purposes. Uses the WSGI @@ -120,6 +140,10 @@ class ClientHandler(BaseHandler): # Request goes through middleware. response = self.get_response(request) + + # Simulate behaviors of most Web servers. + conditional_content_removal(request, response) + # Attach the originating request to the response so that it could be # later retrieved. response.wsgi_request = request |
