diff options
Diffstat (limited to 'repoze/bfg/tests')
| -rw-r--r-- | repoze/bfg/tests/test_chameleon_text.py | 35 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_chameleon_zpt.py | 34 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_configuration.py | 266 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_registry.py | 46 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_router.py | 268 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_security.py | 20 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_settings.py | 5 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_testing.py | 69 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_threadlocal.py | 7 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_traversal.py | 24 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_url.py | 8 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_view.py | 8 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_zcml.py | 6 |
13 files changed, 412 insertions, 384 deletions
diff --git a/repoze/bfg/tests/test_chameleon_text.py b/repoze/bfg/tests/test_chameleon_text.py index a6384887f..a0fb946d1 100644 --- a/repoze/bfg/tests/test_chameleon_text.py +++ b/repoze/bfg/tests/test_chameleon_text.py @@ -19,7 +19,14 @@ class Base: import os here = os.path.abspath(os.path.dirname(__file__)) return os.path.join(here, 'fixtures', name) + + def _registerUtility(self, utility, iface, name=''): + from zope.component import getSiteManager + sm = getSiteManager() + sm.registerUtility(utility, iface, name=name) + return sm + class TextTemplateRendererTests(Base, unittest.TestCase): def _getTargetClass(self): from repoze.bfg.chameleon_text import TextTemplateRenderer @@ -92,13 +99,11 @@ class RenderTemplateToResponseTests(Base, unittest.TestCase): self.assertEqual(len(result.headerlist), 2) def test_iresponsefactory_override(self): - from zope.component import getGlobalSiteManager - gsm = getGlobalSiteManager() from webob import Response class Response2(Response): pass from repoze.bfg.interfaces import IResponseFactory - gsm.registerUtility(Response2, IResponseFactory) + self._registerUtility(Response2, IResponseFactory) minimal = self._getTemplatePath('minimal.txt') result = self._callFUT(minimal) self.failUnless(isinstance(result, Response2)) @@ -109,40 +114,34 @@ class GetRendererTests(Base, unittest.TestCase): return get_renderer(name) def test_nonabs_registered(self): - from zope.component import getGlobalSiteManager from zope.component import queryUtility from repoze.bfg.chameleon_text import TextTemplateRenderer from repoze.bfg.interfaces import ITemplateRenderer minimal = self._getTemplatePath('minimal.txt') utility = TextTemplateRenderer(minimal) - gsm = getGlobalSiteManager() - gsm.registerUtility(utility, ITemplateRenderer, name=minimal) + self._registerUtility(utility, ITemplateRenderer, name=minimal) result = self._callFUT(minimal) self.assertEqual(result, utility) self.assertEqual(queryUtility(ITemplateRenderer, minimal), utility) def test_nonabs_unregistered(self): - from zope.component import getGlobalSiteManager from zope.component import queryUtility from repoze.bfg.chameleon_text import TextTemplateRenderer from repoze.bfg.interfaces import ITemplateRenderer minimal = self._getTemplatePath('minimal.txt') self.assertEqual(queryUtility(ITemplateRenderer, minimal), None) utility = TextTemplateRenderer(minimal) - gsm = getGlobalSiteManager() - gsm.registerUtility(utility, ITemplateRenderer, name=minimal) + self._registerUtility(utility, ITemplateRenderer, name=minimal) result = self._callFUT(minimal) self.assertEqual(result, utility) self.assertEqual(queryUtility(ITemplateRenderer, minimal), utility) def test_explicit_registration(self): - from zope.component import getGlobalSiteManager from repoze.bfg.interfaces import ITemplateRenderer class Dummy: template = object() - gsm = getGlobalSiteManager() utility = Dummy() - gsm.registerUtility(utility, ITemplateRenderer, name='foo') + self._registerUtility(utility, ITemplateRenderer, name='foo') result = self._callFUT('foo') self.failUnless(result is utility) @@ -158,42 +157,36 @@ class GetTemplateTests(unittest.TestCase, Base): return get_template(name) def test_nonabs_registered(self): - from zope.component import getGlobalSiteManager from zope.component import queryUtility from repoze.bfg.chameleon_text import TextTemplateRenderer from repoze.bfg.interfaces import ITemplateRenderer minimal = self._getTemplatePath('minimal.txt') utility = TextTemplateRenderer(minimal) - gsm = getGlobalSiteManager() - gsm.registerUtility(utility, ITemplateRenderer, name=minimal) + self._registerUtility(utility, ITemplateRenderer, name=minimal) result = self._callFUT(minimal) self.assertEqual(result.filename, minimal) self.assertEqual(queryUtility(ITemplateRenderer, minimal), utility) def test_nonabs_unregistered(self): - from zope.component import getGlobalSiteManager from zope.component import queryUtility from repoze.bfg.chameleon_text import TextTemplateRenderer from repoze.bfg.interfaces import ITemplateRenderer minimal = self._getTemplatePath('minimal.txt') self.assertEqual(queryUtility(ITemplateRenderer, minimal), None) utility = TextTemplateRenderer(minimal) - gsm = getGlobalSiteManager() - gsm.registerUtility(utility, ITemplateRenderer, name=minimal) + self._registerUtility(utility, ITemplateRenderer, name=minimal) result = self._callFUT(minimal) self.assertEqual(result.filename, minimal) self.assertEqual(queryUtility(ITemplateRenderer, minimal), utility) def test_explicit_registration(self): - from zope.component import getGlobalSiteManager from repoze.bfg.interfaces import ITemplateRenderer class Dummy: template = object() def implementation(self): return self.template - gsm = getGlobalSiteManager() utility = Dummy() - gsm.registerUtility(utility, ITemplateRenderer, name='foo') + self._registerUtility(utility, ITemplateRenderer, name='foo') result = self._callFUT('foo') self.failUnless(result is utility.template) diff --git a/repoze/bfg/tests/test_chameleon_zpt.py b/repoze/bfg/tests/test_chameleon_zpt.py index 381a1d0bf..0a78c1caa 100644 --- a/repoze/bfg/tests/test_chameleon_zpt.py +++ b/repoze/bfg/tests/test_chameleon_zpt.py @@ -13,6 +13,12 @@ class Base(object): import os here = os.path.abspath(os.path.dirname(__file__)) return os.path.join(here, 'fixtures', name) + + def _registerUtility(self, utility, iface, name=''): + from zope.component import getSiteManager + sm = getSiteManager() + sm.registerUtility(utility, iface, name=name) + return sm class ZPTTemplateRendererTests(Base, unittest.TestCase): def _getTargetClass(self): @@ -84,13 +90,11 @@ class RenderTemplateToResponseTests(Base, unittest.TestCase): self.assertEqual(len(result.headerlist), 2) def test_iresponsefactory_override(self): - from zope.component import getGlobalSiteManager - gsm = getGlobalSiteManager() from webob import Response class Response2(Response): pass from repoze.bfg.interfaces import IResponseFactory - gsm.registerUtility(Response2, IResponseFactory) + self._registerUtility(Response2, IResponseFactory) minimal = self._getTemplatePath('minimal.pt') result = self._callFUT(minimal) self.failUnless(isinstance(result, Response2)) @@ -101,40 +105,34 @@ class GetRendererTests(Base, unittest.TestCase): return get_renderer(name) def test_nonabs_registered(self): - from zope.component import getGlobalSiteManager from zope.component import queryUtility from repoze.bfg.chameleon_zpt import ZPTTemplateRenderer from repoze.bfg.interfaces import ITemplateRenderer minimal = self._getTemplatePath('minimal.pt') utility = ZPTTemplateRenderer(minimal) - gsm = getGlobalSiteManager() - gsm.registerUtility(utility, ITemplateRenderer, name=minimal) + self._registerUtility(utility, ITemplateRenderer, name=minimal) result = self._callFUT(minimal) self.assertEqual(result, utility) self.assertEqual(queryUtility(ITemplateRenderer, minimal), utility) def test_nonabs_unregistered(self): - from zope.component import getGlobalSiteManager from zope.component import queryUtility from repoze.bfg.chameleon_zpt import ZPTTemplateRenderer from repoze.bfg.interfaces import ITemplateRenderer minimal = self._getTemplatePath('minimal.pt') self.assertEqual(queryUtility(ITemplateRenderer, minimal), None) utility = ZPTTemplateRenderer(minimal) - gsm = getGlobalSiteManager() - gsm.registerUtility(utility, ITemplateRenderer, name=minimal) + self._registerUtility(utility, ITemplateRenderer, name=minimal) result = self._callFUT(minimal) self.assertEqual(result, utility) self.assertEqual(queryUtility(ITemplateRenderer, minimal), utility) def test_explicit_registration(self): - from zope.component import getGlobalSiteManager from repoze.bfg.interfaces import ITemplateRenderer class Dummy: template = object() - gsm = getGlobalSiteManager() utility = Dummy() - gsm.registerUtility(utility, ITemplateRenderer, name='foo') + self._registerUtility(utility, ITemplateRenderer, name='foo') result = self._callFUT('foo') self.failUnless(result is utility) @@ -144,42 +142,36 @@ class GetTemplateTests(Base, unittest.TestCase): return get_template(name) def test_nonabs_registered(self): - from zope.component import getGlobalSiteManager from zope.component import queryUtility from repoze.bfg.chameleon_zpt import ZPTTemplateRenderer from repoze.bfg.interfaces import ITemplateRenderer minimal = self._getTemplatePath('minimal.pt') utility = ZPTTemplateRenderer(minimal) - gsm = getGlobalSiteManager() - gsm.registerUtility(utility, ITemplateRenderer, name=minimal) + self._registerUtility(utility, ITemplateRenderer, name=minimal) result = self._callFUT(minimal) self.assertEqual(result.filename, minimal) self.assertEqual(queryUtility(ITemplateRenderer, minimal), utility) def test_nonabs_unregistered(self): - from zope.component import getGlobalSiteManager from zope.component import queryUtility from repoze.bfg.chameleon_zpt import ZPTTemplateRenderer from repoze.bfg.interfaces import ITemplateRenderer minimal = self._getTemplatePath('minimal.pt') self.assertEqual(queryUtility(ITemplateRenderer, minimal), None) utility = ZPTTemplateRenderer(minimal) - gsm = getGlobalSiteManager() - gsm.registerUtility(utility, ITemplateRenderer, name=minimal) + self._registerUtility(utility, ITemplateRenderer, name=minimal) result = self._callFUT(minimal) self.assertEqual(result.filename, minimal) self.assertEqual(queryUtility(ITemplateRenderer, minimal), utility) def test_explicit_registration(self): - from zope.component import getGlobalSiteManager from repoze.bfg.interfaces import ITemplateRenderer class Dummy: template = object() def implementation(self): return self.template - gsm = getGlobalSiteManager() utility = Dummy() - gsm.registerUtility(utility, ITemplateRenderer, name='foo') + self._registerUtility(utility, ITemplateRenderer, name='foo') result = self._callFUT('foo') self.failUnless(result is utility.template) diff --git a/repoze/bfg/tests/test_configuration.py b/repoze/bfg/tests/test_configuration.py new file mode 100644 index 000000000..b2fc27e3e --- /dev/null +++ b/repoze/bfg/tests/test_configuration.py @@ -0,0 +1,266 @@ +import unittest + +from repoze.bfg.testing import cleanUp + +class MakeRegistryTests(unittest.TestCase): + def setUp(self): + cleanUp() + + def tearDown(self): + cleanUp() + + def _callFUT(self, *arg, **kw): + from repoze.bfg.router import make_registry + return make_registry(*arg, **kw) + + def test_fixtureapp_default_filename_withpackage(self): + manager = DummyRegistryManager() + from repoze.bfg.tests import fixtureapp + rootfactory = DummyRootFactory(None) + registry = self._callFUT(rootfactory, fixtureapp) + self.assertEqual(registry.__name__, 'repoze.bfg.tests.fixtureapp') + from repoze.bfg.tests.fixtureapp.models import IFixture + self.failUnless(registry.queryUtility(IFixture)) # only in c.zcml + + def test_fixtureapp_explicit_filename(self): + manager = DummyRegistryManager() + from repoze.bfg.tests import fixtureapp + rootfactory = DummyRootFactory(None) + registry = self._callFUT( + rootfactory, fixtureapp, filename='another.zcml', + manager=manager) + self.assertEqual(registry.__name__, 'repoze.bfg.tests.fixtureapp') + from repoze.bfg.tests.fixtureapp.models import IFixture + self.failIf(registry.queryUtility(IFixture)) # only in c.zcml + + def test_fixtureapp_explicit_filename_in_options(self): + import os + manager = DummyRegistryManager() + rootfactory = DummyRootFactory(None) + from repoze.bfg.tests import fixtureapp + zcmlfile = os.path.join(os.path.dirname(fixtureapp.__file__), + 'another.zcml') + registry = self._callFUT( + rootfactory, fixtureapp, filename='configure.zcml', + options={'configure_zcml':zcmlfile}, + manager=manager) + self.assertEqual(registry.__name__, 'repoze.bfg.tests.fixtureapp') + from repoze.bfg.tests.fixtureapp.models import IFixture + self.failIf(registry.queryUtility(IFixture)) # only in c.zcml + + def test_fixtureapp_explicit_specification_in_options(self): + manager = DummyRegistryManager() + rootfactory = DummyRootFactory(None) + from repoze.bfg.tests import fixtureapp + zcmlfile = 'repoze.bfg.tests.fixtureapp.subpackage:yetanother.zcml' + registry = self._callFUT( + rootfactory, fixtureapp, filename='configure.zcml', + options={'configure_zcml':zcmlfile}, + manager=manager) + self.assertEqual(registry.__name__, + 'repoze.bfg.tests.fixtureapp.subpackage') + from repoze.bfg.tests.fixtureapp.models import IFixture + self.failIf(registry.queryUtility(IFixture)) # only in c.zcml + + def test_fixtureapp_filename_hascolon_isabs(self): + manager = DummyRegistryManager() + rootfactory = DummyRootFactory(None) + from repoze.bfg.tests import fixtureapp + zcmlfile = 'repoze.bfg.tests.fixtureapp.subpackage:yetanother.zcml' + class Dummy: + def isabs(self, name): + return True + os = Dummy() + os.path = Dummy() + self.assertRaises(IOError, self._callFUT, + rootfactory, + fixtureapp, + filename='configure.zcml', + options={'configure_zcml':zcmlfile}, + manager=manager, + os=os) + + def test_custom_settings(self): + manager = DummyRegistryManager() + options= {'mysetting':True} + from repoze.bfg.tests import fixtureapp + rootfactory = DummyRootFactory(None) + registry = self._callFUT(rootfactory, fixtureapp, options=options, + manager=manager) + from repoze.bfg.interfaces import ISettings + settings = registry.getUtility(ISettings) + self.assertEqual(settings.reload_templates, False) + self.assertEqual(settings.debug_authorization, False) + self.assertEqual(settings.mysetting, True) + + def test_registrations(self): + manager = DummyRegistryManager() + options= {'reload_templates':True, + 'debug_authorization':True} + from repoze.bfg.tests import fixtureapp + rootfactory = DummyRootFactory(None) + registry = self._callFUT(rootfactory, fixtureapp, options=options, + manager=manager) + from repoze.bfg.interfaces import ISettings + from repoze.bfg.interfaces import ILogger + from repoze.bfg.interfaces import IRootFactory + settings = registry.getUtility(ISettings) + logger = registry.getUtility(ILogger, name='repoze.bfg.debug') + rootfactory = registry.getUtility(IRootFactory) + self.assertEqual(logger.name, 'repoze.bfg.debug') + self.assertEqual(settings.reload_templates, True) + self.assertEqual(settings.debug_authorization, True) + self.assertEqual(rootfactory, rootfactory) + self.failUnless(manager.pushed and manager.popped) + + def test_routes_in_config_with_rootfactory(self): + options= {'reload_templates':True, + 'debug_authorization':True} + from repoze.bfg.urldispatch import RoutesRootFactory + from repoze.bfg.tests import routesapp + rootfactory = DummyRootFactory(None) + registry = self._callFUT(rootfactory, routesapp, options=options) + from repoze.bfg.interfaces import ISettings + from repoze.bfg.interfaces import ILogger + from repoze.bfg.interfaces import IRootFactory + settings = registry.getUtility(ISettings) + logger = registry.getUtility(ILogger, name='repoze.bfg.debug') + effective_rootfactory = registry.getUtility(IRootFactory) + self.assertEqual(logger.name, 'repoze.bfg.debug') + self.assertEqual(settings.reload_templates, True) + self.assertEqual(settings.debug_authorization, True) + self.failUnless(isinstance(effective_rootfactory, RoutesRootFactory)) + self.assertEqual(effective_rootfactory.default_root_factory, + rootfactory) + + def test_routes_in_config_no_rootfactory(self): + options= {'reload_templates':True, + 'debug_authorization':True} + from repoze.bfg.urldispatch import RoutesRootFactory + from repoze.bfg.router import DefaultRootFactory + from repoze.bfg.tests import routesapp + registry = self._callFUT(None, routesapp, options=options) + from repoze.bfg.interfaces import ISettings + from repoze.bfg.interfaces import ILogger + from repoze.bfg.interfaces import IRootFactory + settings = registry.getUtility(ISettings) + logger = registry.getUtility(ILogger, name='repoze.bfg.debug') + rootfactory = registry.getUtility(IRootFactory) + self.assertEqual(logger.name, 'repoze.bfg.debug') + self.assertEqual(settings.reload_templates, True) + self.assertEqual(settings.debug_authorization, True) + self.failUnless(isinstance(rootfactory, RoutesRootFactory)) + self.assertEqual(rootfactory.default_root_factory, DefaultRootFactory) + + def test_no_routes_in_config_no_rootfactory(self): + from repoze.bfg.router import DefaultRootFactory + from repoze.bfg.interfaces import IRootFactory + options= {'reload_templates':True, + 'debug_authorization':True} + from repoze.bfg.tests import fixtureapp + registry = self._callFUT(None, fixtureapp, options=options) + rootfactory = registry.getUtility(IRootFactory) + self.assertEqual(rootfactory, DefaultRootFactory) + + def test_authorization_policy_no_authentication_policy(self): + from repoze.bfg.interfaces import IAuthorizationPolicy + authzpolicy = DummyContext() + from repoze.bfg.tests import routesapp + logger = DummyLogger() + registry = self._callFUT( + None, routesapp, authorization_policy=authzpolicy, + debug_logger=logger) + self.failIf(registry.queryUtility(IAuthorizationPolicy)) + self.assertEqual(logger.messages, []) + + def test_authentication_policy_no_authorization_policy(self): + from repoze.bfg.interfaces import IAuthorizationPolicy + from repoze.bfg.interfaces import IAuthenticationPolicy + from repoze.bfg.authorization import ACLAuthorizationPolicy + authnpolicy = DummyContext() + from repoze.bfg.tests import routesapp + logger = DummyLogger() + registry = self._callFUT( + None, routesapp, authentication_policy=authnpolicy, + debug_logger=logger) + self.assertEqual(registry.getUtility(IAuthenticationPolicy), + authnpolicy) + self.assertEqual( + registry.getUtility(IAuthorizationPolicy).__class__, + ACLAuthorizationPolicy) + self.assertEqual(len(logger.messages), 1) # deprecation warning + + def test_authentication_policy_and_authorization_policy(self): + from repoze.bfg.interfaces import IAuthorizationPolicy + from repoze.bfg.interfaces import IAuthenticationPolicy + authnpolicy = DummyContext() + authzpolicy = DummyContext() + from repoze.bfg.tests import routesapp + logger = DummyLogger() + registry = self._callFUT( + None, routesapp, authentication_policy=authnpolicy, + authorization_policy = authzpolicy, + debug_logger=logger) + self.assertEqual(registry.getUtility(IAuthenticationPolicy), + authnpolicy) + self.assertEqual(registry.getUtility(IAuthorizationPolicy), + authzpolicy) + self.assertEqual(len(logger.messages), 1) # deprecation warning + + def test_lock_and_unlock(self): + from repoze.bfg.tests import fixtureapp + rootfactory = DummyRootFactory(None) + dummylock = DummyLock() + registry = self._callFUT( + rootfactory, fixtureapp, filename='configure.zcml', + lock=dummylock) + self.assertEqual(dummylock.acquired, True) + self.assertEqual(dummylock.released, True) + +class DummyRegistryManager: + def push(self, registry): + from repoze.bfg.threadlocal import manager + manager.push(registry) + self.pushed = True + + def pop(self): + from repoze.bfg.threadlocal import manager + manager.pop() + self.popped = True + +class DummyRootFactory: + def __init__(self, root): + self.root = root + + def __call__(self, environ): + return self.root + +class DummyLogger: + def __init__(self): + self.messages = [] + def info(self, msg): + self.messages.append(msg) + warn = info + debug = info + +class DummyContext: + pass + +class DummyLock: + def acquire(self): + self.acquired = True + + def release(self): + self.released = True + +class DummyThreadLocalManager: + def __init__(self, data): + self.data = data + + def pop(self): + self.popped = True + return self.data + + def push(self, data): + self.pushed = data + diff --git a/repoze/bfg/tests/test_registry.py b/repoze/bfg/tests/test_registry.py index f1bc6a6f0..57e8134c9 100644 --- a/repoze/bfg/tests/test_registry.py +++ b/repoze/bfg/tests/test_registry.py @@ -1,7 +1,5 @@ import unittest -from repoze.bfg.testing import cleanUp - class TestRegistry(unittest.TestCase): def _getTargetClass(self): from repoze.bfg.registry import Registry @@ -39,47 +37,3 @@ class TestRegistry(unittest.TestCase): registry.registerSubscriptionAdapter(EventHandler, [IFoo], Interface) self.assertEqual(registry.has_listeners, True) -class TestPopulateRegistry(unittest.TestCase): - def setUp(self): - cleanUp() - - def tearDown(self): - cleanUp() - - def _callFUT(self, *arg, **kw): - from repoze.bfg.registry import populateRegistry - return populateRegistry(*arg, **kw) - - def test_it(self): - from repoze.bfg.tests import fixtureapp - dummylock = DummyLock() - dummyregmgr = DummyThreadLocalManager({'registry':None}) - from zope.component.registry import Components - registry = Components('hello') - self._callFUT(registry, - 'configure.zcml', - fixtureapp, - lock=dummylock, - manager=dummyregmgr) - self.assertEqual(dummylock.acquired, True) - self.assertEqual(dummylock.released, True) - self.assertEqual(dummyregmgr.data['registry'], None) - -class DummyThreadLocalManager: - def __init__(self, data): - self.data = data - - def pop(self): - self.popped = True - return self.data - - def push(self, data): - self.pushed = data - -class DummyLock: - def acquire(self): - self.acquired = True - - def release(self): - self.released = True - diff --git a/repoze/bfg/tests/test_router.py b/repoze/bfg/tests/test_router.py index 5c39b65f0..151734b9b 100644 --- a/repoze/bfg/tests/test_router.py +++ b/repoze/bfg/tests/test_router.py @@ -2,7 +2,7 @@ import unittest from repoze.bfg.testing import cleanUp -class RouterTests(unittest.TestCase): +class TestRouter(unittest.TestCase): def setUp(self): from repoze.bfg.registry import Registry from zope.component import getSiteManager @@ -407,230 +407,6 @@ class RouterTests(unittest.TestCase): self.assertEqual(len(router.threadlocal_manager.pushed), 1) self.assertEqual(len(router.threadlocal_manager.popped), 1) -class MakeAppTests(unittest.TestCase): - def setUp(self): - cleanUp() - - def tearDown(self): - cleanUp() - - def _callFUT(self, *arg, **kw): - from repoze.bfg.router import make_app - return make_app(*arg, **kw) - - def test_fixtureapp_default_filename_withpackage(self): - manager = DummyRegistryManager() - from repoze.bfg.tests import fixtureapp - rootfactory = DummyRootFactory(None) - app = self._callFUT(rootfactory, fixtureapp, manager=manager) - self.assertEqual(app.registry.__name__, 'repoze.bfg.tests.fixtureapp') - from repoze.bfg.tests.fixtureapp.models import IFixture - self.failUnless(app.registry.queryUtility(IFixture)) # only in c.zcml - - def test_fixtureapp_explicit_filename(self): - manager = DummyRegistryManager() - from repoze.bfg.tests import fixtureapp - rootfactory = DummyRootFactory(None) - app = self._callFUT(rootfactory, fixtureapp, filename='another.zcml', - manager=manager) - self.assertEqual(app.registry.__name__, 'repoze.bfg.tests.fixtureapp') - from repoze.bfg.tests.fixtureapp.models import IFixture - self.failIf(app.registry.queryUtility(IFixture)) # only in c.zcml - - def test_fixtureapp_explicit_filename_in_options(self): - import os - manager = DummyRegistryManager() - rootfactory = DummyRootFactory(None) - from repoze.bfg.tests import fixtureapp - zcmlfile = os.path.join(os.path.dirname(fixtureapp.__file__), - 'another.zcml') - app = self._callFUT(rootfactory, fixtureapp, filename='configure.zcml', - options={'configure_zcml':zcmlfile}, - manager=manager) - self.assertEqual(app.registry.__name__, 'repoze.bfg.tests.fixtureapp') - from repoze.bfg.tests.fixtureapp.models import IFixture - self.failIf(app.registry.queryUtility(IFixture)) # only in c.zcml - - def test_fixtureapp_explicit_specification_in_options(self): - manager = DummyRegistryManager() - rootfactory = DummyRootFactory(None) - from repoze.bfg.tests import fixtureapp - zcmlfile = 'repoze.bfg.tests.fixtureapp.subpackage:yetanother.zcml' - app = self._callFUT(rootfactory, fixtureapp, filename='configure.zcml', - options={'configure_zcml':zcmlfile}, - manager=manager) - self.assertEqual(app.registry.__name__, - 'repoze.bfg.tests.fixtureapp.subpackage') - from repoze.bfg.tests.fixtureapp.models import IFixture - self.failIf(app.registry.queryUtility(IFixture)) # only in c.zcml - - def test_fixtureapp_filename_hascolon_isabs(self): - manager = DummyRegistryManager() - rootfactory = DummyRootFactory(None) - from repoze.bfg.tests import fixtureapp - zcmlfile = 'repoze.bfg.tests.fixtureapp.subpackage:yetanother.zcml' - class Dummy: - def isabs(self, name): - return True - os = Dummy() - os.path = Dummy() - self.assertRaises(IOError, self._callFUT, - rootfactory, - fixtureapp, - filename='configure.zcml', - options={'configure_zcml':zcmlfile}, - manager=manager, - os=os) - - def test_event(self): - manager = DummyRegistryManager() - def subscriber(event): - event.app.created = True - from repoze.bfg.interfaces import IWSGIApplicationCreatedEvent - from zope.component import getGlobalSiteManager - getGlobalSiteManager().registerHandler( - subscriber, - (IWSGIApplicationCreatedEvent,) - ) - from repoze.bfg.tests import fixtureapp - rootfactory = DummyRootFactory(None) - app = self._callFUT(rootfactory, fixtureapp, manager=manager) - assert app.created is True - - def test_custom_settings(self): - manager = DummyRegistryManager() - options= {'mysetting':True} - from repoze.bfg.tests import fixtureapp - rootfactory = DummyRootFactory(None) - app = self._callFUT(rootfactory, fixtureapp, options=options, - manager=manager) - from repoze.bfg.interfaces import ISettings - settings = app.registry.getUtility(ISettings) - self.assertEqual(settings.reload_templates, False) - self.assertEqual(settings.debug_authorization, False) - self.assertEqual(settings.mysetting, True) - - def test_registrations(self): - manager = DummyRegistryManager() - options= {'reload_templates':True, - 'debug_authorization':True} - from repoze.bfg.tests import fixtureapp - rootfactory = DummyRootFactory(None) - app = self._callFUT(rootfactory, fixtureapp, options=options, - manager=manager) - from repoze.bfg.interfaces import ISettings - from repoze.bfg.interfaces import ILogger - from repoze.bfg.interfaces import IRootFactory - settings = app.registry.getUtility(ISettings) - logger = app.registry.getUtility(ILogger, name='repoze.bfg.debug') - rootfactory = app.registry.getUtility(IRootFactory) - self.assertEqual(logger.name, 'repoze.bfg.debug') - self.assertEqual(settings.reload_templates, True) - self.assertEqual(settings.debug_authorization, True) - self.assertEqual(rootfactory, rootfactory) - self.failUnless(manager.pushed and manager.popped) - - def test_routes_in_config_with_rootfactory(self): - manager = DummyRegistryManager() - options= {'reload_templates':True, - 'debug_authorization':True} - from repoze.bfg.urldispatch import RoutesRootFactory - from repoze.bfg.tests import routesapp - rootfactory = DummyRootFactory(None) - app = self._callFUT(rootfactory, routesapp, options=options, - manager=manager) - from repoze.bfg.interfaces import ISettings - from repoze.bfg.interfaces import ILogger - from repoze.bfg.interfaces import IRootFactory - settings = app.registry.getUtility(ISettings) - logger = app.registry.getUtility(ILogger, name='repoze.bfg.debug') - effective_rootfactory = app.registry.getUtility(IRootFactory) - self.assertEqual(logger.name, 'repoze.bfg.debug') - self.assertEqual(settings.reload_templates, True) - self.assertEqual(settings.debug_authorization, True) - self.failUnless(isinstance(effective_rootfactory, RoutesRootFactory)) - self.assertEqual(effective_rootfactory.default_root_factory, - rootfactory) - self.failUnless(manager.pushed and manager.popped) - - def test_routes_in_config_no_rootfactory(self): - manager = DummyRegistryManager() - options= {'reload_templates':True, - 'debug_authorization':True} - from repoze.bfg.urldispatch import RoutesRootFactory - from repoze.bfg.router import DefaultRootFactory - from repoze.bfg.tests import routesapp - app = self._callFUT(None, routesapp, options=options, - manager=manager) - from repoze.bfg.interfaces import ISettings - from repoze.bfg.interfaces import ILogger - from repoze.bfg.interfaces import IRootFactory - settings = app.registry.getUtility(ISettings) - logger = app.registry.getUtility(ILogger, name='repoze.bfg.debug') - rootfactory = app.registry.getUtility(IRootFactory) - self.assertEqual(logger.name, 'repoze.bfg.debug') - self.assertEqual(settings.reload_templates, True) - self.assertEqual(settings.debug_authorization, True) - self.failUnless(isinstance(rootfactory, RoutesRootFactory)) - self.assertEqual(rootfactory.default_root_factory, DefaultRootFactory) - self.failUnless(manager.pushed and manager.popped) - - def test_no_routes_in_config_no_rootfactory(self): - manager = DummyRegistryManager() - from repoze.bfg.router import DefaultRootFactory - from repoze.bfg.interfaces import IRootFactory - options= {'reload_templates':True, - 'debug_authorization':True} - from repoze.bfg.tests import fixtureapp - app = self._callFUT(None, fixtureapp, options=options, - manager=manager) - rootfactory = app.registry.getUtility(IRootFactory) - self.assertEqual(rootfactory, DefaultRootFactory) - - def test_authorization_policy_no_authentication_policy(self): - manager = DummyRegistryManager() - from repoze.bfg.interfaces import IAuthorizationPolicy - authzpolicy = DummyContext() - from repoze.bfg.tests import routesapp - logger = DummyLogger() - app = self._callFUT(None, routesapp, authorization_policy=authzpolicy, - debug_logger=logger, manager=manager) - self.failIf(app.registry.queryUtility(IAuthorizationPolicy)) - self.assertEqual(logger.messages, []) - - def test_authentication_policy_no_authorization_policy(self): - manager = DummyRegistryManager() - from repoze.bfg.interfaces import IAuthorizationPolicy - from repoze.bfg.interfaces import IAuthenticationPolicy - from repoze.bfg.authorization import ACLAuthorizationPolicy - authnpolicy = DummyContext() - from repoze.bfg.tests import routesapp - logger = DummyLogger() - app = self._callFUT(None, routesapp, authentication_policy=authnpolicy, - debug_logger=logger, manager=manager) - self.assertEqual(app.registry.getUtility(IAuthenticationPolicy), - authnpolicy) - self.assertEqual( - app.registry.getUtility(IAuthorizationPolicy).__class__, - ACLAuthorizationPolicy) - self.assertEqual(len(logger.messages), 1) # deprecation warning - - def test_authentication_policy_and_authorization_policy(self): - manager = DummyRegistryManager() - from repoze.bfg.interfaces import IAuthorizationPolicy - from repoze.bfg.interfaces import IAuthenticationPolicy - authnpolicy = DummyContext() - authzpolicy = DummyContext() - from repoze.bfg.tests import routesapp - logger = DummyLogger() - app = self._callFUT(None, routesapp, authentication_policy=authnpolicy, - authorization_policy = authzpolicy, - debug_logger=logger, manager=manager) - self.assertEqual(app.registry.getUtility(IAuthenticationPolicy), - authnpolicy) - self.assertEqual(app.registry.getUtility(IAuthorizationPolicy), - authzpolicy) - self.assertEqual(len(logger.messages), 1) # deprecation warning class TestDefaultRootFactory(unittest.TestCase): def _getTargetClass(self): @@ -652,13 +428,38 @@ class TestDefaultRootFactory(unittest.TestCase): self.assertEqual(root.a, 1) self.assertEqual(root.b, 2) +class TestMakeApp(unittest.TestCase): + def setUp(self): + cleanUp() -class DummyRegistryManager: - def push(self, registry): - self.pushed = True + def tearDown(self): + cleanUp() - def pop(self): - self.popped = True + def _callFUT(self, *arg, **kw): + from repoze.bfg.router import make_app + return make_app(None, *arg, **kw) + + def test_it(self): + from repoze.bfg.interfaces import IWSGIApplicationCreatedEvent + from zope.component import getSiteManager + from repoze.bfg.tests import fixtureapp + sm = getSiteManager() + class DummyMakeRegistry(object): + def __call__(self, *arg): + self.arg = arg + return sm + def subscriber(event): + event.app.created = True + dummy_make_registry = DummyMakeRegistry() + manager = DummyRegistryManager() + sm.registerHandler(subscriber, (IWSGIApplicationCreatedEvent,)) + rootfactory = DummyRootFactory(None) + app = self._callFUT(rootfactory, fixtureapp, manager=manager, + make_registry=dummy_make_registry) + self.failUnless(app.created) + self.failUnless(manager.pushed) + self.failUnless(manager.popped) + self.assertEqual(len(dummy_make_registry.arg), 6) class DummyContext: pass @@ -720,3 +521,10 @@ class DummyLogger: warn = info debug = info +class DummyRegistryManager: + def push(self, registry): + self.pushed = True + + def pop(self): + self.popped = True + diff --git a/repoze/bfg/tests/test_security.py b/repoze/bfg/tests/test_security.py index ef08e8641..d3d89923d 100644 --- a/repoze/bfg/tests/test_security.py +++ b/repoze/bfg/tests/test_security.py @@ -124,18 +124,18 @@ class TestViewExecutionPermitted(unittest.TestCase): self.request = request return allow checker = Checker() - gsm = zope.component.getGlobalSiteManager() - gsm.registerAdapter(checker, (Interface, Interface), - ISecuredView, - view_name) + sm = zope.component.getSiteManager() + sm.registerAdapter(checker, (Interface, Interface), + ISecuredView, + view_name) return checker def test_no_permission(self): import zope.component - gsm = zope.component.getGlobalSiteManager() + sm = zope.component.getSiteManager() from repoze.bfg.interfaces import ISettings settings = dict(debug_authorization=True) - gsm.registerUtility(settings, ISettings) + sm.registerUtility(settings, ISettings) context = DummyContext() request = DummyRequest({}) result = self._callFUT(context, request, '') @@ -162,16 +162,16 @@ def _registerAuthenticationPolicy(result): from repoze.bfg.interfaces import IAuthenticationPolicy policy = DummyAuthenticationPolicy(result) import zope.component - gsm = zope.component.getGlobalSiteManager() - gsm.registerUtility(policy, IAuthenticationPolicy) + sm = zope.component.getSiteManager() + sm.registerUtility(policy, IAuthenticationPolicy) return policy def _registerAuthorizationPolicy(result): from repoze.bfg.interfaces import IAuthorizationPolicy policy = DummyAuthorizationPolicy(result) import zope.component - gsm = zope.component.getGlobalSiteManager() - gsm.registerUtility(policy, IAuthorizationPolicy) + sm = zope.component.getSiteManager() + sm.registerUtility(policy, IAuthorizationPolicy) return policy diff --git a/repoze/bfg/tests/test_settings.py b/repoze/bfg/tests/test_settings.py index bef8297bf..ba43fac04 100644 --- a/repoze/bfg/tests/test_settings.py +++ b/repoze/bfg/tests/test_settings.py @@ -35,10 +35,11 @@ class TestGetSettings(unittest.TestCase): self.assertEqual(self._callFUT(), None) def test_it_withsettings(self): + from zope.component import getSiteManager from repoze.bfg.interfaces import ISettings - from zope.component import provideUtility + sm = getSiteManager() settings = {'a':1} - provideUtility(settings, ISettings) + sm.registerUtility(settings, ISettings) self.assertEqual(self._callFUT(), settings) class TestGetOptions(unittest.TestCase): diff --git a/repoze/bfg/tests/test_testing.py b/repoze/bfg/tests/test_testing.py index 05cddc980..7e468725a 100644 --- a/repoze/bfg/tests/test_testing.py +++ b/repoze/bfg/tests/test_testing.py @@ -507,39 +507,52 @@ class TestDummyTemplateRenderer(unittest.TestCase): result = renderer({'a':1, 'b':2}) self.assertEqual(result, 'abc') -class CleanUpTests(object): +class TestSetUp(unittest.TestCase): def setUp(self): - from repoze.bfg.testing import _cleanups - self._old_cleanups = _cleanups[:] - - def tearDown(self): - from repoze.bfg import testing - testing._cleanups = self._old_cleanups - -class TestAddCleanUp(CleanUpTests, unittest.TestCase): - def _getFUT(self, ): - from repoze.bfg.testing import addCleanUp - return addCleanUp + from zope.component import getSiteManager + getSiteManager.reset() + + def _callFUT(self, ): + from repoze.bfg.testing import setUp + return setUp() def test_it(self): - addCleanUp = self._getFUT() - addCleanUp(1, ('a', 'b'), {'foo':'bar'}) - from repoze.bfg.testing import _cleanups - self.assertEqual(_cleanups[-1], (1, ('a', 'b'), {'foo':'bar'})) + from zope.component.globalregistry import base + from zope.interface import Interface + from zope.component import getSiteManager + getSiteManager.sethook(lambda *arg: base) + class IFoo(Interface): + pass + def foo(): + """ """ + base.registerUtility(foo, IFoo) + sm = getSiteManager() + self.assertEqual(sm.queryUtility(IFoo), foo) + self._callFUT() + newsm = getSiteManager() + self.assertEqual(newsm.queryUtility(IFoo), None) -class TestCleanUp(CleanUpTests, unittest.TestCase): - def _getFUT(self, ): +class TestCleanUp(TestSetUp): + def _callFUT(self, ): from repoze.bfg.testing import cleanUp - return cleanUp + return cleanUp() + +class TestTearDown(unittest.TestCase): + def setUp(self): + from zope.component import getSiteManager + getSiteManager.reset() + + def _callFUT(self, ): + from repoze.bfg.testing import tearDown + return tearDown() def test_it(self): - from repoze.bfg.testing import _cleanups - cleanUp = self._getFUT() - L = [] - def f(*arg, **kw): - L.append((arg, kw)) - _cleanups.append((f, ('a', '1'), {'kw':'1'})) - cleanUp() - self.assertEqual(L, [(('a', '1'), {'kw':'1'})]) - + from zope.component.globalregistry import base + from zope.component import getSiteManager + getSiteManager.sethook(lambda *arg: 'foo') + sm = getSiteManager() + self.assertEqual(sm, 'foo') + self._callFUT() + newsm = getSiteManager() + self.assertEqual(newsm, base) diff --git a/repoze/bfg/tests/test_threadlocal.py b/repoze/bfg/tests/test_threadlocal.py index 2cf405508..09a25debd 100644 --- a/repoze/bfg/tests/test_threadlocal.py +++ b/repoze/bfg/tests/test_threadlocal.py @@ -21,10 +21,11 @@ class TestThreadLocalManager(unittest.TestCase): self.assertEqual(local.get(), 1) def test_default(self): - from zope.component import getGlobalSiteManager - local = self._makeOne(getGlobalSiteManager) + def thedefault(): + return '123' + local = self._makeOne(thedefault) self.assertEqual(local.stack, []) - self.assertEqual(local.get(), getGlobalSiteManager()) + self.assertEqual(local.get(), '123') def test_push_and_pop(self): local = self._makeOne() diff --git a/repoze/bfg/tests/test_traversal.py b/repoze/bfg/tests/test_traversal.py index a4e90bc07..69a8b4b6f 100644 --- a/repoze/bfg/tests/test_traversal.py +++ b/repoze/bfg/tests/test_traversal.py @@ -391,10 +391,10 @@ class FindModelTests(unittest.TestCase): def _registerTraverserFactory(self, traverser): import zope.component - gsm = zope.component.getGlobalSiteManager() + sm = zope.component.getSiteManager() from repoze.bfg.interfaces import ITraverserFactory from zope.interface import Interface - gsm.registerAdapter(traverser, (Interface,), ITraverserFactory) + sm.registerAdapter(traverser, (Interface,), ITraverserFactory) def test_list(self): model = DummyContext() @@ -663,10 +663,10 @@ class TraversalContextURLTests(unittest.TestCase): def _registerTraverserFactory(self, traverser): import zope.component - gsm = zope.component.getGlobalSiteManager() + sm = zope.component.getSiteManager() from repoze.bfg.interfaces import ITraverserFactory from zope.interface import Interface - gsm.registerAdapter(traverser, (Interface,), ITraverserFactory) + sm.registerAdapter(traverser, (Interface,), ITraverserFactory) def test_class_conforms_to_IContextURL(self): from zope.interface.verify import verifyClass @@ -849,12 +849,12 @@ class TestVirtualRoot(unittest.TestCase): return virtual_root(model, request) def test_registered(self): - from zope.component import getGlobalSiteManager + from zope.component import getSiteManager from repoze.bfg.interfaces import IContextURL from zope.interface import Interface - gsm = getGlobalSiteManager() - gsm.registerAdapter(DummyContextURL, (Interface,Interface), - IContextURL) + sm = getSiteManager() + sm.registerAdapter(DummyContextURL, (Interface,Interface), + IContextURL) context = DummyContext() request = DummyRequest() result = self._callFUT(context, request) @@ -880,10 +880,10 @@ class TraverseTests(unittest.TestCase): def _registerTraverserFactory(self, traverser): import zope.component - gsm = zope.component.getGlobalSiteManager() + sm = zope.component.getSiteManager() from repoze.bfg.interfaces import ITraverserFactory from zope.interface import Interface - gsm.registerAdapter(traverser, (Interface,), ITraverserFactory) + sm.registerAdapter(traverser, (Interface,), ITraverserFactory) def test_list(self): model = DummyContext() @@ -977,10 +977,10 @@ class UnderTraverseTests(unittest.TestCase): def _registerTraverserFactory(self, traverser): import zope.component - gsm = zope.component.getGlobalSiteManager() + sm = zope.component.getSiteManager() from repoze.bfg.interfaces import ITraverserFactory from zope.interface import Interface - gsm.registerAdapter(traverser, (Interface,), ITraverserFactory) + sm.registerAdapter(traverser, (Interface,), ITraverserFactory) def test_default_traverser_factory(self): context = DummyContext() diff --git a/repoze/bfg/tests/test_url.py b/repoze/bfg/tests/test_url.py index 1199328e3..6754f6f34 100644 --- a/repoze/bfg/tests/test_url.py +++ b/repoze/bfg/tests/test_url.py @@ -16,15 +16,15 @@ class ModelURLTests(unittest.TestCase): def _registerContextURL(self): from repoze.bfg.interfaces import IContextURL from zope.interface import Interface - from zope.component import getGlobalSiteManager + from zope.component import getSiteManager class DummyContextURL(object): def __init__(self, context, request): pass def __call__(self): return 'http://example.com/context/' - gsm = getGlobalSiteManager() - gsm.registerAdapter(DummyContextURL, (Interface, Interface), - IContextURL) + sm = getSiteManager() + sm.registerAdapter(DummyContextURL, (Interface, Interface), + IContextURL) def test_root_default(self): self._registerContextURL() diff --git a/repoze/bfg/tests/test_view.py b/repoze/bfg/tests/test_view.py index 8e2310c09..eee5a61bd 100644 --- a/repoze/bfg/tests/test_view.py +++ b/repoze/bfg/tests/test_view.py @@ -11,9 +11,9 @@ class BaseTest(object): def _registerView(self, app, name, *for_): import zope.component - gsm = zope.component.getGlobalSiteManager() + sm = zope.component.getSiteManager() from repoze.bfg.interfaces import IView - gsm.registerAdapter(app, for_, IView, name) + sm.registerAdapter(app, for_, IView, name) def _makeEnviron(self, **extras): environ = { @@ -466,8 +466,8 @@ class AppendSlashNotFoundView(unittest.TestCase): return self.routelist mapper = DummyMapper() import zope.component - gsm = zope.component.getGlobalSiteManager() - gsm.registerUtility(mapper, IRoutesMapper) + sm = zope.component.getSiteManager() + sm.registerUtility(mapper, IRoutesMapper) return mapper def test_no_mapper(self): diff --git a/repoze/bfg/tests/test_zcml.py b/repoze/bfg/tests/test_zcml.py index 1f0fc44d8..d592fd902 100644 --- a/repoze/bfg/tests/test_zcml.py +++ b/repoze/bfg/tests/test_zcml.py @@ -1486,11 +1486,11 @@ class TestConnectRouteFunction(unittest.TestCase): return connect_route(path, name, factory) def _registerRoutesMapper(self): - from zope.component import getGlobalSiteManager - gsm = getGlobalSiteManager() + from zope.component import getSiteManager + sm = getSiteManager() mapper = DummyMapper() from repoze.bfg.interfaces import IRoutesMapper - gsm.registerUtility(mapper, IRoutesMapper) + sm.registerUtility(mapper, IRoutesMapper) return mapper def test_defaults(self): |
