From 4aa6c5725137dc47e3baf4d9df94352e529fa3f4 Mon Sep 17 00:00:00 2001
From: Russell Keith-Magee <russell@keith-magee.com>
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 = """<?xml version="1.0" encoding="utf-8"?><library><book><title>Blink</title><author>Malcolm Gladwell</author></book></library>"""
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"""