[Zope-Checkins] SVN: Zope/branches/2.10/ - Collector 2077: fixed problem with ACTUAL_URL and SiteRoot

Andreas Jung andreas at andreas-jung.com
Sat Jun 10 09:50:18 EDT 2006


Log message for revision 68566:
        - Collector 2077: fixed problem with ACTUAL_URL and SiteRoot
  
  

Changed:
  U   Zope/branches/2.10/doc/CHANGES.txt
  U   Zope/branches/2.10/lib/python/Products/SiteAccess/SiteRoot.py
  A   Zope/branches/2.10/lib/python/Products/SiteAccess/tests/testSiteRoot.py

-=-
Modified: Zope/branches/2.10/doc/CHANGES.txt
===================================================================
--- Zope/branches/2.10/doc/CHANGES.txt	2006-06-10 13:48:39 UTC (rev 68565)
+++ Zope/branches/2.10/doc/CHANGES.txt	2006-06-10 13:50:18 UTC (rev 68566)
@@ -29,7 +29,9 @@
       - Collector #2122: fixed missing is_proxying_match definition
         in ZServer/HTTPServer
 
+      - Collector 2077: fixed problem with ACTUAL_URL and SiteRoot
 
+
   Zope 2.10.0 beta 1 (2006/05/30)
 
     Restructuring

Modified: Zope/branches/2.10/lib/python/Products/SiteAccess/SiteRoot.py
===================================================================
--- Zope/branches/2.10/lib/python/Products/SiteAccess/SiteRoot.py	2006-06-10 13:48:39 UTC (rev 68565)
+++ Zope/branches/2.10/lib/python/Products/SiteAccess/SiteRoot.py	2006-06-10 13:50:18 UTC (rev 68566)
@@ -117,10 +117,13 @@
                 if srd[i] is None:
                     srd[i] = request.environ.get(srp, None)
         if srd[0] is not None:
+            request['ACTUAL_URL'] = request['ACTUAL_URL'].replace(request['SERVER_URL'], srd[0])
             request['SERVER_URL'] = srd[0]
             request._resetURLS()
         if srd[1] is not None:
+            old = request['URL']
             request.setVirtualRoot(srd[1])
+            request['ACTUAL_URL'] = request['ACTUAL_URL'].replace(old, request['URL'])
 
     def get_size(self):
         '''Make FTP happy'''

Added: Zope/branches/2.10/lib/python/Products/SiteAccess/tests/testSiteRoot.py
===================================================================
--- Zope/branches/2.10/lib/python/Products/SiteAccess/tests/testSiteRoot.py	2006-06-10 13:48:39 UTC (rev 68565)
+++ Zope/branches/2.10/lib/python/Products/SiteAccess/tests/testSiteRoot.py	2006-06-10 13:50:18 UTC (rev 68566)
@@ -0,0 +1,50 @@
+"""SiteRoot regression tests.
+
+These tests verify that the request URL headers, in particular ACTUAL_URL, are
+set correctly when a SiteRoot is used.
+
+See http://www.zope.org/Collectors/Zope/2077
+
+"""
+
+from Testing.makerequest import makerequest
+
+import Zope2
+Zope2.startup()
+
+import transaction
+
+import unittest
+
+class SiteRootRegressions(unittest.TestCase):
+
+    def setUp(self):
+        transaction.begin()
+        self.app = makerequest(Zope2.app())
+        try:
+            self.app.manage_addFolder('folder')
+	    self.app.folder.manage_addProduct['SiteAccess'].manage_addSiteRoot(title = 'SiteRoot', base = 'http://test_base', path = '/test_path')
+	    self.app.REQUEST.set('PARENTS', [self.app])
+	    self.app.REQUEST.traverse('/folder')
+	    
+        except:
+            self.tearDown()
+
+    def tearDown(self):
+        transaction.abort()
+        self.app._p_jar.close()
+	
+    def testRequest(self):
+        self.assertEqual(self.app.REQUEST['SERVER_URL'], 'http://test_base') 
+	self.assertEqual(self.app.REQUEST['URL'], 'http://test_base/test_path/index_html')
+	self.assertEqual(self.app.REQUEST['ACTUAL_URL'], 'http://test_base/test_path')
+    def testAbsoluteUrl(self):	    
+	self.assertEqual(self.app.folder.absolute_url(), 'http://test_base/test_path')
+
+def test_suite():
+    suite = unittest.TestSuite()
+    suite.addTest(unittest.makeSuite(SiteRootRegressions))
+    return suite
+
+if __name__ == '__main__':
+    unittest.main(defaultTest='test_suite')



More information about the Zope-Checkins mailing list