diff options
| author | Chris McDonough <chrism@plope.com> | 2011-08-22 22:00:29 -0400 |
|---|---|---|
| committer | Chris McDonough <chrism@plope.com> | 2011-08-22 22:00:29 -0400 |
| commit | f67ba4a4880f1d155ba9bf39dbfcfb9165f1bdee (patch) | |
| tree | cd79729dc53983f778a82606e3e2de2a024b8ea2 | |
| parent | 30d74ad4b0fb8484d0265f429b87c7a88bee4192 (diff) | |
| download | pyramid-f67ba4a4880f1d155ba9bf39dbfcfb9165f1bdee.tar.gz pyramid-f67ba4a4880f1d155ba9bf39dbfcfb9165f1bdee.tar.bz2 pyramid-f67ba4a4880f1d155ba9bf39dbfcfb9165f1bdee.zip | |
fix security and setup_registry related tests
| -rw-r--r-- | pyramid/config/__init__.py | 8 | ||||
| -rw-r--r-- | pyramid/config/security.py | 11 | ||||
| -rw-r--r-- | pyramid/tests/test_config/test_init.py | 8 | ||||
| -rw-r--r-- | pyramid/tests/test_config/test_security.py | 15 |
4 files changed, 30 insertions, 12 deletions
diff --git a/pyramid/config/__init__.py b/pyramid/config/__init__.py index baae824ac..fa607b18d 100644 --- a/pyramid/config/__init__.py +++ b/pyramid/config/__init__.py @@ -293,11 +293,6 @@ class Configurator( registry.registerUtility(debug_logger, IDebugLogger) - if renderers is None: - for name, renderer in DEFAULT_RENDERERS: - self.add_renderer(name, renderer) - renderers = [] - if exceptionresponse_view is not None: exceptionresponse_view = self.maybe_dotted(exceptionresponse_view) self.add_view(exceptionresponse_view, context=IExceptionResponse) @@ -326,6 +321,9 @@ class Configurator( if default_view_mapper is not None: self.set_view_mapper(default_view_mapper) + if renderers is None: + renderers = DEFAULT_RENDERERS + for name, renderer in renderers: self.add_renderer(name, renderer) diff --git a/pyramid/config/security.py b/pyramid/config/security.py index 96e2c1479..bdf9be5e6 100644 --- a/pyramid/config/security.py +++ b/pyramid/config/security.py @@ -3,6 +3,7 @@ from pyramid.interfaces import IAuthenticationPolicy from pyramid.interfaces import IDefaultPermission from pyramid.interfaces import PHASE1_CONFIG from pyramid.interfaces import PHASE2_CONFIG +from pyramid.interfaces import PHASE3_CONFIG from pyramid.exceptions import ConfigurationError from pyramid.config.util import action_method @@ -47,9 +48,19 @@ class SecurityConfiguratorMixin(object): """ def register(): self._set_authorization_policy(policy) + def ensure(): + if self.autocommit: + return + if self.registry.queryUtility(IAuthenticationPolicy) is None: + raise ConfigurationError( + 'Cannot configure an authorization policy without ' + 'also configuring an authentication policy ' + '(use the set_authorization_policy method)') + # authorization policy used by view config (phase 3) and # authentication policy (phase 2) self.action(IAuthorizationPolicy, register, order=PHASE1_CONFIG) + self.action(None, ensure, order=PHASE3_CONFIG) def _set_authorization_policy(self, policy): policy = self.maybe_dotted(policy) diff --git a/pyramid/tests/test_config/test_init.py b/pyramid/tests/test_config/test_init.py index 05feb93e9..e861e888e 100644 --- a/pyramid/tests/test_config/test_init.py +++ b/pyramid/tests/test_config/test_init.py @@ -211,6 +211,7 @@ class ConfiguratorTests(unittest.TestCase): def test_ctor_default_permission(self): from pyramid.interfaces import IDefaultPermission config = self._makeOne(default_permission='view') + config.commit() self.assertEqual(config.registry.getUtility(IDefaultPermission), 'view') def test_ctor_session_factory(self): @@ -463,6 +464,7 @@ class ConfiguratorTests(unittest.TestCase): reg = Registry() config = self._makeOne(reg) config.setup_registry(authentication_policy=policy) + config.commit() result = reg.getUtility(IAuthenticationPolicy) self.assertEqual(policy, result) @@ -472,6 +474,7 @@ class ConfiguratorTests(unittest.TestCase): reg = Registry() config = self._makeOne(reg) config.setup_registry(authentication_policy='pyramid.tests') + config.commit() result = reg.getUtility(IAuthenticationPolicy) import pyramid.tests self.assertEqual(result, pyramid.tests) @@ -484,6 +487,7 @@ class ConfiguratorTests(unittest.TestCase): dummy = object() config.setup_registry(authentication_policy=dummy, authorization_policy='pyramid.tests') + config.commit() result = reg.getUtility(IAuthorizationPolicy) import pyramid.tests self.assertEqual(result, pyramid.tests) @@ -607,6 +611,7 @@ class ConfiguratorTests(unittest.TestCase): reg = Registry() config = self._makeOne(reg) config.setup_registry(renderers=[('yeah', renderer)]) + config.commit() self.assertEqual(reg.getUtility(IRendererFactory, 'yeah'), renderer) @@ -616,6 +621,7 @@ class ConfiguratorTests(unittest.TestCase): reg = Registry() config = self._makeOne(reg) config.setup_registry(default_permission='view') + config.commit() self.assertEqual(reg.getUtility(IDefaultPermission), 'view') def test_setup_registry_includes(self): @@ -2554,6 +2560,7 @@ pyramid.tests.test_config.dummy_include2""", def __call__(self, *arg, **kw): return 'moo' config.add_renderer(None, moo) + config.commit() def view(request): return 'OK' result = config.derive_view(view) @@ -2572,6 +2579,7 @@ pyramid.tests.test_config.dummy_include2""", config = self._makeOne() config.add_renderer(None, moo) config.add_renderer('foo', foo) + config.commit() result = config.derive_view(view, renderer='foo') self.assertFalse(result is view) request = self._makeRequest(config) diff --git a/pyramid/tests/test_config/test_security.py b/pyramid/tests/test_config/test_security.py index 8c063ccd0..64ba895c6 100644 --- a/pyramid/tests/test_config/test_security.py +++ b/pyramid/tests/test_config/test_security.py @@ -14,12 +14,11 @@ class ConfiguratorSecurityMethodsTests(unittest.TestCase): self.assertRaises(ConfigurationExecutionError, config.commit) def test_set_authentication_policy_no_authz_policy_autocommit(self): - from pyramid.interfaces import IAuthenticationPolicy + from pyramid.exceptions import ConfigurationError config = self._makeOne(autocommit=True) policy = object() - config.set_authentication_policy(policy) - self.assertEqual( - config.registry.getUtility(IAuthenticationPolicy), policy) + self.assertRaises(ConfigurationError, + config.set_authentication_policy, policy) def test_set_authentication_policy_with_authz_policy(self): from pyramid.interfaces import IAuthenticationPolicy @@ -53,11 +52,12 @@ class ConfiguratorSecurityMethodsTests(unittest.TestCase): self.assertRaises(ConfigurationExecutionError, config.commit) def test_set_authorization_policy_no_authn_policy_autocommit(self): - from pyramid.exceptions import ConfigurationError + from pyramid.interfaces import IAuthorizationPolicy config = self._makeOne(autocommit=True) policy = object() - self.assertRaises(ConfigurationError, - config.set_authorization_policy, policy) + config.set_authorization_policy(policy) + self.assertEqual( + config.registry.getUtility(IAuthorizationPolicy), policy) def test_set_authorization_policy_with_authn_policy(self): from pyramid.interfaces import IAuthorizationPolicy @@ -67,6 +67,7 @@ class ConfiguratorSecurityMethodsTests(unittest.TestCase): authz_policy = object() config.registry.registerUtility(authn_policy, IAuthenticationPolicy) config.set_authorization_policy(authz_policy) + config.commit() self.assertEqual( config.registry.getUtility(IAuthorizationPolicy), authz_policy) |
