summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-11-27 08:28:45 +0000
committerChris McDonough <chrism@agendaless.com>2009-11-27 08:28:45 +0000
commit45d08c56ea330583a472b4d2808262a634fa99f1 (patch)
treedab7e4abe9439cc05886bf2dac688995b3ead1b9
parent82c9a232036b696d38b64c95787f0812d777e112 (diff)
downloadpyramid-45d08c56ea330583a472b4d2808262a634fa99f1.tar.gz
pyramid-45d08c56ea330583a472b4d2808262a634fa99f1.tar.bz2
pyramid-45d08c56ea330583a472b4d2808262a634fa99f1.zip
Coverage.
Remove set_security_policies configurator API method.
-rw-r--r--docs/api/configuration.rst1
-rw-r--r--repoze/bfg/configuration.py41
-rw-r--r--repoze/bfg/path.py2
-rw-r--r--repoze/bfg/renderers.py2
-rw-r--r--repoze/bfg/testing.py4
-rw-r--r--repoze/bfg/tests/test_configuration.py9
-rw-r--r--repoze/bfg/tests/test_integration.py11
-rw-r--r--repoze/bfg/tests/test_path.py4
-rw-r--r--repoze/bfg/tests/test_resource.py8
-rw-r--r--repoze/bfg/tests/test_traversal.py8
-rw-r--r--repoze/bfg/tests/test_url.py22
-rw-r--r--repoze/bfg/tests/test_view.py7
-rw-r--r--repoze/bfg/tests/test_zcml.py24
13 files changed, 102 insertions, 41 deletions
diff --git a/docs/api/configuration.rst b/docs/api/configuration.rst
index 25f12a50b..376ff3e40 100644
--- a/docs/api/configuration.rst
+++ b/docs/api/configuration.rst
@@ -29,4 +29,3 @@
.. automethod:: set_notfound_view(view=None, attr=None, renderer=None, wrapper=None)
- .. automethod:: set_security_policies
diff --git a/repoze/bfg/configuration.py b/repoze/bfg/configuration.py
index 4401a31ef..8a6521777 100644
--- a/repoze/bfg/configuration.py
+++ b/repoze/bfg/configuration.py
@@ -140,8 +140,8 @@ class Configurator(object):
registry.registerUtility(debug_logger, IDebugLogger,
'repoze.bfg.debug') # b /c
if authentication_policy or authorization_policy:
- self.set_security_policies(authentication_policy,
- authorization_policy)
+ self._set_security_policies(authentication_policy,
+ authorization_policy)
for name, renderer in renderers:
self.add_renderer(name, renderer)
@@ -246,6 +246,17 @@ class Configurator(object):
wrapper_viewname=wrapper)
self.registry.registerUtility(derived_view, iface, '', info=_info)
+ def _set_security_policies(self, authentication, authorization=None):
+ if authorization is None:
+ authorization = ACLAuthorizationPolicy() # default
+ if authorization and not authentication:
+ raise ConfigurationError(
+ 'If the "authorization" is passed a vallue, '
+ 'the "authentication" argument musty also be '
+ 'passed a value; authorization requires authentication.')
+ self._set_authentication_policy(authentication)
+ self._set_authorization_policy(authorization)
+
# API
def add_subscriber(self, subscriber, iface=None):
@@ -304,23 +315,6 @@ class Configurator(object):
manager.pop()
return self.registry
- def set_security_policies(self, authentication, authorization=None):
- """ Register security policies safely. The ``authentication``
- argument represents a :term:`authentication policy`. The
- ``authorization`` argument represents a :term:`authorization
- policy`. If the ``authorization`` argument is ``None``, a
- default ``repoze.bfg.authorization.ACLAuthorizationPolicy``
- will be registered as the authorization policy."""
- if authorization is None:
- authorization = ACLAuthorizationPolicy() # default
- if authorization and not authentication:
- raise ConfigurationError(
- 'If the "authorization" is passed a vallue, '
- 'the "authentication" argument musty also be '
- 'passed a value; authorization requires authentication.')
- self._set_authentication_policy(authentication)
- self._set_authorization_policy(authorization)
-
def add_view(self, view=None, name="", for_=None, permission=None,
request_type=None, route_name=None, request_method=None,
request_param=None, containment=None, attr=None,
@@ -870,7 +864,7 @@ class Configurator(object):
package or module object. If ``package`` is ``None``, the
package of the *caller* is used.
"""
- if package is None:
+ if package is None: # pragma: no cover
package = caller_package()
def register_decorations(name, ob):
@@ -899,9 +893,12 @@ class Configurator(object):
The ``factory`` argument is Python reference to an
implementation of a :term:`renderer` factory.
+
+ Note that this function should be called *before* any
+ ``add_view`` invocation that names the renderer name as an argument.
"""
- iface = IRendererFactory
- self.registry.registerUtility(factory, iface, name=name, info=_info)
+ self.registry.registerUtility(
+ factory, IRendererFactory, name=name, info=_info)
def override_resource(self, to_override, override_with,
_info=u'', _override=None,):
diff --git a/repoze/bfg/path.py b/repoze/bfg/path.py
index b4ff40494..2c1c0f4e3 100644
--- a/repoze/bfg/path.py
+++ b/repoze/bfg/path.py
@@ -22,7 +22,7 @@ def package_name(pkg_or_module):
function is passed a package, return the dotted Python package
name of the package itself."""
if pkg_or_module is None:
- return '__main___'
+ return '__main__'
pkg_filename = pkg_or_module.__file__
pkg_name = pkg_or_module.__name__
splitted = os.path.split(pkg_filename)
diff --git a/repoze/bfg/renderers.py b/repoze/bfg/renderers.py
index be04e6578..cb01de30c 100644
--- a/repoze/bfg/renderers.py
+++ b/repoze/bfg/renderers.py
@@ -44,7 +44,7 @@ def template_renderer_factory(spec, impl):
if renderer is None:
try:
package_name, filename = spec.split(':', 1)
- except ValueError:
+ except ValueError: # pragma: no cover
# unit test or someone passing a relative pathname
package_name = caller_package(4).__name__
filename = spec
diff --git a/repoze/bfg/testing.py b/repoze/bfg/testing.py
index e482c6a7b..97956ef48 100644
--- a/repoze/bfg/testing.py
+++ b/repoze/bfg/testing.py
@@ -588,7 +588,7 @@ def setUp(registry=None, request=None, hook_zca=True):
try:
from zope.component import getSiteManager
getSiteManager.sethook(get_current_registry)
- except ImportError:
+ except ImportError: # pragma: no cover
pass
def tearDown(unhook_zca=True):
@@ -611,7 +611,7 @@ def tearDown(unhook_zca=True):
try:
from zope.component import getSiteManager
getSiteManager.reset()
- except ImportError:
+ except ImportError: # pragma: no cover
pass
info = manager.pop()
manager.clear()
diff --git a/repoze/bfg/tests/test_configuration.py b/repoze/bfg/tests/test_configuration.py
index ed84735b4..1185f85c8 100644
--- a/repoze/bfg/tests/test_configuration.py
+++ b/repoze/bfg/tests/test_configuration.py
@@ -122,6 +122,12 @@ class ConfiguratorTests(unittest.TestCase):
result = config.registry.getUtility(IAuthenticationPolicy)
self.assertEqual(policy, result)
+ def test_ctor_authorization_policy_only(self):
+ from zope.configuration.exceptions import ConfigurationError
+ policy = object()
+ config = self.assertRaises(ConfigurationError,
+ self._makeOne, authorization_policy=policy)
+
def test_ctor_no_root_factory(self):
from repoze.bfg.interfaces import IRootFactory
config = self._makeOne()
@@ -2576,9 +2582,6 @@ class DummyConfigurator(object):
self.package = package
self.settings = settings
- def hook_zca(self):
- self.zca_hooked = True
-
def load_zcml(self, filename):
self.zcml_file = filename
diff --git a/repoze/bfg/tests/test_integration.py b/repoze/bfg/tests/test_integration.py
index 2e3abe259..9d4a9838d 100644
--- a/repoze/bfg/tests/test_integration.py
+++ b/repoze/bfg/tests/test_integration.py
@@ -89,14 +89,3 @@ class DummyRequest:
def get_response(self, application):
return application(None, None)
-class DummyZCMLContext:
- def __init__(self):
- self.actions = []
- self.info = None
-
- def action(self, discriminator=None, callable=None, args=None):
- self.actions.append(
- {'discriminator':discriminator,
- 'callable':callable,
- 'args':args}
- )
diff --git a/repoze/bfg/tests/test_path.py b/repoze/bfg/tests/test_path.py
index a6ff94327..8522eb387 100644
--- a/repoze/bfg/tests/test_path.py
+++ b/repoze/bfg/tests/test_path.py
@@ -129,6 +129,10 @@ class TestPackageName(unittest.TestCase):
module = DummyPackageOrModule(test_path)
result = self._callFUT(module)
self.assertEqual(result, 'repoze.bfg.tests')
+
+ def test_it_None(self):
+ result = self._callFUT(None)
+ self.assertEqual(result, '__main__')
class DummyPackageOrModule:
def __init__(self, real_package_or_module, raise_exc=None):
diff --git a/repoze/bfg/tests/test_resource.py b/repoze/bfg/tests/test_resource.py
index 9fee4f359..2e55d1044 100644
--- a/repoze/bfg/tests/test_resource.py
+++ b/repoze/bfg/tests/test_resource.py
@@ -368,6 +368,14 @@ class Test_resolve_resource_spec(unittest.TestCase):
self.assertEqual(package_name, 'repoze.bfg.nottests')
self.assertEqual(filename, 'test_resource.py')
+ def test_package_name_is_None(self):
+ pkg = None
+ path = 'test_resource.py'
+ package_name, filename = self._callFUT(path, pkg)
+ self.assertEqual(package_name, None)
+ self.assertEqual(filename, 'test_resource.py')
+
+
class TestFileOverride(unittest.TestCase):
def _getTargetClass(self):
from repoze.bfg.resource import FileOverride
diff --git a/repoze/bfg/tests/test_traversal.py b/repoze/bfg/tests/test_traversal.py
index be62939e5..307c241b4 100644
--- a/repoze/bfg/tests/test_traversal.py
+++ b/repoze/bfg/tests/test_traversal.py
@@ -865,6 +865,14 @@ class TestVirtualRoot(unittest.TestCase):
result = self._callFUT(context, request)
self.assertEqual(result, context)
+ def test_default_no_registry_on_request(self):
+ context = DummyContext()
+ request = _makeRequest()
+ del request.registry
+ request.environ['PATH_INFO'] = '/'
+ result = self._callFUT(context, request)
+ self.assertEqual(result, context)
+
class TraverseTests(unittest.TestCase):
def setUp(self):
cleanUp()
diff --git a/repoze/bfg/tests/test_url.py b/repoze/bfg/tests/test_url.py
index 52a19c7f8..86c1cdf11 100644
--- a/repoze/bfg/tests/test_url.py
+++ b/repoze/bfg/tests/test_url.py
@@ -127,6 +127,15 @@ class ModelURLTests(unittest.TestCase):
result = self._callFUT(root, request)
self.assertEqual(result, 'http://example.com:5432/')
+ def test_no_registry_on_request(self):
+ from repoze.bfg.threadlocal import get_current_registry
+ reg = get_current_registry()
+ request = DummyRequest()
+ self._registerContextURL(reg)
+ root = DummyContext()
+ result = self._callFUT(root, request)
+ self.assertEqual(result, 'http://example.com/context/')
+
class TestRouteUrl(unittest.TestCase):
def setUp(self):
cleanUp()
@@ -224,6 +233,19 @@ class TestStaticUrl(unittest.TestCase):
url = self._callFUT('repoze.bfg.tests:fixtures/minimal.pt', request)
self.assertEqual(url, 'http://example.com:5432/1/2/3')
+ def test_found_abs_no_registry_on_request(self):
+ from repoze.bfg.threadlocal import get_current_registry
+ from repoze.bfg.interfaces import IRoutesMapper
+ from repoze.bfg.static import StaticRootFactory
+ factory = StaticRootFactory('repoze.bfg.tests:fixtures')
+ routes = [DummyRoute('name', factory=factory)]
+ mapper = DummyRoutesMapper(result='/1/2/3', routes = routes)
+ registry = get_current_registry()
+ registry.registerUtility(mapper, IRoutesMapper)
+ request = DummyRequest()
+ url = self._callFUT('repoze.bfg.tests:fixtures/minimal.pt', request)
+ self.assertEqual(url, 'http://example.com:5432/1/2/3')
+
class DummyContext(object):
def __init__(self, next=None):
self.next = next
diff --git a/repoze/bfg/tests/test_view.py b/repoze/bfg/tests/test_view.py
index 43e435eab..2b33a4ac7 100644
--- a/repoze/bfg/tests/test_view.py
+++ b/repoze/bfg/tests/test_view.py
@@ -56,6 +56,13 @@ class RenderViewToResponseTests(BaseTest, unittest.TestCase):
result = self._callFUT(context, request, name='notregistered')
self.assertEqual(result, None)
+ def test_call_no_registry_on_request(self):
+ request = self._makeRequest()
+ del request.registry
+ context = self._makeContext()
+ result = self._callFUT(context, request, name='notregistered')
+ self.assertEqual(result, None)
+
def test_call_view_registered_secure(self):
request = self._makeRequest()
context = self._makeContext()
diff --git a/repoze/bfg/tests/test_zcml.py b/repoze/bfg/tests/test_zcml.py
index 2ad26bc97..1954adf64 100644
--- a/repoze/bfg/tests/test_zcml.py
+++ b/repoze/bfg/tests/test_zcml.py
@@ -551,6 +551,30 @@ class TestResourceDirective(unittest.TestCase):
self.assertEqual(action['args'], ('a', 'b', None))
+class TestRendererDirective(unittest.TestCase):
+ def setUp(self):
+ testing.setUp()
+
+ def tearDown(self):
+ testing.tearDown()
+
+ def _callFUT(self, *arg, **kw):
+ from repoze.bfg.zcml import renderer
+ return renderer(*arg, **kw)
+
+ def test_it(self):
+ from repoze.bfg.threadlocal import get_current_registry
+ from repoze.bfg.interfaces import IRendererFactory
+ context = DummyContext()
+ renderer = lambda *arg, **kw: None
+ self._callFUT(context, renderer, 'r')
+ actions = context.actions
+ self.assertEqual(len(actions), 1)
+ action = actions[0]
+ self.assertEqual(action['discriminator'], (IRendererFactory, 'r'))
+ reg = get_current_registry()
+ self.failUnless(reg.getUtility(IRendererFactory, 'r'), renderer)
+
class TestZCMLConfigure(unittest.TestCase):
i = 0
def _callFUT(self, path, package):