From 7ec9e7cb2f8aea52cd8645c98d336994357a66f5 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Sat, 30 May 2009 20:42:58 +0000 Subject: - Remove "context" argument from ``effective_principals`` and ``authenticated_userid`` function APIs in ``repoze.bfg.security``, effectively a doing reversion to 0.8 and before behavior. Both functions now again accept only the ``request`` parameter. --- CHANGES.txt | 15 +++- docs/tutorials/bfgwiki/authorization.rst | 2 +- .../bfgwiki/src/authorization/tutorial/login.py | 9 +-- .../bfgwiki/src/authorization/tutorial/views.py | 2 +- repoze/bfg/authentication.py | 28 +++----- repoze/bfg/interfaces.py | 8 +-- repoze/bfg/secpols.py | 8 +-- repoze/bfg/security.py | 54 +++----------- repoze/bfg/testing.py | 42 +++++------ repoze/bfg/tests/test_authentication.py | 83 +++++++--------------- repoze/bfg/tests/test_secpols.py | 44 +++--------- repoze/bfg/tests/test_security.py | 39 +++++----- repoze/bfg/tests/test_testing.py | 10 +-- 13 files changed, 122 insertions(+), 222 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 95fa3dbe8..ea951c3a6 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,14 @@ +Next release +============ + +Features +-------- + +- Remove "context" argument from ``effective_principals`` and + ``authenticated_userid`` function APIs in ``repoze.bfg.security``, + effectively a doing reversion to 0.8 and before behavior. Both + functions now again accept only the ``request`` parameter. + 0.9a6 (2009-05-29) ================== @@ -253,7 +264,9 @@ Deprecations ``repoze.bfg.security`` used to only take a single argument (request). They now accept two arguments (``context`` and ``request``). Calling them with a single argument is still - supported but issues a deprecation warning. + supported but issues a deprecation warning. (NOTE: this change was + reverted in 0.9a7; meaning the 0.9 versions of these functions + again accept ``request`` only, just like 0.8 and before). - Use of "old-style" security policies (those base on ISecurityPolicy) is now deprecated. See the "Security" chapter of the docs for info diff --git a/docs/tutorials/bfgwiki/authorization.rst b/docs/tutorials/bfgwiki/authorization.rst index d69bec8a7..437cb9c74 100644 --- a/docs/tutorials/bfgwiki/authorization.rst +++ b/docs/tutorials/bfgwiki/authorization.rst @@ -71,7 +71,7 @@ into its template. We'll add something like this to each view body: .. code-block:: python :linenos: - logged_in = authenticated_user(context, request) + logged_in = authenticated_user(request) We'll then change the return value of ``render_template_to_response`` to pass the `resulting `logged_in`` value to the template, e.g.: diff --git a/docs/tutorials/bfgwiki/src/authorization/tutorial/login.py b/docs/tutorials/bfgwiki/src/authorization/tutorial/login.py index c4c595e81..5fc94d480 100644 --- a/docs/tutorials/bfgwiki/src/authorization/tutorial/login.py +++ b/docs/tutorials/bfgwiki/src/authorization/tutorial/login.py @@ -1,11 +1,12 @@ from webob.exc import HTTPFound from repoze.bfg.chameleon_zpt import render_template_to_response -from repoze.bfg.security import remember -from repoze.bfg.security import forget from repoze.bfg.view import bfg_view from repoze.bfg.url import model_url +from repoze.bfg.security import remember +from repoze.bfg.security import forget + from tutorial.models import Wiki from tutorial.run import USERS @@ -20,7 +21,7 @@ def login(context, request): login = request.params['login'] password = request.params['password'] if USERS.get(login) == password: - headers = remember(context, request, login) + headers = remember(request, login) return HTTPFound(location = came_from, headers = headers) message = 'Failed login' @@ -37,7 +38,7 @@ def login(context, request): @bfg_view(for_=Wiki, name='logout') def logout(context, request): - headers = forget(context, request) + headers = forget(request) return HTTPFound(location = model_url(context, request), headers = headers) diff --git a/docs/tutorials/bfgwiki/src/authorization/tutorial/views.py b/docs/tutorials/bfgwiki/src/authorization/tutorial/views.py index 1d3e57de3..c8c02e57e 100644 --- a/docs/tutorials/bfgwiki/src/authorization/tutorial/views.py +++ b/docs/tutorials/bfgwiki/src/authorization/tutorial/views.py @@ -44,7 +44,7 @@ def view_page(context, request): content = wikiwords.sub(check, content) edit_url = model_url(context, request, 'edit_page') - logged_in = authenticated_userid(context, request) + logged_in = authenticated_userid(request) return render_template_to_response('templates/view.pt', request = request, diff --git a/repoze/bfg/authentication.py b/repoze/bfg/authentication.py index 849653948..6be27f47e 100644 --- a/repoze/bfg/authentication.py +++ b/repoze/bfg/authentication.py @@ -1,17 +1,9 @@ from codecs import utf_8_decode from codecs import utf_8_encode -import crypt -import os -import stat -import StringIO -import time -import traceback - from paste.request import get_cookies from paste.auth import auth_tkt from zope.interface import implements -from zope.component import queryUtility from repoze.bfg.interfaces import IAuthenticationPolicy from repoze.bfg.security import Everyone @@ -19,7 +11,7 @@ from repoze.bfg.security import Authenticated class CallbackAuthenticationPolicy(object): """ Abstract class """ - def authenticated_userid(self, context, request): + def authenticated_userid(self, request): userid = self._get_userid(request) if userid is None: return None @@ -28,7 +20,7 @@ class CallbackAuthenticationPolicy(object): if self.callback(userid) is not None: # is not None! return userid - def effective_principals(self, context, request): + def effective_principals(self, request): effective_principals = [Everyone] userid = self._get_userid(request) if userid is None: @@ -83,7 +75,7 @@ class RepozeWho1AuthenticationPolicy(CallbackAuthenticationPolicy): identifier = plugins[self.identifier_name] return identifier - def authenticated_userid(self, context, request): + def authenticated_userid(self, request): identity = self._get_identity(request) if identity is None: return None @@ -92,7 +84,7 @@ class RepozeWho1AuthenticationPolicy(CallbackAuthenticationPolicy): if self.callback(identity) is not None: # is not None! return identity['repoze.who.userid'] - def effective_principals(self, context, request): + def effective_principals(self, request): effective_principals = [Everyone] identity = self._get_identity(request) if identity is None: @@ -110,7 +102,7 @@ class RepozeWho1AuthenticationPolicy(CallbackAuthenticationPolicy): return effective_principals - def remember(self, context, request, principal, **kw): + def remember(self, request, principal, **kw): identifier = self._get_identifier(request) if identifier is None: return [] @@ -118,7 +110,7 @@ class RepozeWho1AuthenticationPolicy(CallbackAuthenticationPolicy): identity = {'repoze.who.userid':principal} return identifier.remember(environ, identity) - def forget(self, context, request): + def forget(self, request): identifier = self._get_identifier(request) if identifier is None: return [] @@ -152,10 +144,10 @@ class RemoteUserAuthenticationPolicy(CallbackAuthenticationPolicy): def _get_userid(self, request): return request.environ.get(self.environ_key) - def remember(self, context, request, principal, **kw): + def remember(self, request, principal, **kw): return [] - def forget(self, context, request): + def forget(self, request): return [] class AuthTktAuthenticationPolicy(CallbackAuthenticationPolicy): @@ -212,10 +204,10 @@ class AuthTktAuthenticationPolicy(CallbackAuthenticationPolicy): if result: return result['userid'] - def remember(self, context, request, principal, **kw): + def remember(self, request, principal, **kw): return self.cookie.remember(request, principal) - def forget(self, context, request): + def forget(self, request): return self.cookie.forget(request) class AuthTktCookieHelper(object): diff --git a/repoze/bfg/interfaces.py b/repoze/bfg/interfaces.py index 282e3756a..bc91c6b0e 100644 --- a/repoze/bfg/interfaces.py +++ b/repoze/bfg/interfaces.py @@ -213,23 +213,23 @@ class IRoutesContextFactory(Interface): class IAuthenticationPolicy(Interface): """ An object representing a BFG authentication policy. """ - def authenticated_userid(context, request): + def authenticated_userid(request): """ Return the authenticated userid or ``None`` if no authenticated userid can be found. """ - def effective_principals(context, request): + def effective_principals(request): """ Return a sequence representing the effective principals including the userid and any groups belonged to by the current user, including 'system' groups such as Everyone and Authenticated. """ - def remember(context, request, principal, **kw): + def remember(request, principal, **kw): """ Return a set of headers suitable for 'remembering' the principal named ``principal`` when set in a response. An individual authentication policy and its consumers can decide on the composition and meaning of **kw. """ - def forget(context, request): + def forget(request): """ Return a set of headers suitable for 'forgetting' the current user on subsequent requests. """ diff --git a/repoze/bfg/secpols.py b/repoze/bfg/secpols.py index 0f0fc7e66..a34bcae77 100644 --- a/repoze/bfg/secpols.py +++ b/repoze/bfg/secpols.py @@ -446,16 +446,16 @@ class SecurityPolicyToAuthenticationPolicyAdapter(object): def __init__(self, secpol): self.secpol = secpol - def authenticated_userid(self, context, request): + def authenticated_userid(self, request): return self.secpol.authenticated_userid(request) - def effective_principals(self, context, request): + def effective_principals(self, request): return self.secpol.effective_principals(request) - def remember(self, context, request, principal, **kw): + def remember(self, request, principal, **kw): return [] - def forget(self, context, request): + def forget(self, request): return [] def registerBBBAuthn(secpol, registry): diff --git a/repoze/bfg/security.py b/repoze/bfg/security.py index f72f6eb7d..edf9bc90a 100644 --- a/repoze/bfg/security.py +++ b/repoze/bfg/security.py @@ -1,5 +1,3 @@ -import warnings - from zope.component import queryMultiAdapter from zope.component import queryUtility from zope.deprecation import deprecated @@ -45,64 +43,30 @@ def has_permission(permission, context, request): if authz_policy is None: raise ValueError('Authentication policy registered without ' 'authorization policy') # should never happen - principals = authn_policy.effective_principals(context, request) + principals = authn_policy.effective_principals(request) return authz_policy.permits(context, principals, permission) -def authenticated_userid(*args): +def authenticated_userid(request): """ Return the userid of the currently authenticated user or ``None`` if there is no authentication policy in effect or there is no currently authenticated user. """ - largs = len(args) - if largs > 2: - raise TypeError(args) - if largs == 1: - request = args[0] - context = None - warnings.warn( - 'As of BFG 0.9, the "repoze.bfg.security.authenticated_userid" ' - 'API now takes two arguments: "context" and "request". ' - 'It is being called it with a single argument' - '(assumed to be a request). In a future version, the ' - '"authenticated_userid API will stop accepting calls with a ' - 'single argument; please fix the calling code.', - stacklevel=2) - else: - context, request = args - policy = queryUtility(IAuthenticationPolicy) if policy is None: return None - return policy.authenticated_userid(context, request) + return policy.authenticated_userid(request) -def effective_principals(*args): +def effective_principals(request): """ Return the list of 'effective' principal identifiers for the request. This will include the userid of the currently authenticated user if a user is currently authenticated. If no authentication policy is in effect, this will return an empty sequence.""" - largs = len(args) - if largs > 2: - raise TypeError(args) - if largs == 1: - request = args[0] - context = None - warnings.warn( - 'As of BFG 0.9, the "repoze.bfg.security.effective_principals " ' - 'API now takes two arguments: "context" and "request". ' - 'It is being called it with a single argument' - '(assumed to be a request). In a future version, the ' - '"effective_principals API will stop accepting calls with a ' - 'single argument; please fix the calling code.', - stacklevel=2) - else: - context, request = args - policy = queryUtility(IAuthenticationPolicy) if policy is None: return [] - return policy.effective_principals(context, request) + return policy.effective_principals(request) def principals_allowed_by_permission(context, permission): """ Provided a context (a model object), and a permission (a @@ -138,7 +102,7 @@ def view_execution_permitted(context, request, name=''): (name, context)) return result -def remember(context, request, principal, **kw): +def remember(request, principal, **kw): """ Return a sequence of header tuples (e.g. ``[('Set-Cookie', 'foo=abc')]``) suitable for 'remembering' a set of credentials implied by the data passed as ``principal`` and ``*kw`` using the @@ -160,9 +124,9 @@ def remember(context, request, principal, **kw): if policy is None: return [] else: - return policy.remember(context, request, principal, **kw) + return policy.remember(request, principal, **kw) -def forget(context, request): +def forget(request): """ Return a sequence of header tuples (e.g. ``[('Set-Cookie', 'foo=abc')]``) suitable for 'forgetting' the set of credentials possessed by the currently authenticated user. A common usage @@ -181,7 +145,7 @@ def forget(context, request): if policy is None: return [] else: - return policy.forget(context, request) + return policy.forget(request) class PermitsResult(int): def __new__(cls, s, *args): diff --git a/repoze/bfg/testing.py b/repoze/bfg/testing.py index bd3104a9d..a663ddc25 100644 --- a/repoze/bfg/testing.py +++ b/repoze/bfg/testing.py @@ -5,7 +5,7 @@ from zope.interface import implements from repoze.bfg.interfaces import IRequest -_marker = [] +_marker = object() def registerDummySecurityPolicy(userid=None, groupids=(), permissive=True): """ Registers a dummy ``repoze.bfg`` security policy (actually, a @@ -36,8 +36,19 @@ def registerModels(models): value will be returned to ``find_model`` (and thus to your code) when ``find_model`` is called with an equivalent path string or tuple.""" - traverser = make_traverser_factory(models) - registerTraverserFactory(traverser) + class DummyTraverserFactory: + def __init__(self, context): + self.context = context + + def __call__(self, environ): + path = environ['PATH_INFO'] + ob = models[path] + from repoze.bfg.traversal import traversal_path + traversed = list(traversal_path(path)) + return {'context':ob, 'view_name':'','subpath':[], + 'traversed':traversed, 'vroot':ob, 'vroot_path':[]} + + registerTraverserFactory(DummyTraverserFactory) return models def registerEventListener(event_iface=Interface): @@ -176,10 +187,10 @@ class DummySecurityPolicy: self.groupids = groupids self.permissive = permissive - def authenticated_userid(self, context, request): + def authenticated_userid(self, request): return self.userid - def effective_principals(self, context, request): + def effective_principals(self, request): from repoze.bfg.security import Everyone from repoze.bfg.security import Authenticated effective_principals = [Everyone] @@ -189,32 +200,17 @@ class DummySecurityPolicy: effective_principals.extend(self.groupids) return effective_principals - def remember(self, context, request, principal, **kw): + def remember(self, request, principal, **kw): return [] - def forget(self, context, request): + def forget(self, request): return [] def permits(self, context, principals, permission): return self.permissive def principals_allowed_by_permission(self, context, permission): - return self.effective_principals(None, None) - -def make_traverser_factory(root): - class DummyTraverserFactory: - def __init__(self, context): - self.context = context - - def __call__(self, environ): - path = environ['PATH_INFO'] - ob = root[path] - from repoze.bfg.traversal import traversal_path - traversed = list(traversal_path(path)) - return {'context':ob, 'view_name':'','subpath':[], - 'traversed':traversed, 'vroot':ob, 'vroot_path':[]} - - return DummyTraverserFactory + return self.effective_principals(None) class DummyTemplateRenderer: """ diff --git a/repoze/bfg/tests/test_authentication.py b/repoze/bfg/tests/test_authentication.py index b0b1e084a..09782cd3c 100644 --- a/repoze/bfg/tests/test_authentication.py +++ b/repoze/bfg/tests/test_authentication.py @@ -19,114 +19,100 @@ class TestRepozeWho1AuthenticationPolicy(unittest.TestCase): verifyObject(IAuthenticationPolicy, self._makeOne()) def test_authenticated_userid_None(self): - context = DummyContext() request = DummyRequest({}) policy = self._makeOne() - self.assertEqual(policy.authenticated_userid(context, request), None) + self.assertEqual(policy.authenticated_userid(request), None) def test_authenticated_userid(self): - context = DummyContext() request = DummyRequest( {'repoze.who.identity':{'repoze.who.userid':'fred'}}) policy = self._makeOne() - self.assertEqual(policy.authenticated_userid(context, request), 'fred') + self.assertEqual(policy.authenticated_userid(request), 'fred') def test_authenticated_userid_with_callback_returns_None(self): - context = DummyContext() request = DummyRequest( {'repoze.who.identity':{'repoze.who.userid':'fred'}}) def callback(identity): return None policy = self._makeOne(callback=callback) - self.assertEqual(policy.authenticated_userid(context, request), None) + self.assertEqual(policy.authenticated_userid(request), None) def test_authenticated_userid_with_callback_returns_something(self): - context = DummyContext() request = DummyRequest( {'repoze.who.identity':{'repoze.who.userid':'fred'}}) def callback(identity): return ['agroup'] policy = self._makeOne(callback=callback) - self.assertEqual(policy.authenticated_userid(context, request), 'fred') + self.assertEqual(policy.authenticated_userid(request), 'fred') def test_effective_principals_None(self): from repoze.bfg.security import Everyone - context = DummyContext() request = DummyRequest({}) policy = self._makeOne() - self.assertEqual(policy.effective_principals(context, request), - [Everyone]) + self.assertEqual(policy.effective_principals(request), [Everyone]) def test_effective_principals_userid_only(self): from repoze.bfg.security import Everyone from repoze.bfg.security import Authenticated - context = DummyContext() request = DummyRequest( {'repoze.who.identity':{'repoze.who.userid':'fred'}}) policy = self._makeOne() - self.assertEqual(policy.effective_principals(context, request), + self.assertEqual(policy.effective_principals(request), [Everyone, Authenticated, 'fred']) def test_effective_principals_userid_and_groups(self): from repoze.bfg.security import Everyone from repoze.bfg.security import Authenticated - context = DummyContext() request = DummyRequest( {'repoze.who.identity':{'repoze.who.userid':'fred', 'groups':['quux', 'biz']}}) def callback(identity): return identity['groups'] policy = self._makeOne(callback=callback) - self.assertEqual(policy.effective_principals(context, request), + self.assertEqual(policy.effective_principals(request), [Everyone, Authenticated, 'fred', 'quux', 'biz']) def test_effective_principals_userid_callback_returns_None(self): from repoze.bfg.security import Everyone - context = DummyContext() request = DummyRequest( {'repoze.who.identity':{'repoze.who.userid':'fred', 'groups':['quux', 'biz']}}) def callback(identity): return None policy = self._makeOne(callback=callback) - self.assertEqual(policy.effective_principals(context, request), - [Everyone]) + self.assertEqual(policy.effective_principals(request), [Everyone]) def test_remember_no_plugins(self): - context = DummyContext() authtkt = DummyWhoPlugin() request = DummyRequest({}) policy = self._makeOne() - result = policy.remember(context, request, 'fred') + result = policy.remember(request, 'fred') self.assertEqual(result, []) def test_remember(self): - context = DummyContext() authtkt = DummyWhoPlugin() request = DummyRequest( {'repoze.who.plugins':{'auth_tkt':authtkt}}) policy = self._makeOne() - result = policy.remember(context, request, 'fred') + result = policy.remember(request, 'fred') self.assertEqual(result[0], request.environ) self.assertEqual(result[1], {'repoze.who.userid':'fred'}) def test_forget_no_plugins(self): - context = DummyContext() authtkt = DummyWhoPlugin() request = DummyRequest({}) policy = self._makeOne() - result = policy.forget(context, request) + result = policy.forget(request) self.assertEqual(result, []) def test_forget(self): - context = DummyContext() authtkt = DummyWhoPlugin() request = DummyRequest( {'repoze.who.plugins':{'auth_tkt':authtkt}, 'repoze.who.identity':{'repoze.who.userid':'fred'}, }) policy = self._makeOne() - result = policy.forget(context, request) + result = policy.forget(request) self.assertEqual(result[0], request.environ) self.assertEqual(result[1], request.environ['repoze.who.identity']) @@ -149,48 +135,41 @@ class TestRemoteUserAuthenticationPolicy(unittest.TestCase): verifyObject(IAuthenticationPolicy, self._makeOne()) def test_authenticated_userid_None(self): - context = DummyContext() request = DummyRequest({}) policy = self._makeOne() - self.assertEqual(policy.authenticated_userid(context, request), None) + self.assertEqual(policy.authenticated_userid(request), None) def test_authenticated_userid(self): - context = DummyContext() request = DummyRequest({'REMOTE_USER':'fred'}) policy = self._makeOne() - self.assertEqual(policy.authenticated_userid(context, request), 'fred') + self.assertEqual(policy.authenticated_userid(request), 'fred') def test_effective_principals_None(self): from repoze.bfg.security import Everyone - context = DummyContext() request = DummyRequest({}) policy = self._makeOne() - self.assertEqual(policy.effective_principals(context, request), - [Everyone]) + self.assertEqual(policy.effective_principals(request), [Everyone]) def test_effective_principals(self): from repoze.bfg.security import Everyone from repoze.bfg.security import Authenticated - context = DummyContext() request = DummyRequest({'REMOTE_USER':'fred'}) policy = self._makeOne() - self.assertEqual(policy.effective_principals(context, request), + self.assertEqual(policy.effective_principals(request), [Everyone, Authenticated, 'fred']) def test_remember(self): - context = DummyContext() authtkt = DummyWhoPlugin() request = DummyRequest({'REMOTE_USER':'fred'}) policy = self._makeOne() - result = policy.remember(context, request, 'fred') + result = policy.remember(request, 'fred') self.assertEqual(result, []) def test_forget(self): - context = DummyContext() authtkt = DummyWhoPlugin() request = DummyRequest({'REMOTE_USER':'fred'}) policy = self._makeOne() - result = policy.forget(context, request) + result = policy.forget(request) self.assertEqual(result, []) class TestAutkTktAuthenticationPolicy(unittest.TestCase): @@ -214,68 +193,58 @@ class TestAutkTktAuthenticationPolicy(unittest.TestCase): verifyObject(IAuthenticationPolicy, self._makeOne(None, None)) def test_authenticated_userid_no_cookie_identity(self): - context = DummyContext() request = DummyRequest({}) policy = self._makeOne(None, None) - self.assertEqual(policy.authenticated_userid(context, request), None) + self.assertEqual(policy.authenticated_userid(request), None) def test_authenticated_userid_callback_returns_None(self): - context = DummyContext() request = DummyRequest({}) def callback(userid): return None policy = self._makeOne(callback, {'userid':'fred'}) - self.assertEqual(policy.authenticated_userid(context, request), None) + self.assertEqual(policy.authenticated_userid(request), None) def test_authenticated_userid(self): - context = DummyContext() request = DummyRequest({}) def callback(userid): return True policy = self._makeOne(callback, {'userid':'fred'}) - self.assertEqual(policy.authenticated_userid(context, request), 'fred') + self.assertEqual(policy.authenticated_userid(request), 'fred') def test_effective_principals_no_cookie_identity(self): from repoze.bfg.security import Everyone - context = DummyContext() request = DummyRequest({}) policy = self._makeOne(None, None) - self.assertEqual(policy.effective_principals(context, request), - [Everyone]) + self.assertEqual(policy.effective_principals(request), [Everyone]) def test_effective_principals_callback_returns_None(self): from repoze.bfg.security import Everyone - context = DummyContext() request = DummyRequest({}) def callback(userid): return None policy = self._makeOne(callback, {'userid':'fred'}) - self.assertEqual(policy.effective_principals(context, request), - [Everyone]) + self.assertEqual(policy.effective_principals(request), [Everyone]) def test_effective_principals(self): from repoze.bfg.security import Everyone from repoze.bfg.security import Authenticated - context = DummyContext() request = DummyRequest({}) def callback(userid): return ['group.foo'] policy = self._makeOne(callback, {'userid':'fred'}) - self.assertEqual(policy.effective_principals(context, request), + self.assertEqual(policy.effective_principals(request), [Everyone, Authenticated, 'fred', 'group.foo']) def test_remember(self): - context = DummyContext() request = DummyRequest({}) policy = self._makeOne(None, None) - result = policy.remember(context, request, 'fred') + result = policy.remember(request, 'fred') self.assertEqual(result, []) def test_forget(self): - context = DummyContext() request = DummyRequest({}) policy = self._makeOne(None, None) - result = policy.forget(context, request) + result = policy.forget(request) self.assertEqual(result, []) class TestAuthTktCookieHelper(unittest.TestCase): diff --git a/repoze/bfg/tests/test_secpols.py b/repoze/bfg/tests/test_secpols.py index 2b0449e89..8f60a0d94 100644 --- a/repoze/bfg/tests/test_secpols.py +++ b/repoze/bfg/tests/test_secpols.py @@ -13,19 +13,6 @@ class TestAPIFunctionsSecpolBBB(unittest.TestCase): except KeyError: pass - def _testWithWarnings(self, f, *args, **kw): - messages = [] - def showwarning(message, category, filename, lineno, file=None): - messages.append(message) - try: - import warnings - _old_showwarning = warnings.showwarning - warnings.showwarning = showwarning - result = f(*args, **kw) - return result, messages - finally: - warnings.showwarning = _old_showwarning - def _registerSecurityPolicy(self, secpol): import zope.component from repoze.bfg.secpols import registerBBBAuthn @@ -49,43 +36,28 @@ class TestAPIFunctionsSecpolBBB(unittest.TestCase): self._registerSecurityPolicy(secpol) from repoze.bfg.security import authenticated_userid request = DummyRequest({}) - result, warnings = self._testWithWarnings(authenticated_userid, - request) + result = authenticated_userid(request) self.assertEqual(result, 'fred') - self.assertEqual(len(warnings), 1) def test_authenticated_userid_not_registered(self): from repoze.bfg.security import authenticated_userid request = DummyRequest({}) - result, warnings = self._testWithWarnings(authenticated_userid, - request) + result = authenticated_userid(request) self.assertEqual(result, None) - self.assertEqual(len(warnings), 1) - - def test_authenticated_userid_too_many_args(self): - from repoze.bfg.security import authenticated_userid - self.assertRaises(TypeError, authenticated_userid, None, None, None) def test_effective_principals_registered(self): secpol = DummySecurityPolicy(False) self._registerSecurityPolicy(secpol) from repoze.bfg.security import effective_principals request = DummyRequest({}) - result, warnings = self._testWithWarnings(effective_principals, request) + result = effective_principals(request) self.assertEqual(result, ['fred', 'bob']) - self.assertEqual(len(warnings), 1) def test_effective_principals_not_registered(self): from repoze.bfg.security import effective_principals request = DummyRequest({}) - result, warnings = self._testWithWarnings(effective_principals, request) + result = effective_principals(request) self.assertEqual(result, []) - self.assertEqual(len(warnings), 1) - - def test_effective_principals_too_many_args(self): - from repoze.bfg.security import effective_principals - self.assertRaises(TypeError, effective_principals, None, None, None) - def test_principals_allowed_by_permission_not_registered(self): from repoze.bfg.security import principals_allowed_by_permission @@ -665,25 +637,25 @@ class TestSecurityPolicyToAuthenticationPolicyAdapter(unittest.TestCase): def test_authenticated_userid(self): secpol = DummySecurityPolicy(None) adapter = self._makeOne(secpol) - result = adapter.authenticated_userid(None, None) + result = adapter.authenticated_userid(None) self.assertEqual(result, 'fred') def test_effective_principals(self): secpol = DummySecurityPolicy(None) adapter = self._makeOne(secpol) - result = adapter.effective_principals(None, None) + result = adapter.effective_principals(None) self.assertEqual(result, ['fred', 'bob']) def test_remember(self): secpol = DummySecurityPolicy(None) adapter = self._makeOne(secpol) - result = adapter.remember(None, None, None) + result = adapter.remember(None, None) self.assertEqual(result, []) def test_forget(self): secpol = DummySecurityPolicy(None) adapter = self._makeOne(secpol) - result = adapter.forget(None, None) + result = adapter.forget(None) self.assertEqual(result, []) class TestSecurityPolicyToAuthorizationPolicyAdapter(unittest.TestCase): diff --git a/repoze/bfg/tests/test_security.py b/repoze/bfg/tests/test_security.py index 3f18d3a4a..bb1a54e04 100644 --- a/repoze/bfg/tests/test_security.py +++ b/repoze/bfg/tests/test_security.py @@ -230,21 +230,19 @@ class TestAuthenticatedUserId(unittest.TestCase): def tearDown(self): cleanUp() - def _callFUT(self, *arg): + def _callFUT(self, request): from repoze.bfg.security import authenticated_userid - return authenticated_userid(*arg) + return authenticated_userid(request) def test_no_authentication_policy(self): - context = DummyContext() request = DummyRequest({}) - result = self._callFUT(context, request) + result = self._callFUT(request) self.assertEqual(result, None) def test_with_authentication_policy(self): _registerAuthenticationPolicy('yo') - context = DummyContext() request = DummyRequest({}) - result = self._callFUT(context, request) + result = self._callFUT(request) self.assertEqual(result, 'yo') class TestEffectivePrincipals(unittest.TestCase): @@ -254,21 +252,19 @@ class TestEffectivePrincipals(unittest.TestCase): def tearDown(self): cleanUp() - def _callFUT(self, *arg): + def _callFUT(self, request): from repoze.bfg.security import effective_principals - return effective_principals(*arg) + return effective_principals(request) def test_no_authentication_policy(self): - context = DummyContext() request = DummyRequest({}) - result = self._callFUT(context, request) + result = self._callFUT(request) self.assertEqual(result, []) def test_with_authentication_policy(self): _registerAuthenticationPolicy('yo') - context = DummyContext() request = DummyRequest({}) - result = self._callFUT(context, request) + result = self._callFUT(request) self.assertEqual(result, 'yo') class TestPrincipalsAllowedByPermission(unittest.TestCase): @@ -308,14 +304,13 @@ class TestRemember(unittest.TestCase): def test_no_authentication_policy(self): context = DummyContext() request = DummyRequest({}) - result = self._callFUT(context, request, 'me') + result = self._callFUT(request, 'me') self.assertEqual(result, []) def test_with_authentication_policy(self): _registerAuthenticationPolicy('yo') - context = DummyContext() request = DummyRequest({}) - result = self._callFUT(context, request, 'me') + result = self._callFUT(request, 'me') self.assertEqual(result, 'yo') class TestForget(unittest.TestCase): @@ -330,16 +325,14 @@ class TestForget(unittest.TestCase): return forget(*arg) def test_no_authentication_policy(self): - context = DummyContext() request = DummyRequest({}) - result = self._callFUT(context, request) + result = self._callFUT(request) self.assertEqual(result, []) def test_with_authentication_policy(self): _registerAuthenticationPolicy('yo') - context = DummyContext() request = DummyRequest({}) - result = self._callFUT(context, request) + result = self._callFUT(request) self.assertEqual(result, 'yo') class DummyContext: @@ -354,16 +347,16 @@ class DummyAuthenticationPolicy: def __init__(self, result): self.result = result - def effective_principals(self, context, request): + def effective_principals(self, request): return self.result - def authenticated_userid(self, context, request): + def authenticated_userid(self, request): return self.result - def remember(self, context, request, principal, **kw): + def remember(self, request, principal, **kw): return self.result - def forget(self, context, request): + def forget(self, request): return self.result class DummyAuthorizationPolicy: diff --git a/repoze/bfg/tests/test_testing.py b/repoze/bfg/tests/test_testing.py index 5024c41ba..ff0846881 100644 --- a/repoze/bfg/tests/test_testing.py +++ b/repoze/bfg/tests/test_testing.py @@ -222,19 +222,19 @@ class TestDummySecurityPolicy(unittest.TestCase): def test_authenticated_userid(self): policy = self._makeOne('user') - self.assertEqual(policy.authenticated_userid(None, None), 'user') + self.assertEqual(policy.authenticated_userid(None), 'user') def test_effective_principals_userid(self): policy = self._makeOne('user', ('group1',)) from repoze.bfg.security import Everyone from repoze.bfg.security import Authenticated - self.assertEqual(policy.effective_principals(None, None), + self.assertEqual(policy.effective_principals(None), [Everyone, Authenticated, 'user', 'group1']) def test_effective_principals_nouserid(self): policy = self._makeOne() from repoze.bfg.security import Everyone - self.assertEqual(policy.effective_principals(None, None), [Everyone]) + self.assertEqual(policy.effective_principals(None), [Everyone]) def test_permits(self): policy = self._makeOne() @@ -249,11 +249,11 @@ class TestDummySecurityPolicy(unittest.TestCase): def test_forget(self): policy = self._makeOne() - self.assertEqual(policy.forget(None, None), []) + self.assertEqual(policy.forget(None), []) def test_remember(self): policy = self._makeOne() - self.assertEqual(policy.remember(None, None, None), []) + self.assertEqual(policy.remember(None, None), []) -- cgit v1.2.3