summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests/test_security.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2008-09-21 00:44:37 +0000
committerChris McDonough <chrism@agendaless.com>2008-09-21 00:44:37 +0000
commit64ea2e288d7e6f47075269994319b9331dd09391 (patch)
tree54b43683deffe41d40e83e3a7a160c7559c857fe /repoze/bfg/tests/test_security.py
parent3a99b193e9324c516227e2358bf41c2b6bc5a537 (diff)
downloadpyramid-64ea2e288d7e6f47075269994319b9331dd09391.tar.gz
pyramid-64ea2e288d7e6f47075269994319b9331dd09391.tar.bz2
pyramid-64ea2e288d7e6f47075269994319b9331dd09391.zip
- Add ``principals_allowed_by_permission`` API to security module.
Diffstat (limited to 'repoze/bfg/tests/test_security.py')
-rw-r--r--repoze/bfg/tests/test_security.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/repoze/bfg/tests/test_security.py b/repoze/bfg/tests/test_security.py
index 9797ebce5..98750c728 100644
--- a/repoze/bfg/tests/test_security.py
+++ b/repoze/bfg/tests/test_security.py
@@ -304,6 +304,38 @@ class TestACLSecurityPolicy(unittest.TestCase, PlacelessSetup):
self.assertEqual(authorizer_factory.permission, 'view')
self.assertEqual(authorizer_factory.context, context)
+ def test_principals_allowed_by_permission_direct(self):
+ from repoze.bfg.security import Allow
+ context = DummyContext()
+ acl = [ (Allow, 'chrism', ('read', 'write')),
+ (Allow, 'other', ('read',)) ]
+ context.__acl__ = acl
+ logger = DummyLogger()
+ policy = self._makeOne(logger, lambda *arg: None)
+ result = policy.principals_allowed_by_permission(context, 'read')
+ self.assertEqual(result, ['chrism', 'other'])
+
+ def test_principals_allowed_by_permission_acquired(self):
+ from repoze.bfg.security import Allow
+ context = DummyContext()
+ acl = [ (Allow, 'chrism', ('read', 'write')),
+ (Allow, 'other', ('read',)) ]
+ context.__acl__ = acl
+ context.__parent__ = None
+ context.__name__ = 'context'
+ inter = DummyContext()
+ inter.__name__ = None
+ inter.__parent__ = context
+ logger = DummyLogger()
+ policy = self._makeOne(logger, lambda *arg: None)
+ result = policy.principals_allowed_by_permission(inter, 'read')
+ self.assertEqual(result, ['chrism', 'other'])
+
+ def test_principals_allowed_by_permission_no_acls(self):
+ logger = DummyLogger()
+ policy = self._makeOne(logger, lambda *arg: None)
+ result = policy.principals_allowed_by_permission(None, 'read')
+ self.assertEqual(result, [])
class TestRemoteUserACLSecurityPolicy(unittest.TestCase, PlacelessSetup):
def _getTargetClass(self):
@@ -434,6 +466,19 @@ class TestAPIFunctions(unittest.TestCase, PlacelessSetup):
request = DummyRequest({})
self.assertEqual(effective_principals(request), [])
+ def test_principals_allowed_by_permission_not_registered(self):
+ from repoze.bfg.security import principals_allowed_by_permission
+ from repoze.bfg.security import Everyone
+ self.assertEqual(principals_allowed_by_permission(None, None),
+ [Everyone])
+
+ def test_principals_allowed_by_permission_registered(self):
+ secpol = DummySecurityPolicy(False)
+ self._registerSecurityPolicy(secpol)
+ from repoze.bfg.security import principals_allowed_by_permission
+ self.assertEqual(principals_allowed_by_permission(None, None),
+ ['fred', 'bob'])
+
class TestViewPermission(unittest.TestCase):
def _getTargetClass(self):
from repoze.bfg.security import ViewPermission
@@ -491,6 +536,9 @@ class DummySecurityPolicy:
def effective_principals(self, request):
return ['fred', 'bob']
+ def principals_allowed_by_permission(self, context, permission):
+ return ['fred', 'bob']
+
class DummyLogger:
def __init__(self):
self.messages = []