summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-07-02 07:15:44 +0000
committerChris McDonough <chrism@agendaless.com>2009-07-02 07:15:44 +0000
commit1eb861e0f046397715a92ed7ad7b85a2baa22b29 (patch)
treefb38becdf9654925f1ec92b5998e2da53678f508 /repoze/bfg/tests
parent0af38fb5dd7c59fb0ce185edd76064b3db4cabdd (diff)
downloadpyramid-1eb861e0f046397715a92ed7ad7b85a2baa22b29.tar.gz
pyramid-1eb861e0f046397715a92ed7ad7b85a2baa22b29.tar.bz2
pyramid-1eb861e0f046397715a92ed7ad7b85a2baa22b29.zip
- Allow a Paste config file (``configure_zcml``) value or an
environment variable (``BFG_CONFIGURE_ZCML``) to name a ZCML file that will be used to bootstrap the application. Previously, the integrator could not influence which ZCML file was used to do the boostrapping (only the original application developer could do so).
Diffstat (limited to 'repoze/bfg/tests')
-rw-r--r--repoze/bfg/tests/fixtureapp/another.zcml2
-rw-r--r--repoze/bfg/tests/fixtureapp/configure.zcml5
-rw-r--r--repoze/bfg/tests/fixtureapp/models.py3
-rw-r--r--repoze/bfg/tests/test_router.py147
-rw-r--r--repoze/bfg/tests/test_settings.py11
5 files changed, 114 insertions, 54 deletions
diff --git a/repoze/bfg/tests/fixtureapp/another.zcml b/repoze/bfg/tests/fixtureapp/another.zcml
index c01245656..0ed8cff1b 100644
--- a/repoze/bfg/tests/fixtureapp/another.zcml
+++ b/repoze/bfg/tests/fixtureapp/another.zcml
@@ -1,5 +1,7 @@
<configure xmlns="http://namespaces.repoze.org/bfg">
+ <include package="repoze.bfg.includes" />
+
<view
view=".views.fixture_view"
for="*"
diff --git a/repoze/bfg/tests/fixtureapp/configure.zcml b/repoze/bfg/tests/fixtureapp/configure.zcml
index 29d7a7329..4a36d891a 100644
--- a/repoze/bfg/tests/fixtureapp/configure.zcml
+++ b/repoze/bfg/tests/fixtureapp/configure.zcml
@@ -16,6 +16,11 @@
request_type=".views.IDummy"
/>
+ <utility
+ component=".models.fixture"
+ provides=".models.IFixture"
+ />
+
<include file="another.zcml"/>
</configure>
diff --git a/repoze/bfg/tests/fixtureapp/models.py b/repoze/bfg/tests/fixtureapp/models.py
index a57b06308..d80d14bb3 100644
--- a/repoze/bfg/tests/fixtureapp/models.py
+++ b/repoze/bfg/tests/fixtureapp/models.py
@@ -3,3 +3,6 @@ from zope.interface import Interface
class IFixture(Interface):
pass
+def fixture():
+ """ """
+
diff --git a/repoze/bfg/tests/test_router.py b/repoze/bfg/tests/test_router.py
index b0f75d899..cd88f8971 100644
--- a/repoze/bfg/tests/test_router.py
+++ b/repoze/bfg/tests/test_router.py
@@ -97,7 +97,7 @@ class RouterTests(unittest.TestCase):
return L
def _registerRootFactory(self, val):
- rootfactory = make_rootfactory(val)
+ rootfactory = DummyRootFactory(val)
from repoze.bfg.interfaces import IRootFactory
self.registry.registerUtility(rootfactory, IRootFactory)
return rootfactory
@@ -221,7 +221,7 @@ class RouterTests(unittest.TestCase):
context = DummyContext()
self._registerTraverserFactory(context)
environ = self._makeEnviron()
- view = make_view('abc')
+ view = DummyView('abc')
self._registerView(view, '', None, None)
router = self._makeOne()
start_response = DummyStartResponse()
@@ -251,7 +251,7 @@ class RouterTests(unittest.TestCase):
self._registerTraverserFactory(context)
self._registerAuthenticationPolicy()
response = DummyResponse()
- view = make_view(response)
+ view = DummyView(response)
from repoze.bfg.security import ACLDenied
denied = ACLDenied('ace', 'acl', 'permission', ['principals'], context)
environ = self._makeEnviron()
@@ -269,7 +269,7 @@ class RouterTests(unittest.TestCase):
self._registerTraverserFactory(context)
response = DummyResponse()
response.app_iter = ['Hello world']
- view = make_view(response)
+ view = DummyView(response)
environ = self._makeEnviron()
self._registerView(view, '', None, None)
rootfactory = self._registerRootFactory(context)
@@ -289,7 +289,7 @@ class RouterTests(unittest.TestCase):
self._registerTraverserFactory(context, _deprecation_warning='abc')
response = DummyResponse()
response.app_iter = ['Hello world']
- view = make_view(response)
+ view = DummyView(response)
environ = self._makeEnviron()
self._registerView(view, '', None, None)
router = self._makeOne()
@@ -308,7 +308,7 @@ class RouterTests(unittest.TestCase):
rootfactory = self._registerRootFactory(context)
response = DummyResponse()
response.app_iter = ['Hello world']
- view = make_view(response)
+ view = DummyView(response)
environ = self._makeEnviron()
self._registerView(view, 'foo', None, None)
router = self._makeOne()
@@ -334,7 +334,7 @@ class RouterTests(unittest.TestCase):
rootfactory = self._registerRootFactory(context)
response = DummyResponse()
response.app_iter = ['Hello world']
- view = make_view(response)
+ view = DummyView(response)
environ = self._makeEnviron()
self._registerView(view, '', IContext, IRequest)
router = self._makeOne()
@@ -360,7 +360,7 @@ class RouterTests(unittest.TestCase):
directlyProvides(context, INotContext)
self._registerTraverserFactory(context, subpath=[''])
response = DummyResponse()
- view = make_view(response)
+ view = DummyView(response)
environ = self._makeEnviron()
self._registerView(view, '', IContext, IRequest)
router = self._makeOne()
@@ -379,7 +379,7 @@ class RouterTests(unittest.TestCase):
directlyProvides(context, IContext)
self._registerTraverserFactory(context, subpath=[''])
response = DummyResponse()
- view = make_view(response)
+ view = DummyView(response)
environ = self._makeEnviron()
self._registerView(view, '', IContext, IRequest)
router = self._makeOne()
@@ -398,7 +398,7 @@ class RouterTests(unittest.TestCase):
directlyProvides(context, IContext)
self._registerTraverserFactory(context, subpath=[''])
response = DummyResponse()
- view = make_view(response)
+ view = DummyView(response)
environ = self._makeEnviron()
self._registerView(view, '', IContext, IRequest)
router = self._makeOne()
@@ -421,7 +421,7 @@ class RouterTests(unittest.TestCase):
directlyProvides(context, IContext)
self._registerTraverserFactory(context, subpath=[''])
response = DummyResponse()
- view = make_view(response)
+ view = DummyView(response)
environ = self._makeEnviron()
self._registerView(view, '', IContext, IRequest)
router = self._makeOne()
@@ -444,7 +444,7 @@ class RouterTests(unittest.TestCase):
directlyProvides(context, IContext)
self._registerTraverserFactory(context, subpath=[''])
response = DummyResponse()
- view = make_view(response)
+ view = DummyView(response)
environ = self._makeEnviron()
self._registerView(view, '', IContext, IRequest)
router = self._makeOne()
@@ -465,7 +465,7 @@ class RouterTests(unittest.TestCase):
self._registerTraverserFactory(context, subpath=[''])
self._registerAuthenticationPolicy()
response = DummyResponse()
- view = make_view(response)
+ view = DummyView(response)
environ = self._makeEnviron()
self._registerView(view, '', IContext, IRequest)
checker = self._registerViewPermission('', True)
@@ -486,7 +486,7 @@ class RouterTests(unittest.TestCase):
self._registerTraverserFactory(context, subpath=[''])
self._registerAuthenticationPolicy()
response = DummyResponse()
- view = make_view(response)
+ view = DummyView(response)
from repoze.bfg.security import ACLDenied
denied = ACLDenied('ace', 'acl', 'permission', ['principals'], context)
environ = self._makeEnviron()
@@ -511,7 +511,7 @@ class RouterTests(unittest.TestCase):
self._registerTraverserFactory(context, subpath=[''])
self._registerAuthenticationPolicy()
response = DummyResponse()
- view = make_view(response)
+ view = DummyView(response)
from repoze.bfg.security import ACLDenied
denied = ACLDenied('ace', 'acl', 'permission', ['principals'], context)
environ = self._makeEnviron()
@@ -537,7 +537,7 @@ class RouterTests(unittest.TestCase):
self._registerAuthenticationPolicy()
self._registerTraverserFactory(context, subpath=[''])
response = DummyResponse()
- view = make_view(response)
+ view = DummyView(response)
from repoze.bfg.security import ACLDenied
environ = self._makeEnviron()
self._registerView(view, '', IContext, IRequest)
@@ -571,7 +571,7 @@ class RouterTests(unittest.TestCase):
self._registerTraverserFactory(context)
response = DummyResponse()
response.app_iter = ['Hello world']
- view = make_view(response)
+ view = DummyView(response)
environ = self._makeEnviron()
self._registerView(view, '', None, None)
from repoze.bfg.interfaces import INewRequest
@@ -591,7 +591,7 @@ class RouterTests(unittest.TestCase):
self._registerTraverserFactory(context)
response = DummyResponse()
response.app_iter = ['Hello world']
- view = make_view(response)
+ view = DummyView(response)
environ = self._makeEnviron()
self._registerView(view, '', None, None)
router = self._makeOne()
@@ -610,7 +610,7 @@ class RouterTests(unittest.TestCase):
self._registerTraverserFactory(context)
response = DummyResponse()
response.app_iter = ['Hello world']
- view = make_view(response)
+ view = DummyView(response)
environ = self._makeEnviron(REQUEST_METHOD='POST')
self._registerView(view, '', None, None)
router = self._makeOne()
@@ -631,7 +631,7 @@ class RouterTests(unittest.TestCase):
self._registerTraverserFactory(context)
response = DummyResponse()
response.app_iter = ['Hello world']
- view = make_view(response)
+ view = DummyView(response)
environ = self._makeEnviron(REQUEST_METHOD='PUT')
self._registerView(view, '', None, None)
router = self._makeOne()
@@ -650,7 +650,7 @@ class RouterTests(unittest.TestCase):
self._registerTraverserFactory(context)
response = DummyResponse()
response.app_iter = ['Hello world']
- view = make_view(response)
+ view = DummyView(response)
environ = self._makeEnviron(REQUEST_METHOD='UNKNOWN')
self._registerView(view, '', None, None)
router = self._makeOne()
@@ -663,27 +663,49 @@ class RouterTests(unittest.TestCase):
class MakeAppTests(unittest.TestCase):
def setUp(self):
cleanUp()
- import repoze.bfg.router
- self.old_tl_manager = repoze.bfg.router.manager
- self.regmgr = DummyRegistryManager()
- repoze.bfg.router.manager = self.regmgr
def tearDown(self):
cleanUp()
- import repoze.bfg.router
- repoze.bfg.router.threadlocal_manager = self.old_tl_manager
def _callFUT(self, *arg, **kw):
from repoze.bfg.router import make_app
return make_app(*arg, **kw)
- def test_fixtureapp(self):
+ def test_fixtureapp_default_filename_withpackage(self):
+ manager = DummyRegistryManager()
from repoze.bfg.tests import fixtureapp
- rootpolicy = make_rootfactory(None)
- app = self._callFUT(rootpolicy, fixtureapp)
+ rootpolicy = DummyRootFactory(None)
+ app = self._callFUT(rootpolicy, 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
+ rootpolicy = DummyRootFactory(None)
+ app = self._callFUT(rootpolicy, 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()
+ rootpolicy = DummyRootFactory(None)
+ from repoze.bfg.tests import fixtureapp
+ zcmlfile = os.path.join(os.path.dirname(fixtureapp.__file__),
+ 'another.zcml')
+ app = self._callFUT(rootpolicy, 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_event(self):
+ manager = DummyRegistryManager()
def subscriber(event):
event.app.created = True
from repoze.bfg.interfaces import IWSGIApplicationCreatedEvent
@@ -693,15 +715,17 @@ class MakeAppTests(unittest.TestCase):
(IWSGIApplicationCreatedEvent,)
)
from repoze.bfg.tests import fixtureapp
- rootpolicy = make_rootfactory(None)
- app = self._callFUT(rootpolicy, fixtureapp)
+ rootpolicy = DummyRootFactory(None)
+ app = self._callFUT(rootpolicy, fixtureapp, manager=manager)
assert app.created is True
def test_custom_settings(self):
+ manager = DummyRegistryManager()
options= {'mysetting':True}
from repoze.bfg.tests import fixtureapp
- rootpolicy = make_rootfactory(None)
- app = self._callFUT(rootpolicy, fixtureapp, options=options)
+ rootpolicy = DummyRootFactory(None)
+ app = self._callFUT(rootpolicy, fixtureapp, options=options,
+ manager=manager)
from repoze.bfg.interfaces import ISettings
settings = app.registry.getUtility(ISettings)
self.assertEqual(settings.reload_templates, False)
@@ -709,11 +733,13 @@ class MakeAppTests(unittest.TestCase):
self.assertEqual(settings.mysetting, True)
def test_registrations(self):
+ manager = DummyRegistryManager()
options= {'reload_templates':True,
'debug_authorization':True}
from repoze.bfg.tests import fixtureapp
- rootpolicy = make_rootfactory(None)
- app = self._callFUT(rootpolicy, fixtureapp, options=options)
+ rootpolicy = DummyRootFactory(None)
+ app = self._callFUT(rootpolicy, fixtureapp, options=options,
+ manager=manager)
from repoze.bfg.interfaces import ISettings
from repoze.bfg.interfaces import ILogger
from repoze.bfg.interfaces import IRootFactory
@@ -724,15 +750,17 @@ class MakeAppTests(unittest.TestCase):
self.assertEqual(settings.reload_templates, True)
self.assertEqual(settings.debug_authorization, True)
self.assertEqual(rootfactory, rootpolicy)
- self.failUnless(self.regmgr.pushed and self.regmgr.popped)
+ self.failUnless(manager.pushed and manager.popped)
def test_routes_in_config_with_rootpolicy(self):
+ manager = DummyRegistryManager()
options= {'reload_templates':True,
'debug_authorization':True}
from repoze.bfg.urldispatch import RoutesRootFactory
from repoze.bfg.tests import routesapp
- rootpolicy = make_rootfactory(None)
- app = self._callFUT(rootpolicy, routesapp, options=options)
+ rootpolicy = DummyRootFactory(None)
+ app = self._callFUT(rootpolicy, routesapp, options=options,
+ manager=manager)
from repoze.bfg.interfaces import ISettings
from repoze.bfg.interfaces import ILogger
from repoze.bfg.interfaces import IRootFactory
@@ -744,15 +772,17 @@ class MakeAppTests(unittest.TestCase):
self.assertEqual(settings.debug_authorization, True)
self.failUnless(isinstance(rootfactory, RoutesRootFactory))
self.assertEqual(rootfactory.default_root_factory, rootpolicy)
- self.failUnless(self.regmgr.pushed and self.regmgr.popped)
+ self.failUnless(manager.pushed and manager.popped)
def test_routes_in_config_no_rootpolicy(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)
+ 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
@@ -764,29 +794,33 @@ class MakeAppTests(unittest.TestCase):
self.assertEqual(settings.debug_authorization, True)
self.failUnless(isinstance(rootfactory, RoutesRootFactory))
self.assertEqual(rootfactory.default_root_factory, DefaultRootFactory)
- self.failUnless(self.regmgr.pushed and self.regmgr.popped)
+ self.failUnless(manager.pushed and manager.popped)
def test_no_routes_in_config_no_rootpolicy(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)
+ 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)
+ 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
@@ -794,7 +828,7 @@ class MakeAppTests(unittest.TestCase):
from repoze.bfg.tests import routesapp
logger = DummyLogger()
app = self._callFUT(None, routesapp, authentication_policy=authnpolicy,
- debug_logger=logger)
+ debug_logger=logger, manager=manager)
self.assertEqual(app.registry.getUtility(IAuthenticationPolicy),
authnpolicy)
self.assertEqual(
@@ -803,6 +837,7 @@ class MakeAppTests(unittest.TestCase):
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()
@@ -811,7 +846,7 @@ class MakeAppTests(unittest.TestCase):
logger = DummyLogger()
app = self._callFUT(None, routesapp, authentication_policy=authnpolicy,
authorization_policy = authzpolicy,
- debug_logger=logger)
+ debug_logger=logger, manager=manager)
self.assertEqual(app.registry.getUtility(IAuthenticationPolicy),
authnpolicy)
self.assertEqual(app.registry.getUtility(IAuthorizationPolicy),
@@ -866,15 +901,19 @@ class DummyRegistryManager:
class DummyContext:
pass
-def make_view(response):
- def view(context, request):
- return response
- return view
+class DummyView:
+ def __init__(self, response):
+ self.response = response
+
+ def __call__(self, context, request):
+ return self.response
+
+class DummyRootFactory:
+ def __init__(self, root):
+ self.root = root
-def make_rootfactory(root):
- def rootpolicy(environ):
- return root
- return rootpolicy
+ def __call__(self, environ):
+ return self.root
class DummyStartResponse:
status = ()
diff --git a/repoze/bfg/tests/test_settings.py b/repoze/bfg/tests/test_settings.py
index 8319a302d..bef8297bf 100644
--- a/repoze/bfg/tests/test_settings.py
+++ b/repoze/bfg/tests/test_settings.py
@@ -148,6 +148,17 @@ class TestGetOptions(unittest.TestCase):
self.assertEqual(result['debug_notfound'], True)
self.assertEqual(result['debug_authorization'], True)
+ def test_configure_zcml(self):
+ result = self._callFUT({})
+ self.assertEqual(result['configure_zcml'], '')
+ result = self._callFUT({'configure_zcml':'abc'})
+ self.assertEqual(result['configure_zcml'], 'abc')
+ result = self._callFUT({}, {'BFG_CONFIGURE_ZCML':'abc'})
+ self.assertEqual(result['configure_zcml'], 'abc')
+ result = self._callFUT({'configure_zcml':'def'},
+ {'BFG_CONFIGURE_ZCML':'abc'})
+ self.assertEqual(result['configure_zcml'], 'abc')
+
def test_originals_kept(self):
result = self._callFUT({'a':'i am so a'})
self.assertEqual(result['a'], 'i am so a')