Log message for revision 106845: Coverage for __str__ (not complete). Changed: U Zope/branches/tseaver-fix_wsgi/src/ZPublisher/HTTPResponse.py U Zope/branches/tseaver-fix_wsgi/src/ZPublisher/tests/testHTTPResponse.py
-=- Modified: Zope/branches/tseaver-fix_wsgi/src/ZPublisher/HTTPResponse.py =================================================================== --- Zope/branches/tseaver-fix_wsgi/src/ZPublisher/HTTPResponse.py 2009-12-22 04:01:11 UTC (rev 106844) +++ Zope/branches/tseaver-fix_wsgi/src/ZPublisher/HTTPResponse.py 2009-12-22 04:45:49 UTC (rev 106845) @@ -924,9 +924,9 @@ append = chunks.append # status header must come first. - append("Status: %s" % headers.get('status', '200 OK')) + append("Status: %s" % headers.get('status', '200 OK')) # WTF append("X-Powered-By: Zope (www.zope.org), Python (www.python.org)") - if headers.has_key('status'): + if headers.has_key('status'): # WTF del headers['status'] for key, value in headers.items(): if key.lower() == key: @@ -942,7 +942,8 @@ chunks.extend(self._cookie_list()) for key, value in self.accumulated_headers: append("%s: %s" % (key, value)) - append(body) # WTF? + append('') # RFC 2616 mandates empty line between headers and payload + append(body) return '\r\n'.join(chunks) def write(self,data): 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:01:11 UTC (rev 106844) +++ Zope/branches/tseaver-fix_wsgi/src/ZPublisher/tests/testHTTPResponse.py 2009-12-22 04:45:49 UTC (rev 106845) @@ -911,9 +911,113 @@ #TODO - # def test_exception* - # def test__cookie_list ? - # def test___str__* + # def test_exception_* WAAAAAA! + + #TODO + def test___str__empty(self): + response = self._makeOne() + 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: 0') + self.assertEqual(lines[3], '') + self.assertEqual(lines[4], '') + + def test___str__after_setHeader(self): + response = self._makeOne() + response.setHeader('X-Consistency', 'Foolish') + 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/') + result = str(response) + lines = result.split('\r\n') + self.assertEqual(len(lines), 6) + self.assertEqual(lines[0], 'Status: 302 Moved Temporarily') + 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], 'Location: http://example.com/') + self.assertEqual(lines[4], '') + self.assertEqual(lines[5], '') + + def test___str__after_setCookie_appendCookie(self): + response = self._makeOne() + response.setCookie('foo', 'bar', path='/') + response.appendCookie('foo', 'baz') + 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], 'Set-Cookie: foo="bar%3Abaz"; ' + 'Path=/') + self.assertEqual(lines[4], '') + self.assertEqual(lines[5], '') + + def test___str__after_expireCookie(self): + response = self._makeOne() + response.expireCookie('qux', path='/') + 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], 'Set-Cookie: qux="deleted"; ' + 'Path=/; ' + 'Expires=Wed, 31-Dec-97 23:59:59 GMT; ' + 'Max-Age=0') + self.assertEqual(lines[4], '') + self.assertEqual(lines[5], '') + + def test___str__after_addHeader(self): + response = self._makeOne() + response.addHeader('X-Consistency', 'Foolish') + response.addHeader('X-Consistency', 'Oatmeal') + result = str(response) + lines = result.split('\r\n') + self.assertEqual(len(lines), 7) + 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], 'X-Consistency: Oatmeal') + self.assertEqual(lines[5], '') + self.assertEqual(lines[6], '') + + def test___str__w_body(self): + response = self._makeOne() + response.setBody('BLAH') + 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: 4') + self.assertEqual(lines[3], + 'Content-Type: text/plain; charset=iso-8859-15') + self.assertEqual(lines[4], '') + self.assertEqual(lines[5], 'BLAH') + # def test_write_already_wrote # def test_write_not_already_wrote _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org https://mail.zope.org/mailman/listinfo/zope-checkins