From 4aa6c5725137dc47e3baf4d9df94352e529fa3f4 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Sat, 12 Jul 2008 06:16:42 +0000 Subject: [PATCH] Fixed #7583 -- Corrected the testing docs that referred to the defunct headers attribute of the response. Added a test case to validate (and document) the new behavior. Thanks to Malcolm for the report. git-svn-id: http://code.djangoproject.com/svn/django/trunk@7900 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/testing.txt | 6 ++++-- tests/modeltests/test_client/models.py | 8 +++++++- tests/modeltests/test_client/urls.py | 1 + tests/modeltests/test_client/views.py | 6 ++++++ 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/docs/testing.txt b/docs/testing.txt index 0b18545efb..37f3f7f730 100644 --- a/docs/testing.txt +++ b/docs/testing.txt @@ -600,8 +600,6 @@ Specifically, a ``Response`` object has the following attributes: ``context`` will be a list of ``Context`` objects, in the order in which they were rendered. - ``headers`` The HTTP headers of the response. This is a dictionary. - ``request`` The request data that stimulated the response. ``status_code`` The HTTP status of the response, as an integer. See @@ -619,6 +617,10 @@ Specifically, a ``Response`` object has the following attributes: which they were rendered. =============== ========================================================== +You can also use dictionary syntax on the response object to query the value +of any settings in the HTTP headers. For example, you could determine the +content type of a response using ``response['Content-Type']``. + .. _RFC2616: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html .. _template inheritance: ../templates/#template-inheritance diff --git a/tests/modeltests/test_client/models.py b/tests/modeltests/test_client/models.py index 1a6e1bdc18..3797bf2d52 100644 --- a/tests/modeltests/test_client/models.py +++ b/tests/modeltests/test_client/models.py @@ -70,7 +70,13 @@ class ClientTest(TestCase): self.assertEqual(response.context['data'], '37') self.assertEqual(response.template.name, 'POST Template') self.failUnless('Data received' in response.content) - + + def test_response_headers(self): + "Check the value of HTTP headers returned in a response" + response = self.client.get("/test_client/header_view/") + + self.assertEquals(response['X-DJANGO-TEST'], 'Slartibartfast') + def test_raw_post(self): "POST raw data (with a content type) to a view" test_doc = """BlinkMalcolm Gladwell""" diff --git a/tests/modeltests/test_client/urls.py b/tests/modeltests/test_client/urls.py index 09ee7eaf34..0e511d7360 100644 --- a/tests/modeltests/test_client/urls.py +++ b/tests/modeltests/test_client/urls.py @@ -5,6 +5,7 @@ import views urlpatterns = patterns('', (r'^get_view/$', views.get_view), (r'^post_view/$', views.post_view), + (r'^header_view/$', views.view_with_header), (r'^raw_post_view/$', views.raw_post_view), (r'^redirect_view/$', views.redirect_view), (r'^permanent_redirect_view/$', redirect_to, { 'url': '/test_client/get_view/' }), diff --git a/tests/modeltests/test_client/views.py b/tests/modeltests/test_client/views.py index 3f4a54c5bd..f4eab6462d 100644 --- a/tests/modeltests/test_client/views.py +++ b/tests/modeltests/test_client/views.py @@ -32,6 +32,12 @@ def post_view(request): return HttpResponse(t.render(c)) +def view_with_header(request): + "A view that has a custom header" + response = HttpResponse() + response['X-DJANGO-TEST'] = 'Slartibartfast' + return response + def raw_post_view(request): """A view which expects raw XML to be posted and returns content extracted from the XML"""