[Checkins] SVN: Products.CMFCore/trunk/Products/CMFCore/tests/test_FS - refactored and improved FSSecurity tests

Yvo Schubbe y.2011 at wcm-solutions.de
Sun Feb 6 15:09:31 EST 2011


Log message for revision 120169:
  - refactored and improved FSSecurity tests

Changed:
  U   Products.CMFCore/trunk/Products/CMFCore/tests/test_FSMetadata.py
  U   Products.CMFCore/trunk/Products/CMFCore/tests/test_FSSecurity.py

-=-
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_FSMetadata.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_FSMetadata.py	2011-02-06 20:00:55 UTC (rev 120168)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_FSMetadata.py	2011-02-06 20:09:30 UTC (rev 120169)
@@ -16,11 +16,16 @@
 import unittest
 import Testing
 
-from test_FSSecurity import FSSecurityBase
+from Products.CMFCore.tests.base.testcase import FSDVTest
+from Products.CMFCore.tests.test_FSSecurity import MetadataChecker
 
 
-class FSMetadata(FSSecurityBase):
+class FSMetadata(FSDVTest, MetadataChecker):
 
+    def setUp(self):
+        FSDVTest.setUp(self)
+        self._registerDirectory(self)
+
     def _checkProxyRoles(self, obj, roles):
         # Test proxy roles on the object
         for role in roles:

Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_FSSecurity.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_FSSecurity.py	2011-02-06 20:00:55 UTC (rev 120168)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_FSSecurity.py	2011-02-06 20:09:30 UTC (rev 120169)
@@ -16,15 +16,17 @@
 import unittest
 import Testing
 
+import logging
+from os import path
+
 from AccessControl.Permission import Permission
 from App.config import getConfiguration
 
 from Products.CMFCore.tests.base.testcase import LogInterceptor
-from Products.CMFCore.tests.base.testcase import RequestTest
 from Products.CMFCore.tests.base.testcase import WritableFSDVTest
 
 
-class FSSecurityBase(RequestTest, WritableFSDVTest, LogInterceptor):
+class MetadataChecker(object):
 
     def _checkSettings(self, object, permissionname, acquire=0, roles=[]):
         # check the roles and acquire settings for a permission on an
@@ -48,27 +50,22 @@
             raise ValueError("'%s' not found in inherited permissions."
                              % permissionname)
 
+
+class FSSecurityTests(WritableFSDVTest, MetadataChecker, LogInterceptor):
+
+    def _forceReload(self, reg_key):
+        from Products.CMFCore.DirectoryView import _dirreg
+        _dirreg.getDirectoryInfo(reg_key).data = None
+
     def setUp(self):
-        # initialise skins
         WritableFSDVTest.setUp(self)
         self._registerDirectory(self)
-        # set up ZODB
-        RequestTest.setUp(self)
-        # put object in ZODB
-        root = self.root
-        try: root._delObject('fake_skin')
-        except AttributeError: pass
-        root._setObject('fake_skin', self.ob.fake_skin)
 
     def tearDown(self):
-        RequestTest.tearDown(self)
+        self._ignore_log_errors(subsystem='CMFCore.DirectoryView')
+        self._ignore_log_errors(subsystem='CMFCore.FSMetadata')
         WritableFSDVTest.tearDown(self)
-        self._ignore_log_errors()
-        self._ignore_log_errors(subsystem='CMFCore.DirectoryView')
 
-
-class FSSecurityTests(FSSecurityBase, LogInterceptor):
-
     def test_basicPermissions(self):
         # Test basic FS permissions
         # check a normal method is as we'd expect
@@ -80,38 +77,55 @@
                             'Access contents information', 0, [])
 
     def test_invalidPermissionNames(self):
-        import logging
+        # Test for an invalid permission name
         self._catch_log_errors(logging.ERROR,
                                subsystem='CMFCore.DirectoryView')
-        # Test for an invalid permission name
         # baseline
+        self._forceReload(self.ob.fake_skin._dirpath)
         self._checkSettings(self.ob.fake_skin.test5, 'View', 1, [])
-        # add .rpm with dodgy permission name
-        self._writeFile('test5.py.metadata',
-                        '[security]\nAccess stoopid contents = 0:')
-        # check baseline
+        self.assertEqual(self.logged, None)
+        # add
+        f = open(path.join(self.skin_path_name, 'test5.py.metadata'), 'w')
+        f.write('[security]\nAccess stoopid contents = 0:')
+        f.close()
+        # test
+        self._forceReload(self.ob.fake_skin._dirpath)
         self._checkSettings(self.ob.fake_skin.test5, 'View', 1, [])
+        self.assertEqual(len(self.logged), 1)
+        self.assertEqual(self.logged[0].getMessage(),
+                         'Error setting permissions')
 
     def test_invalidAcquireNames(self):
         # Test for an invalid spelling of acquire
+        self._catch_log_errors(logging.ERROR,
+                               subsystem='CMFCore.FSMetadata')
         # baseline
+        self._forceReload(self.ob.fake_skin._dirpath)
         self._checkSettings(self.ob.fake_skin.test5, 'View', 1, [])
-        # add dodgy .rpm
-        self._writeFile('test5.py.metadata', '[security]\nView = aquire:')
-        # check baseline
+        self.assertEqual(self.logged, None)
+        # add
+        f = open(path.join(self.skin_path_name, 'test5.py.metadata'), 'w')
+        f.write('[security]\nView = aquire:')
+        f.close()
+        # test
+        self._forceReload(self.ob.fake_skin._dirpath)
         self._checkSettings(self.ob.fake_skin.test5, 'View', 1, [])
+        self.assertEqual(len(self.logged), 1)
+        self.assertEqual(self.logged[0].getMessage(),
+                         'Error parsing .metadata file')
 
 
-class DebugModeTests(FSSecurityBase):
+class DebugModeTests(WritableFSDVTest, MetadataChecker):
 
     def setUp(self):
-        FSSecurityBase.setUp(self)
+        WritableFSDVTest.setUp(self)
+        self._registerDirectory(self)
         self.saved_cfg_debug_mode = getConfiguration().debug_mode
         getConfiguration().debug_mode = True
 
     def tearDown(self):
         getConfiguration().debug_mode = self.saved_cfg_debug_mode
-        FSSecurityBase.tearDown(self)
+        WritableFSDVTest.tearDown(self)
 
     def test_addPRM(self):
         # Test adding of a .metadata
@@ -126,48 +140,42 @@
     def test_delPRM(self):
         # Test deleting of a .metadata
         # baseline
-        self._checkSettings(self.ob.fake_skin.test5, 'View', 1, [])
-        self._writeFile('test5.py.metadata',
-                        '[security]\nView = 1:Manager')
-        self._checkSettings(self.ob.fake_skin.test5, 'View', 1, ['Manager'])
+        self._checkSettings(self.ob.fake_skin.test4,
+                            'View', 1, ['Manager', 'Owner'])
         # delete
-        self._deleteFile('test5.py.metadata')
+        self._deleteFile('test4.py.metadata')
         # test
-        self._checkSettings(self.ob.fake_skin.test5, 'View', 1, [])
+        self._checkSettings(self.ob.fake_skin.test4, 'View', 1, [])
 
     def test_editPRM(self):
         # Test editing a .metadata
-
         # baseline
-        self._writeFile('test5.py.metadata',
-                        '[security]\nView = 0:Manager,Anonymous')
-        self._checkSettings(self.ob.fake_skin.test5,
-                            'View', 0, ['Manager', 'Anonymous'])
+        self._checkSettings(self.ob.fake_skin.test4,
+                            'View', 1, ['Manager', 'Owner'])
         # edit
-        self._writeFile('test5.py.metadata',
+        self._writeFile('test4.py.metadata',
                         '[security]\nView = 1:Manager')
         # test
-        self._checkSettings(self.ob.fake_skin.test5, 'View', 1, ['Manager'])
+        self._checkSettings(self.ob.fake_skin.test4, 'View', 1, ['Manager'])
 
     def test_DelAddEditPRM(self):
         # Test deleting, then adding, then editing a .metadata file
         # baseline
-        self._writeFile('test5.py.metadata', '[security]\nView = 0:Manager')
+        self._checkSettings(self.ob.fake_skin.test4,
+                            'View', 1, ['Manager', 'Owner'])
         # delete
-        self._deleteFile('test5.py.metadata')
-        self._checkSettings(self.ob.fake_skin.test5, 'View', 1, [])
-
+        self._deleteFile('test4.py.metadata')
+        self._checkSettings(self.ob.fake_skin.test4, 'View', 1, [])
         # add back
-        self._writeFile('test5.py.metadata',
+        self._writeFile('test4.py.metadata',
                         '[security]\nView = 0:Manager,Anonymous')
-        self._checkSettings(self.ob.fake_skin.test5,
+        self._checkSettings(self.ob.fake_skin.test4,
                             'View', 0, ['Manager', 'Anonymous'])
-
         # edit
-        self._writeFile('test5.py.metadata',
+        self._writeFile('test4.py.metadata',
                         '[security]\nView = 1:Manager')
         # test
-        self._checkSettings(self.ob.fake_skin.test5, 'View', 1, ['Manager'])
+        self._checkSettings(self.ob.fake_skin.test4, 'View', 1, ['Manager'])
 
 
 def test_suite():



More information about the checkins mailing list