diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-11-27 08:28:45 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-11-27 08:28:45 +0000 |
| commit | 45d08c56ea330583a472b4d2808262a634fa99f1 (patch) | |
| tree | dab7e4abe9439cc05886bf2dac688995b3ead1b9 | |
| parent | 82c9a232036b696d38b64c95787f0812d777e112 (diff) | |
| download | pyramid-45d08c56ea330583a472b4d2808262a634fa99f1.tar.gz pyramid-45d08c56ea330583a472b4d2808262a634fa99f1.tar.bz2 pyramid-45d08c56ea330583a472b4d2808262a634fa99f1.zip | |
Coverage.
Remove set_security_policies configurator API method.
| -rw-r--r-- | docs/api/configuration.rst | 1 | ||||
| -rw-r--r-- | repoze/bfg/configuration.py | 41 | ||||
| -rw-r--r-- | repoze/bfg/path.py | 2 | ||||
| -rw-r--r-- | repoze/bfg/renderers.py | 2 | ||||
| -rw-r--r-- | repoze/bfg/testing.py | 4 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_configuration.py | 9 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_integration.py | 11 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_path.py | 4 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_resource.py | 8 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_traversal.py | 8 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_url.py | 22 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_view.py | 7 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_zcml.py | 24 |
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): |
