############################################################################## # # Copyright (c) 2001, 2002 Zope Corporation and Contributors. # All Rights Reserved. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # ############################################################################## """Browser response tests $Id: test_browserresponse.py 67078 2006-04-18 16:15:56Z BjornT $ """ from unittest import TestCase, TestSuite, main, makeSuite from zope.publisher.browser import BrowserResponse from zope.interface.verify import verifyObject # TODO: Waaa need more tests class TestBrowserResponse(TestCase): def test_contentType_DWIM_in_setResult(self): response = BrowserResponse() response.setResult( """ """) self.assert_(response.getHeader('content-type').startswith("text/html") ) response = BrowserResponse() response.setResult( """ """) self.assert_(response.getHeader('content-type').startswith("text/html") ) response = BrowserResponse() response.setResult( """ """) self.assert_(response.getHeader('content-type').startswith("text/html") ) response = BrowserResponse() response.setResult( """ """) self.assert_(response.getHeader('content-type').startswith("text/html") ) response = BrowserResponse() response.setResult( """Hello world """) self.assert_(response.getHeader('content-type').startswith( "text/plain") ) response = BrowserResponse() response.setResult( """

Hello world """) self.assert_( response.getHeader('content-type').startswith("text/plain") ) def testInsertBase(self): response = BrowserResponse() response.setHeader('content-type', 'text/html') insertBase = response._BrowserResponse__insertBase # Make sure that bases are inserted response.setBase('http://localhost/folder/') self.assert_( '' in insertBase('Page')) # Ensure that unicode bases work as well response.setBase(u'http://localhost/folder/') body = insertBase('Page') self.assert_(isinstance(body, str)) self.assert_('' in body) # Ensure that encoded bodies work, when a base is inserted. response.setBase('http://localhost/folder') result = insertBase( '\xc3\x9bung') self.assert_(isinstance(body, str)) self.assert_('' in result) def testInsertBaseInSetResultUpdatesContentLength(self): # Make sure that the Content-Length header is updated to account # for an inserted tag. response = BrowserResponse() response.setHeader('content-type', 'text/html') base = 'http://localhost/folder/' response.setBase(base) inserted_text = '\n\n' % base html_page = """ """ response.setResult(html_page) self.assertEquals( int(response.getHeader('content-length')), len(html_page) + len(inserted_text)) def test_interface(self): from zope.publisher.interfaces.http import IHTTPResponse from zope.publisher.interfaces.http import IHTTPApplicationResponse from zope.publisher.interfaces import IResponse rp = BrowserResponse() verifyObject(IHTTPResponse, rp) verifyObject(IHTTPApplicationResponse, rp) verifyObject(IResponse, rp) def test_suite(): return TestSuite(( makeSuite(TestBrowserResponse), )) if __name__=='__main__': main(defaultTest='test_suite')