def test_manage_view(self): from ptah.manage.manage import \ module, PtahModule, PtahManageRoute, ManageView, \ set_access_manager @module('test-module') class TestModule(PtahModule): """ module description """ title = 'Test module' def accessManager(id, request): return True self.init_ptah() set_access_manager(accessManager) ptah.auth_service.set_userid('test-user') route = PtahManageRoute(self.request) v = ManageView(route, self.request) v.update() self.assertIsInstance(v.modules[-1], TestModule)
def test_manage_view_unavailable(self): from ptah.manage.manage import \ module, PtahModule, PtahManageRoute, ManageView, \ set_access_manager @module('test-module') class TestModule(PtahModule): """ module description """ title = 'Test module' def available(self): return False def accessManager(id, request): return True self.init_ptah() set_access_manager(accessManager) ptah.auth_service.set_userid('test-user') route = PtahManageRoute(self.request) v = ManageView(route, self.request) v.update() found = False for mod in v.modules: if isinstance(mod, TestModule): # pragma: no cover found = True self.assertFalse(found)
def _make_app(self, request=None): from ptah.manage.manage import PtahManageRoute class Principal(object): id = 'test-user' uri = 'test:user' login = '******' principal = Principal() @ptah.resolver('test') def principalResolver(uri): return principal @ptah.principal_searcher('test') def principalSearcher(term): return (principal, ) cms.ApplicationFactory(TestApp1, '/test1', 'app1', 'Root App 1') cms.ApplicationFactory(TestApp2, '/test2', 'app2', 'Root App 2') self.TestRole = ptah.Role('test', 'Test role') self.init_ptah() if request is None: request = DummyRequest() ptah.auth_service.set_userid(ptah.SUPERUSER_URI) cfg = ptah.get_settings(ptah.CFG_ID_PTAH, self.registry) cfg['managers'] = ('*', ) mr = PtahManageRoute(request) mod = mr['apps'] return mod['app1']
def test_manage_disable_modules(self): from ptah.manage.manage import \ module, PtahModule, PtahManageRoute, ManageView, set_access_manager @module('test-module') class TestModule(PtahModule): """ module description """ title = 'Test module' def accessManager(id, request): return True self.init_ptah() set_access_manager(accessManager) ptah.auth_service.set_userid('test-user') cfg = ptah.get_settings(ptah.CFG_ID_PTAH, self.registry) cfg['disable_modules'] = ('test-module', ) request = DummyRequest() route = PtahManageRoute(request) view = ManageView(route, request) view.update() for mod in view.modules: self.assertFalse(isinstance(mod, TestModule))
def test_manage_disable_modules_traverse(self): from ptah.manage.manage import \ module, PtahModule, PtahManageRoute, set_access_manager @module('test-module') class TestModule(PtahModule): """ module description """ title = 'Test module' def accessManager(id, request): return True self.init_ptah() set_access_manager(accessManager) ptah.auth_service.set_userid('test-user') cfg = ptah.get_settings(ptah.CFG_ID_PTAH, self.registry) cfg['disable_modules'] = ('test-module', ) request = DummyRequest() route = PtahManageRoute(request) self.assertRaises(KeyError, route.__getitem__, 'test-module')
def test_source_view(self): from ptah.manage.manage import PtahManageRoute ptah.auth_service.set_userid(ptah.SUPERUSER_URI) request = DummyRequest(params={'pkg': 'ptah.config'}) manage = PtahManageRoute(request) res = render_view_to_response(manage, request, 'source.html', False) self.assertIn('Source: ptah/config.py', res.text)
def test_source(self): from ptah.manage.manage import PtahManageRoute ptah.auth_service.set_userid(ptah.SUPERUSER_URI) request = DummyRequest() manage = PtahManageRoute(request) res = render_view_to_response(manage, request, 'source.html', False) self.assertIsInstance(res, HTTPFound) self.assertEqual(res.headers['location'], '.')
def test_perms_module(self): from ptah.manage.manage import PtahManageRoute from ptah.manage.permissions import PermissionsModule request = DummyRequest() ptah.auth_service.set_userid('test') cfg = ptah.get_settings(ptah.CFG_ID_PTAH, self.registry) cfg['managers'] = ('*',) mr = PtahManageRoute(request) mod = mr['permissions'] self.assertIsInstance(mod, PermissionsModule)
def test_fields_module(self): from ptah.manage.manage import PtahManageRoute from ptah.manage.fields import FieldsModule request = self.request ptah.auth_service.set_userid('test') cfg = ptah.get_settings(ptah.CFG_ID_PTAH, self.registry) cfg['managers'] = ('*', ) mr = PtahManageRoute(request) mod = mr['fields'] self.assertIsInstance(mod, FieldsModule)
def test_manage_module(self): from ptah.manage.manage import PtahManageRoute from ptahcrowd.module import CrowdModule request = self.make_request() ptah.auth_service.set_userid('test') cfg = ptah.get_settings(ptah.CFG_ID_PTAH) cfg['managers'] = ('*', ) mr = PtahManageRoute(request) mod = mr['crowd'] self.assertIsInstance(mod, CrowdModule)
def test_introspect_module(self): from ptah.manage.manage import PtahManageRoute from ptah.manage.introspect import IntrospectModule request = self.make_request() ptah.auth_service.set_userid('test') cfg = ptah.get_settings(ptah.CFG_ID_PTAH, self.registry) cfg['managers'] = ('*', ) mr = PtahManageRoute(request) mod = mr['introspect'] self.assertIsInstance(mod, IntrospectModule)
def test_apps_module(self): from ptah.manage.manage import PtahManageRoute from ptah.manage.apps import ApplicationsModule self.init_ptah() request = DummyRequest() ptah.auth_service.set_userid('test') cfg = ptah.get_settings(ptah.CFG_ID_PTAH, self.registry) cfg['managers'] = ('*', ) mr = PtahManageRoute(request) mod = mr['apps'] self.assertIsInstance(mod, ApplicationsModule)
def test_model_module(self): from ptahcms.manage.model import ModelModule from ptah.manage.manage import PtahManageRoute request = DummyRequest() ptah.auth_service.set_userid('test') cfg = ptah.get_settings(ptah.CFG_ID_PTAH, self.registry) cfg['managers'] = ('*', ) mr = PtahManageRoute(request) mod = mr['models'] self.assertIsInstance(mod, ModelModule) self.assertTrue(mod.available())
def test_sqla_module(self): from ptah.manage.manage import PtahManageRoute from ptah.manage.sqla import SQLAModule, Table request = DummyRequest() cfg = ptah.get_settings(ptah.CFG_ID_PTAH, self.registry) cfg['managers'] = ['*'] mr = PtahManageRoute(request) mod = mr['sqla'] self.assertIsInstance(mod, SQLAModule) self.assertRaises(KeyError, mod.__getitem__, 'psqla-unknown') self.assertRaises(KeyError, mod.__getitem__, 'unknown') table = mod['psqla-ptah_tokens'] self.assertIsInstance(table, Table)
def test_introspect_module(self): self.init_ptah() from ptah.manage.manage import PtahManageRoute from ptah.manage.introspect import IntrospectModule, Package request = DummyRequest() ptah.auth_service.set_userid('test') cfg = ptah.get_settings(ptah.CFG_ID_PTAH, self.registry) cfg['managers'] = ('*',) mr = PtahManageRoute(request) mod = mr['introspect'] self.assertIsInstance(mod, IntrospectModule) self.assertRaises(KeyError, mod.__getitem__, 'unknown') package = mod['ptah'] self.assertIsInstance(package, Package)
def test_manage_enable_modules(self): from ptah.manage.manage import \ module, PtahModule, PtahManageRoute, ManageView, set_access_manager @module('test-module1') class TestModule1(PtahModule): title = 'Test module1' @module('test-module2') class TestModule2(PtahModule): title = 'Test module2' def accessManager(id, request): return True self.init_ptah() set_access_manager(accessManager) ptah.auth_service.set_userid('test-user') cfg = ptah.get_settings(ptah.CFG_ID_PTAH, self.registry) cfg['enable_modules'] = ('test-module1',) request = DummyRequest() route = PtahManageRoute(request) view = ManageView(route, request) view.update() self.assertEqual(len(view.modules), 1) self.assertTrue(isinstance(view.modules[0], TestModule1)) cfg['enable_modules'] = ('test-module2',) view = ManageView(route, request) view.update() self.assertEqual(len(view.modules), 1) self.assertTrue(isinstance(view.modules[0], TestModule2))
def test_manage_traverse(self): from ptah.manage.manage import \ module, PtahModule, PtahManageRoute, set_access_manager @module('test-module') class TestModule(PtahModule): """ module description """ title = 'Test module' def accessManager(id, request): return True self.init_ptah() set_access_manager(accessManager) ptah.auth_service.set_userid('test-user') route = PtahManageRoute(self.request) mod = route['test-module'] self.assertIsInstance(mod, TestModule)
def test_manage_module(self): from ptah.manage.manage import \ module, MANAGE_ID, PtahModule, PtahManageRoute,\ PtahAccessManager, set_access_manager @module('test-module') class TestModule(PtahModule): """ module description """ title = 'Test module' self.init_ptah() set_access_manager(PtahAccessManager()) MODULES = config.get_cfg_storage(MANAGE_ID) self.assertIn('test-module', MODULES) self.assertRaises(HTTPForbidden, PtahManageRoute, self.request) ptah.auth_service.set_userid('test-user') self.assertRaises(HTTPForbidden, PtahManageRoute, self.request) def accessManager(id, request): return True set_access_manager(accessManager) route = PtahManageRoute(self.request) mod = route['test-module'] self.assertIsInstance(mod, TestModule) self.assertTrue(mod.available()) self.assertEqual(mod.__name__, 'test-module') self.assertEqual(mod.url(), 'http://example.com/ptah-manage/test-module') self.assertRaises(KeyError, route.__getitem__, 'unknown')