class CTSMValidateTestCase(ptc.PloneTestCase): """ Testing the validation process. """ def afterSetUp(self): self.sm = ContentTypeScopeManager() self.file_mapping = {'File': ['document_view']} self.folder_mapping = {'Folder': ['folder_contents', '+/addFile']} file_id = self.sm.addMapping(self.file_mapping) folder_id = self.sm.addMapping(self.folder_mapping) self.sm.setMappingNameToId('file', file_id) self.sm.setMappingNameToId('folder', folder_id) self.folder_add = self.folder.restrictedTraverse('+') self.all_ids = set([file_id, folder_id]) def test_0100_request_to_access(self): rkey = 'request_key' akey = 'access_key' self.assertTrue(self.sm.requestScope(rkey, 'http://nohost/plone/scope/file,http://nohost/plone/scope/folder')) self.sm.setAccessScope(akey, self.sm.getScope(rkey)) self.assertEqual(self.sm.getAccessScope(akey), self.all_ids) # Should there be something to automatically revoke it? # Probably? request = base.TestRequest() self.assertFalse(self.sm.validate(request, '', akey, self.folder, self.portal, 'document_view', object())) self.assertTrue(self.sm.validate(request, '', akey, self.folder, self.portal, 'folder_contents', object())) self.assertFalse(self.sm.validate(request, '', akey, self.folder_add, self.portal, 'addFolder', object())) self.assertTrue(self.sm.validate(request, '', akey, self.folder_add, self.portal, 'addFile', object()))
class CTSMMappingTestCase(unittest.TestCase): """ Testing the profile and management within this scope manager. """ def setUp(self): self.sm = ContentTypeScopeManager() self.file_mapping = {'File': ['document_view']} self.folder_mapping = {'Folder': ['folder_contents']} def test_0100_get_mapping(self): self.assertRaises(KeyError, self.sm.getMapping, 1) self.assertEqual(self.sm.getMapping(1, default='test'), 'test') def test_0101_add_get_mapping(self): self.assertEqual(self.sm.addMapping('test'), 1) self.assertEqual(self.sm.getMapping(1), 'test') def test_0200_mapping_name_and_id(self): _marker = 2 self.assertRaises(KeyError, self.sm.getMappingId, 'rawscope') self.sm.setMappingNameToId('rawscope', _marker) self.assertEqual(self.sm.getMappingId('rawscope'), _marker) self.sm.setMappingNameToId('rawscope', 3) self.assertEqual(self.sm.getMappingId('rawscope'), 3) self.sm.delMappingName('rawscope') self.assertRaises(KeyError, self.sm.getMappingId, 'rawscope') def test_1000_request_scope_fresh_fail(self): self.assertFalse(self.sm.requestScope('key', 'rawscope')) self.assertEqual(len(self.sm._scope), 0) def test_1001_request_scope_fresh_default(self): self.assertTrue(self.sm.requestScope('key', None)) self.assertEqual(len(self.sm._scope), 1) # Can't set this again. self.assertRaises(KeyError, self.sm.requestScope, 'key', None) def test_1002_request_scope_set_singular(self): key = 'request_key' scope = 'test_scope' mapping_id = self.sm.addMapping(self.file_mapping) self.sm.setMappingNameToId(scope, mapping_id) self.assertTrue(self.sm.requestScope(key, scope)) self.assertEqual(len(self.sm._scope), 1) mappings = self.sm.getScope(key) self.assertEqual(len(mappings), 1) self.assertTrue(mapping_id in mappings) # Obviously not an access scope. self.assertRaises(KeyError, self.sm.getAccessScope, key) # Nor a client scope. self.assertRaises(KeyError, self.sm.getClientScope, key) def test_1003_request_scope_multiple(self): file_id = self.sm.addMapping(self.file_mapping) folder_id = self.sm.addMapping(self.folder_mapping) self.sm.setMappingNameToId('file', file_id) self.sm.setMappingNameToId('folder', folder_id) key1 = 'request_key1' key2 = 'request_key2' raw_scope = 'test_scope' self.assertFalse(self.sm.requestScope(key1, 'test_scope')) # all of them must be valid. self.assertFalse(self.sm.requestScope(key1, 'http://nohost/plone/scope/file,test_scope')) self.assertTrue(self.sm.requestScope(key1, 'http://nohost/plone/scope/file,http://nohost/plone/scope/folder')) mappings = self.sm.getScope(key1) self.assertEqual(len(mappings), 2) self.assertTrue(file_id in mappings) self.assertTrue(folder_id in mappings) self.assertTrue(self.sm.requestScope(key2, 'http://nohost/plone/scope/folder')) mappings = self.sm.getScope(key2) self.assertEqual(len(mappings), 1) self.assertTrue(file_id not in mappings)