Chris McDonough
2011-08-23 f67ba4a4880f1d155ba9bf39dbfcfb9165f1bdee
fix security and setup_registry related tests
4 files modified
42 ■■■■ changed files
pyramid/config/__init__.py 8 ●●●●● patch | view | raw | blame | history
pyramid/config/security.py 11 ●●●●● patch | view | raw | blame | history
pyramid/tests/test_config/test_init.py 8 ●●●●● patch | view | raw | blame | history
pyramid/tests/test_config/test_security.py 15 ●●●● patch | view | raw | blame | history
pyramid/config/__init__.py
@@ -293,11 +293,6 @@
                
        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 @@
        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)
pyramid/config/security.py
@@ -3,6 +3,7 @@
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 @@
        """
        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)
pyramid/tests/test_config/test_init.py
@@ -211,6 +211,7 @@
    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 @@
        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 @@
        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 @@
        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 @@
        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 @@
        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 @@
            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 @@
        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)
pyramid/tests/test_config/test_security.py
@@ -14,12 +14,11 @@
        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 @@
        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 @@
        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)