[Zope-Checkins] SVN: Zope/branches/tseaver-fix_wsgi/src/ZPublisher/tests/testHTTPResponse.py Finish coverage for __str__.

Tres Seaver tseaver at palladion.com
Mon Dec 21 23:53:11 EST 2009


Log message for revision 106846:
  Finish coverage for __str__.

Changed:
  U   Zope/branches/tseaver-fix_wsgi/src/ZPublisher/tests/testHTTPResponse.py

-=-
Modified: Zope/branches/tseaver-fix_wsgi/src/ZPublisher/tests/testHTTPResponse.py
===================================================================
--- Zope/branches/tseaver-fix_wsgi/src/ZPublisher/tests/testHTTPResponse.py	2009-12-22 04:45:49 UTC (rev 106845)
+++ Zope/branches/tseaver-fix_wsgi/src/ZPublisher/tests/testHTTPResponse.py	2009-12-22 04:53:10 UTC (rev 106846)
@@ -913,7 +913,11 @@
 
     # def test_exception_* WAAAAAA!
 
-    #TODO
+    def test___str__already_wrote(self):
+        response = self._makeOne()
+        response._wrote = True
+        self.assertEqual(str(response), '')
+
     def test___str__empty(self):
         response = self._makeOne()
         result = str(response)
@@ -926,9 +930,38 @@
         self.assertEqual(lines[3], '')
         self.assertEqual(lines[4], '')
 
+    def test___str__existing_content_length(self):
+        # The application can break clients by setting a bogus length;  we
+        # don't do anything to stop that.
+        response = self._makeOne()
+        response.setHeader('Content-Length', 42)
+        result = str(response)
+        lines = result.split('\r\n')
+        self.assertEqual(len(lines), 5)
+        self.assertEqual(lines[0], 'Status: 200 OK')
+        self.assertEqual(lines[1], 'X-Powered-By: Zope (www.zope.org), '
+                                   'Python (www.python.org)')
+        self.assertEqual(lines[2], 'Content-Length: 42')
+        self.assertEqual(lines[3], '')
+        self.assertEqual(lines[4], '')
+
+    def test___str__existing_transfer_encoding(self):
+        # If 'Transfer-Encoding' is set, don't force 'Content-Length'.
+        response = self._makeOne()
+        response.setHeader('Transfer-Encoding', 'slurry')
+        result = str(response)
+        lines = result.split('\r\n')
+        self.assertEqual(len(lines), 5)
+        self.assertEqual(lines[0], 'Status: 200 OK')
+        self.assertEqual(lines[1], 'X-Powered-By: Zope (www.zope.org), '
+                                   'Python (www.python.org)')
+        self.assertEqual(lines[2], 'Transfer-Encoding: slurry')
+        self.assertEqual(lines[3], '')
+        self.assertEqual(lines[4], '')
+
     def test___str__after_setHeader(self):
         response = self._makeOne()
-        response.setHeader('X-Consistency', 'Foolish')
+        response.setHeader('x-consistency', 'Foolish')
         result = str(response)
         lines = result.split('\r\n')
         self.assertEqual(len(lines), 6)
@@ -940,6 +973,20 @@
         self.assertEqual(lines[4], '')
         self.assertEqual(lines[5], '')
 
+    def test___str__after_setHeader_literal(self):
+        response = self._makeOne()
+        response.setHeader('X-consistency', 'Foolish', literal=True)
+        result = str(response)
+        lines = result.split('\r\n')
+        self.assertEqual(len(lines), 6)
+        self.assertEqual(lines[0], 'Status: 200 OK')
+        self.assertEqual(lines[1], 'X-Powered-By: Zope (www.zope.org), '
+                                   'Python (www.python.org)')
+        self.assertEqual(lines[2], 'Content-Length: 0')
+        self.assertEqual(lines[3], 'X-consistency: Foolish')
+        self.assertEqual(lines[4], '')
+        self.assertEqual(lines[5], '')
+
     def test___str__after_redirect(self):
         response = self._makeOne()
         response.redirect('http://example.com/')
@@ -1018,6 +1065,7 @@
         self.assertEqual(lines[4], '')
         self.assertEqual(lines[5], 'BLAH')
 
+    # TODO
     # def test_write_already_wrote
     # def test_write_not_already_wrote
 



More information about the Zope-Checkins mailing list