12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- from StringIO import StringIO
- 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 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('200 OK', [('Content-Type', 'text/plain')])
- return ['Hello World!']
- def wsgi_app_file_wrapper(environ, start_response):
- start_response('200 OK', [('Content-Type', 'text/plain')])
- return environ['wsgi.file_wrapper'](StringIO('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'}
- err = StringIO()
- handler = FileWrapperHandler(None, StringIO(), err, env)
- handler.run(wsgi_app_file_wrapper)
- self.assertTrue(handler._used_sendfile)
- def test_file_wrapper_no_sendfile(self):
- env = {'SERVER_PROTOCOL': 'HTTP/1.0'}
- err = StringIO()
- handler = FileWrapperHandler(None, StringIO(), err, env)
- handler.run(wsgi_app)
- self.assertFalse(handler._used_sendfile)
- self.assertEqual(handler.stdout.getvalue().splitlines()[-1],'Hello World!')
|