diff options
author | Florian Apolloner <florian@apolloner.eu> | 2013-02-26 09:53:47 +0100 |
---|---|---|
committer | Florian Apolloner <florian@apolloner.eu> | 2013-02-26 14:36:57 +0100 |
commit | 89f40e36246100df6a11316c31a76712ebc6c501 (patch) | |
tree | 6e65639683ddaf2027908d1ecb1739e0e2ff853b /tests/builtin_server | |
parent | b3d2ccb5bfbaf6e7fe1f98843baaa48c35a70950 (diff) | |
download | django-89f40e36246100df6a11316c31a76712ebc6c501.tar.gz |
Merged regressiontests and modeltests into the test root.
Diffstat (limited to 'tests/builtin_server')
-rw-r--r-- | tests/builtin_server/__init__.py | 0 | ||||
-rw-r--r-- | tests/builtin_server/models.py | 0 | ||||
-rw-r--r-- | tests/builtin_server/tests.py | 55 |
3 files changed, 55 insertions, 0 deletions
diff --git a/tests/builtin_server/__init__.py b/tests/builtin_server/__init__.py new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tests/builtin_server/__init__.py diff --git a/tests/builtin_server/models.py b/tests/builtin_server/models.py new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tests/builtin_server/models.py diff --git a/tests/builtin_server/tests.py b/tests/builtin_server/tests.py new file mode 100644 index 0000000000..041bb3c319 --- /dev/null +++ b/tests/builtin_server/tests.py @@ -0,0 +1,55 @@ +from __future__ import unicode_literals + +from io import BytesIO + +from django.core.servers.basehttp import ServerHandler +from django.utils.unittest import TestCase + +# +# Tests for #9659: wsgi.file_wrapper in the builtin server. +# We need to mock a couple of handlers and keep track of what +# gets called when using a couple kinds of WSGI apps. +# + +class DummyHandler(object): + def log_request(*args, **kwargs): + pass + +class FileWrapperHandler(ServerHandler): + def __init__(self, *args, **kwargs): + ServerHandler.__init__(self, *args, **kwargs) + self.request_handler = DummyHandler() + self._used_sendfile = False + + def sendfile(self): + self._used_sendfile = True + return True + +def wsgi_app(environ, start_response): + start_response(str('200 OK'), [(str('Content-Type'), str('text/plain'))]) + return [b'Hello World!'] + +def wsgi_app_file_wrapper(environ, start_response): + start_response(str('200 OK'), [(str('Content-Type'), str('text/plain'))]) + return environ['wsgi.file_wrapper'](BytesIO(b'foo')) + +class WSGIFileWrapperTests(TestCase): + """ + Test that the wsgi.file_wrapper works for the builting server. + """ + + def test_file_wrapper_uses_sendfile(self): + env = {'SERVER_PROTOCOL': 'HTTP/1.0'} + handler = FileWrapperHandler(None, BytesIO(), BytesIO(), env) + handler.run(wsgi_app_file_wrapper) + self.assertTrue(handler._used_sendfile) + self.assertEqual(handler.stdout.getvalue(), b'') + self.assertEqual(handler.stderr.getvalue(), b'') + + def test_file_wrapper_no_sendfile(self): + env = {'SERVER_PROTOCOL': 'HTTP/1.0'} + handler = FileWrapperHandler(None, BytesIO(), BytesIO(), env) + handler.run(wsgi_app) + self.assertFalse(handler._used_sendfile) + self.assertEqual(handler.stdout.getvalue().splitlines()[-1], b'Hello World!') + self.assertEqual(handler.stderr.getvalue(), b'') |