[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