[Checkins] SVN: zope.testbrowser/trunk/src/zope/testbrowser/ Attempt but fail to write a test for LP #646872
Brian Sutherland
jinty at web.de
Wed Mar 16 03:50:34 EDT 2011
Log message for revision 120971:
Attempt but fail to write a test for LP #646872
Changed:
U zope.testbrowser/trunk/src/zope/testbrowser/ftests/wsgitestapp.py
U zope.testbrowser/trunk/src/zope/testbrowser/tests/test_wsgi.py
-=-
Modified: zope.testbrowser/trunk/src/zope/testbrowser/ftests/wsgitestapp.py
===================================================================
--- zope.testbrowser/trunk/src/zope/testbrowser/ftests/wsgitestapp.py 2011-03-15 23:26:29 UTC (rev 120970)
+++ zope.testbrowser/trunk/src/zope/testbrowser/ftests/wsgitestapp.py 2011-03-16 07:50:33 UTC (rev 120971)
@@ -38,6 +38,7 @@
req = Request(environ)
handler = {'/set_status.html': set_status,
'/echo.html': echo,
+ '/redirect.html': redirect,
'/echo_one.html': echo_one,
'/set_header.html': set_header,
'/set_cookie.html': set_cookie,
@@ -127,6 +128,13 @@
items.append('Body: %r' % body)
return Response('\n'.join(items))
+def redirect(req):
+ loc = req.params['to']
+ resp = Response("You are being redirected to %s" % loc)
+ resp.location = loc
+ resp.status = int(req.params.get('type', 302))
+ return resp
+
def echo_one(req):
resp = repr(req.environ.get(req.params['var']))
return Response(resp)
Modified: zope.testbrowser/trunk/src/zope/testbrowser/tests/test_wsgi.py
===================================================================
--- zope.testbrowser/trunk/src/zope/testbrowser/tests/test_wsgi.py 2011-03-15 23:26:29 UTC (rev 120970)
+++ zope.testbrowser/trunk/src/zope/testbrowser/tests/test_wsgi.py 2011-03-16 07:50:33 UTC (rev 120971)
@@ -13,6 +13,7 @@
##############################################################################
import unittest
+from urllib import urlencode
from wsgiref.simple_server import demo_app
import zope.testbrowser.wsgi
@@ -29,6 +30,32 @@
class TestBrowser(unittest.TestCase):
+ def test_redirect(self):
+ app = WSGITestApplication()
+ browser = zope.testbrowser.wsgi.Browser(wsgi_app=app)
+ # redirecting locally works
+ browser.open('http://localhost/redirect.html?%s'
+ % urlencode(dict(to='/set_status.html')))
+ self.assertEquals(browser.url, 'http://localhost/set_status.html')
+ browser.open('http://localhost/redirect.html?%s'
+ % urlencode(dict(to='/set_status.html', type='301')))
+ self.assertEquals(browser.url, 'http://localhost/set_status.html')
+ browser.open('http://localhost/redirect.html?%s'
+ % urlencode(dict(to='http://localhost/set_status.html')))
+ self.assertEquals(browser.url, 'http://localhost/set_status.html')
+ browser.open('http://localhost/redirect.html?%s'
+ % urlencode(dict(to='http://localhost/set_status.html', type='301')))
+ self.assertEquals(browser.url, 'http://localhost/set_status.html')
+ # non-local redirects raise HostNotAllowed error
+ self.assertRaises(zope.testbrowser.wsgi.HostNotAllowed,
+ browser.open,
+ 'http://localhost/redirect.html?%s'
+ % urlencode(dict(to='http://www.google.com/')))
+ self.assertRaises(zope.testbrowser.wsgi.HostNotAllowed,
+ browser.open,
+ 'http://localhost/redirect.html?%s'
+ % urlencode(dict(to='http://www.google.com/', type='301')))
+
def test_allowed_domains(self):
browser = zope.testbrowser.wsgi.Browser(wsgi_app=demo_app)
# external domains are not allowed
More information about the checkins
mailing list