summaryrefslogtreecommitdiff
path: root/tests/builtin_server
diff options
context:
space:
mode:
authorFlorian Apolloner <florian@apolloner.eu>2013-02-26 09:53:47 +0100
committerFlorian Apolloner <florian@apolloner.eu>2013-02-26 14:36:57 +0100
commit89f40e36246100df6a11316c31a76712ebc6c501 (patch)
tree6e65639683ddaf2027908d1ecb1739e0e2ff853b /tests/builtin_server
parentb3d2ccb5bfbaf6e7fe1f98843baaa48c35a70950 (diff)
downloaddjango-89f40e36246100df6a11316c31a76712ebc6c501.tar.gz
Merged regressiontests and modeltests into the test root.
Diffstat (limited to 'tests/builtin_server')
-rw-r--r--tests/builtin_server/__init__.py0
-rw-r--r--tests/builtin_server/models.py0
-rw-r--r--tests/builtin_server/tests.py55
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'')