class CTSMPloneIntegrationTestCase(ptc.PloneTestCase): """ Testing the validation on just the objects with the provided mapping and other Plone integration. """ def afterSetUp(self): self.sm = ContentTypeScopeManager() self.mapping = {} def assertScopeValid(self, accessed, name): self.assertTrue(self.sm.validateTargetWithMapping( accessed, name, self.mapping)) def assertScopeInvalid(self, accessed, name): self.assertFalse(self.sm.validateTargetWithMapping( accessed, name, self.mapping)) def test_0000_resolve_target(self): obj, path = self.sm.resolveTarget(self.folder, 'folder_contents') self.assertEqual(obj, 'Folder') self.assertEqual(path, 'folder_contents') def test_0001_resolve_subtarget(self): folder_add = self.folder.restrictedTraverse('+') obj, path = self.sm.resolveTarget(folder_add, 'addFolder') self.assertEqual(obj, 'Folder') self.assertEqual(path, '+/addFolder') def test_0002_resolve_nothing(self): obj, path = self.sm.resolveTarget(object(), 'addFolder') self.assertEqual(obj, None) self.assertEqual(path, None) def test_0100_root_scope(self): self.mapping = { 'Plone Site': ['folder_contents'], } self.assertScopeValid(self.portal, 'folder_contents') self.assertScopeInvalid(self.portal, 'manage') def test_0101_folder_scope(self): self.mapping = { 'Folder': ['folder_contents'], } self.assertScopeValid(self.folder, 'folder_contents') def test_0201_browser_view(self): self.mapping = { 'Folder': ['+/addFile', 'folder_contents'], } # Adding views. folder_add = self.folder.restrictedTraverse('+') self.assertScopeValid(folder_add, 'addFile') self.assertScopeInvalid(folder_add, 'addFolder') self.assertScopeInvalid(self.folder, 'addFile') # For whatever reason this happened, but still forbidden by # scope restrictions. portal_add = self.portal.unrestrictedTraverse('+') self.assertScopeInvalid(portal_add, 'addFile') def test_0301_asterisk_ending(self): self.mapping = { 'Folder': ['folder*contents', 'test_*'], 'Plone Site': ['test/test_*', 'test/view*me', 'example/*'], } self.assertScopeInvalid(self.folder, 'folder_contents') self.assertScopeInvalid(self.folder, 'test_view') self.assertScopeInvalid(self.folder, 'test_') self.assertScopeInvalid(self.portal, 'test_') self.assertScopeInvalid(self.portal, 'test/test') self.assertScopeInvalid(self.portal, 'test/view_me') self.assertScopeValid(self.portal, 'test/test_') self.assertScopeValid(self.portal, 'test/test_view') self.assertScopeValid(self.portal, 'test/test_page') # invalid for now self.assertScopeInvalid(self.portal, 'example') self.assertScopeValid(self.portal, 'example/') self.assertScopeValid(self.portal, 'example/a')