diff options
author | Michael Merickel <michael@merickel.org> | 2022-04-26 23:16:08 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-26 23:16:08 -0500 |
commit | 3066fdd7d558bbd0023b7885900419483251a0f8 (patch) | |
tree | 14a2de14b5b11b1ee50e9740a019692291761aa8 /tests/test_functional.py | |
parent | 603d2c12ce09fcd1be0b7a5734b4fca339820286 (diff) | |
parent | 4467d76725998d921c3e550479a88eca367bccc6 (diff) | |
download | waitress-3066fdd7d558bbd0023b7885900419483251a0f8.tar.gz |
Merge pull request #378 from Pylons/bugfix/expose_tracebacks-encode-error
Bugfix: expose_tracebacks encode error
Diffstat (limited to 'tests/test_functional.py')
-rw-r--r-- | tests/test_functional.py | 64 |
1 files changed, 59 insertions, 5 deletions
diff --git a/tests/test_functional.py b/tests/test_functional.py index 60eb24a..1dfd889 100644 --- a/tests/test_functional.py +++ b/tests/test_functional.py @@ -359,7 +359,7 @@ class EchoTests: sorted(headers.keys()), ["connection", "content-length", "content-type", "date", "server"], ) - self.assertEqual(headers["content-type"], "text/plain") + self.assertEqual(headers["content-type"], "text/plain; charset=utf-8") # connection has been closed self.send_check_error(to_send) self.assertRaises(ConnectionClosed, read_http, fp) @@ -381,7 +381,7 @@ class EchoTests: sorted(headers.keys()), ["connection", "content-length", "content-type", "date", "server"], ) - self.assertEqual(headers["content-type"], "text/plain") + self.assertEqual(headers["content-type"], "text/plain; charset=utf-8") # connection has been closed self.send_check_error(to_send) self.assertRaises(ConnectionClosed, read_http, fp) @@ -403,7 +403,7 @@ class EchoTests: sorted(headers.keys()), ["connection", "content-length", "content-type", "date", "server"], ) - self.assertEqual(headers["content-type"], "text/plain") + self.assertEqual(headers["content-type"], "text/plain; charset=utf-8") # connection has been closed self.send_check_error(to_send) self.assertRaises(ConnectionClosed, read_http, fp) @@ -428,7 +428,7 @@ class EchoTests: sorted(headers.keys()), ["connection", "content-length", "content-type", "date", "server"], ) - self.assertEqual(headers["content-type"], "text/plain") + self.assertEqual(headers["content-type"], "text/plain; charset=utf-8") # connection has been closed self.send_check_error(to_send) self.assertRaises(ConnectionClosed, read_http, fp) @@ -1121,7 +1121,7 @@ class TooLargeTests: self.assertline(line, "413", "Request Entity Too Large", "HTTP/1.1") cl = int(headers["content-length"]) self.assertEqual(cl, len(response_body)) - self.assertEqual(headers["content-type"], "text/plain") + self.assertEqual(headers["content-type"], "text/plain; charset=utf-8") # connection has been closed self.send_check_error(to_send) self.assertRaises(ConnectionClosed, read_http, fp) @@ -1269,6 +1269,49 @@ class InternalServerErrorTests: self.assertRaises(ConnectionClosed, read_http, fp) +class InternalServerErrorTestsWithTraceback: + def setUp(self): + from tests.fixtureapps import error_traceback + + self.start_subprocess(error_traceback.app, expose_tracebacks=True) + + def tearDown(self): + self.stop_subprocess() + + def test_expose_tracebacks_http_10(self): + to_send = b"GET / HTTP/1.0\r\n\r\n" + self.connect() + self.sock.send(to_send) + with self.sock.makefile("rb", 0) as fp: + line, headers, response_body = read_http(fp) + self.assertline(line, "500", "Internal Server Error", "HTTP/1.0") + cl = int(headers["content-length"]) + self.assertEqual(cl, len(response_body)) + self.assertTrue(response_body.startswith(b"Internal Server Error")) + self.assertEqual(headers["connection"], "close") + # connection has been closed + self.send_check_error(to_send) + self.assertRaises(ConnectionClosed, read_http, fp) + + def test_expose_tracebacks_http_11(self): + to_send = b"GET / HTTP/1.1\r\n\r\n" + self.connect() + self.sock.send(to_send) + with self.sock.makefile("rb", 0) as fp: + line, headers, response_body = read_http(fp) + self.assertline(line, "500", "Internal Server Error", "HTTP/1.1") + cl = int(headers["content-length"]) + self.assertEqual(cl, len(response_body)) + self.assertTrue(response_body.startswith(b"Internal Server Error")) + self.assertEqual( + sorted(headers.keys()), + ["connection", "content-length", "content-type", "date", "server"], + ) + # connection has been closed + self.send_check_error(to_send) + self.assertRaises(ConnectionClosed, read_http, fp) + + class FileWrapperTests: def setUp(self): from tests.fixtureapps import filewrapper @@ -1538,6 +1581,12 @@ class TcpInternalServerErrorTests( pass +class TcpInternalServerErrorTestsWithTraceback( + InternalServerErrorTestsWithTraceback, TcpTests, unittest.TestCase +): + pass + + class TcpFileWrapperTests(FileWrapperTests, TcpTests, unittest.TestCase): pass @@ -1604,6 +1653,11 @@ if hasattr(socket, "AF_UNIX"): ): pass + class UnixInternalServerErrorTestsWithTraceback( + InternalServerErrorTestsWithTraceback, UnixTests, unittest.TestCase + ): + pass + class UnixFileWrapperTests(FileWrapperTests, UnixTests, unittest.TestCase): pass |