示例#1
0
def wsgi_publish(environ, start_response):
    """
    copied from publish_module in ZPublisher/Test.py, simplified, and
    modified to accept streaming responses
    """
    from ZPublisher.Request import Request
    from ZPublisher.Publish import publish
    from ZServer.HTTPResponse import ZServerHTTPResponse
    from zope.publisher.browser import setDefaultSkin
    from StringIO import StringIO

    outstream = StringIO()

    must_die=0
    after_list=[None]
    response = ZServerHTTPResponse(stdout=outstream, stderr=sys.stderr)
    stdout = response.stdout
    request = Request(environ['wsgi.input'], environ, response)
    try:
        try:
            setDefaultSkin(request)
            response = publish(request, 'Zope2', after_list, debug=0)
        except SystemExit, v:
            must_die=sys.exc_info()
            response.exception(must_die)
        except ImportError, v:
            if isinstance(v, tuple) and len(v)==3:
                must_die=v
            else:
                must_die=sys.exc_info()
            response.exception(1, v)
 def testStreaming(self):
     out = StringIO()
     response = ZServerHTTPResponse(stdout=out)
     response.write('datachunk1')
     response.write('datachunk2')
     
     events = self.reporter.events
     self.assertEqual(len(events), 1)
     self.assert_(isinstance(events[0], PubBeforeStreaming))
     self.assertEqual(events[0].response, response)
     
     self.assertTrue('datachunk1datachunk2' in out.getvalue())
示例#3
0
    def testStreaming(self):
        out = StringIO()
        response = ZServerHTTPResponse(stdout=out)
        response.write('datachunk1')
        response.write('datachunk2')

        events = self.reporter.events
        self.assertEqual(len(events), 1)
        self.assert_(isinstance(events[0], PubBeforeStreaming))
        self.assertEqual(events[0].response, response)

        self.assertTrue('datachunk1datachunk2' in out.getvalue())
def get_zope_request(webob_request):
    outstream = StringIO()
    response = ZServerHTTPResponse(stdout=outstream, stderr=sys.stderr)
    environ = webob_request.environ
    zope_request = Request(environ['wsgi.input'], environ, response)
    zope_request.processInputs()
    return zope_request
示例#5
0
 def test_setBodyIterator(self):
     channel = DummyChannel()
     one = ZServerHTTPResponse(stdout=channel)
     one.setHeader('content-length', 5)
     one.setBody(test_streamiterator())
     one.outputBody()
     all = channel.all()
     lines = all.split('\r\n')
     self.assertEqual(lines[-2], '')  # end of headers
     self.assertEqual(lines[-1], 'hello')  # payload
示例#6
0
 def test_setBodyIterator(self):
     channel = DummyChannel()
     one = ZServerHTTPResponse(stdout=channel)
     one.setHeader("content-length", 5)
     one.setBody(test_streamiterator())
     one.outputBody()
     all = channel.all()
     lines = all.split("\r\n")
     self.assertEqual(lines[-2], "")  # end of headers
     self.assertEqual(lines[-1], "hello")  # payload
示例#7
0
 def test_setBodyIteratorFailsWithoutContentLength(self):
     one = ZServerHTTPResponse(stdout=DummyChannel())
     self.assertRaises(AssertionError, one.setBody, test_streamiterator())
示例#8
0
 def test_http_response_write_unicode(self):
     response = ZServerHTTPResponse()
     self.assertRaises(TypeError, response.write, u'bad')
示例#9
0
 def _makeOne(self):
     return ZServerHTTPResponse()