[Zope-Checkins] SVN: Zope/trunk/src/Products/SiteAccess/tests/testSiteRoot.py Merge coverage from 2.12 branch.

Tres Seaver tseaver at palladion.com
Fri May 21 10:53:14 EDT 2010


Log message for revision 112619:
  Merge coverage from 2.12 branch.

Changed:
  U   Zope/trunk/src/Products/SiteAccess/tests/testSiteRoot.py

-=-
Modified: Zope/trunk/src/Products/SiteAccess/tests/testSiteRoot.py
===================================================================
--- Zope/trunk/src/Products/SiteAccess/tests/testSiteRoot.py	2010-05-21 14:53:12 UTC (rev 112618)
+++ Zope/trunk/src/Products/SiteAccess/tests/testSiteRoot.py	2010-05-21 14:53:14 UTC (rev 112619)
@@ -42,7 +42,6 @@
         container = DummyContainer()
         container.testing = object()
         result = traverser.manage_addToContainer(container, nextURL=NEXTURL)
-        self.failUnless(isinstance(result, str))
         self.failUnless('<TITLE>Item Exists</TITLE>' in result)
         self.failIf(container.testing is traverser)
 
@@ -51,7 +50,6 @@
         traverser = self._makeOne()
         container = DummyContainer()
         result = traverser.manage_addToContainer(container, nextURL=NEXTURL)
-        self.failUnless(isinstance(result, str))
         self.failUnless('<TITLE>Item Added</TITLE>' in result)
         self.failUnless(container.testing is traverser)
         hook = container.__before_traverse__[(100, 'Traverser')]
@@ -100,11 +98,159 @@
         self.assertRaises(ValueError, traverser._setId, 'other')
 
 
+class SiteRootTests(unittest.TestCase):
+
+    _old_SSR = None
+
+    def setUp(self):
+        from Testing.ZopeTestCase import ZopeLite
+        ZopeLite.startup()
+
+    def tearDown(self):
+        if self._old_SSR is not None:
+            self._set_SUPPRESS_SITEROOT(self._old_SSR)
+
+    def _set_SUPPRESS_SITEROOT(self, value):
+        from Products.SiteAccess import SiteRoot as SR
+        (self._old_SSR,
+         SR.SUPPRESS_SITEROOT) = (SR.SUPPRESS_SITEROOT, value)
+
+    def _getTargetClass(self):
+        from Products.SiteAccess.SiteRoot import SiteRoot
+        return SiteRoot
+
+    def _makeOne(self, title='TITLE', base='', path=''):
+        return self._getTargetClass()(title, base, path)
+
+    def test___init___strips_base_and_path(self):
+        siteroot = self._makeOne(base=' ', path=' ')
+        self.assertEqual(siteroot.title, 'TITLE')
+        self.assertEqual(siteroot.base, '')
+        self.assertEqual(siteroot.path, '')
+        # XXX Why aren't these defaulted to None at class scope?
+        # Even better:  why do they exist at all?
+        self.failUnless(getattr(siteroot, 'SiteRootBase', self) is self)
+        self.failUnless(getattr(siteroot, 'SiteRootPath', self) is self)
+
+    def test___init___w_base_and_path(self):
+        siteroot = self._makeOne(base='http://example.com', path='/path')
+        self.assertEqual(siteroot.title, 'TITLE')
+        self.assertEqual(siteroot.base, 'http://example.com')
+        self.assertEqual(siteroot.path, '/path')
+        self.assertEqual(siteroot.SiteRootBASE, 'http://example.com')
+        self.assertEqual(siteroot.SiteRootPATH, '/path')
+
+    def test_manage_edit_no_REQUEST(self):
+        siteroot = self._makeOne(title='Before',
+                                 base='http://before.example.com',
+                                 path='/before')
+        result = siteroot.manage_edit('After', 'http://after.example.com ',
+                                      '/after ')
+        self.failUnless(result is None)
+        self.assertEqual(siteroot.title, 'After')
+        self.assertEqual(siteroot.base, 'http://after.example.com')
+        self.assertEqual(siteroot.path, '/after')
+        self.assertEqual(siteroot.SiteRootBASE, 'http://after.example.com')
+        self.assertEqual(siteroot.SiteRootPATH, '/after')
+
+    def test_manage_edit_w_REQUEST(self):
+        siteroot = self._makeOne(title='Before',
+                                 base='http://before.example.com',
+                                 path='/before')
+        result = siteroot.manage_edit('After', 'http://after.example.com ',
+                                      '/after ',
+                                      REQUEST = {'URL1':
+                                        'http://localhost:8080/manage_main'})
+        self.failUnless('<TITLE>SiteRoot changed.</TITLE>' in result)
+        self.assertEqual(siteroot.title, 'After')
+        self.assertEqual(siteroot.base, 'http://after.example.com')
+        self.assertEqual(siteroot.path, '/after')
+        self.assertEqual(siteroot.SiteRootBASE, 'http://after.example.com')
+        self.assertEqual(siteroot.SiteRootPATH, '/after')
+
+    def test___call___w_SUPPRESS_SITEROOT_set(self):
+        self._set_SUPPRESS_SITEROOT(1)
+        siteroot = self._makeOne(base='http://example.com', path='/path')
+        request = {}
+        siteroot(None, request)
+        self.assertEqual(request, {})
+
+    def test___call___w_SUPPRESS_SITEROOT_in_URL(self):
+        # This behavior will change once we land lp:142878.
+        siteroot = self._makeOne(base='http://example.com', path='/path')
+        request = DummyRequest(TraversalRequestNameStack=
+                                    ['_SUPPRESS_SITEROOT'])
+        def _dont_go_here(key, value):
+            raise NotImplementedError
+        request.__setitem__ = _dont_go_here
+        request.steps = []
+        siteroot(None, request)
+        self.assertEqual(request._virtual_root, ['_SUPPRESS_SITEROOT'])
+
+    def test___call___wo_SUPPRESS_SITEROOT_w_base_wo_path(self):
+        URL='http://localhost:8080/example/folder/'
+        siteroot = self._makeOne(base='http://example.com', path='')
+        request = DummyRequest(TraversalRequestNameStack=[],
+                               URL=URL,
+                               ACTUAL_URL=URL,
+                               SERVER_URL='http://localhost:8080',
+                              )
+        request.steps = []
+        request.environ = {}
+        siteroot(None, request)
+        self.assertEqual(request['URL'], URL)
+        self.assertEqual(request['SERVER_URL'], 'http://example.com')
+        self.assertEqual(request['ACTUAL_URL'],
+                         'http://example.com/example/folder/')
+        self.assertEqual(request._virtual_root, None)
+        self.failUnless(request._urls_reset)
+
+    def test___call___wo_SUPPRESS_SITEROOT_wo_base_w_path(self):
+        URL='http://localhost:8080/example/folder/'
+        siteroot = self._makeOne(base='', path='/example')
+        request = DummyRequest(TraversalRequestNameStack=[],
+                               URL=URL,
+                               ACTUAL_URL=URL,
+                               SERVER_URL='http://localhost:8080',
+                              )
+        request.steps = []
+        request.environ = {}
+        siteroot(None, request)
+        self.assertEqual(request['URL'], URL)
+        self.assertEqual(request['SERVER_URL'], 'http://localhost:8080')
+        self.assertEqual(request['ACTUAL_URL'], URL)
+        self.assertEqual(request._virtual_root, '/example')
+        self.failIf(request._urls_reset)
+
+    def test___call___wo_SUPPRESS_SITEROOT_w_base_w_path(self):
+        URL='http://localhost:8080/example/folder/'
+        siteroot = self._makeOne(base='http://example.com', path='/example')
+        request = DummyRequest(TraversalRequestNameStack=[],
+                               URL=URL,
+                               ACTUAL_URL=URL,
+                               SERVER_URL='http://localhost:8080',
+                              )
+        request.steps = []
+        request.environ = {}
+        siteroot(None, request)
+        self.assertEqual(request['URL'], URL)
+        self.assertEqual(request['SERVER_URL'], 'http://example.com')
+        self.assertEqual(request['ACTUAL_URL'], 
+                         'http://example.com/example/folder/')
+        self.assertEqual(request._virtual_root, '/example')
+        self.failUnless(request._urls_reset)
+
+    def test_get_size(self):
+        siteroot = self._makeOne()
+        self.assertEqual(siteroot.get_size(), 0)
+
+
 class DummyObject(object):
 
     def __init__(self, **kw):
         self.__dict__.update(kw)
 
+
 class DummyContainer(object):
 
     def __init__(self, **kw):
@@ -117,6 +263,18 @@
         return self
 
 
+class DummyRequest(dict):
+
+    _virtual_root = None
+    _urls_reset = False
+
+    def setVirtualRoot(self, root):
+        self._virtual_root = root
+
+    def _resetURLS(self):
+        self._urls_reset = True
+
+
 class SiteRootRegressions(unittest.TestCase):
 
     def setUp(self):
@@ -151,5 +309,6 @@
 def test_suite():
     return unittest.TestSuite((
         unittest.makeSuite(TraverserTests),
+        unittest.makeSuite(SiteRootTests),
         unittest.makeSuite(SiteRootRegressions),
     ))



More information about the Zope-Checkins mailing list