summaryrefslogtreecommitdiff
path: root/tests/pkgs/securityapp/__init__.py
diff options
context:
space:
mode:
authorMichael Merickel <michael@merickel.org>2019-09-30 22:23:02 -0500
committerGitHub <noreply@github.com>2019-09-30 22:23:02 -0500
commit849463d3c2f5ad2c89b3d10a2abce63e4892082d (patch)
tree5bc507d427d8d2000c59ad7837cc03099decf1b5 /tests/pkgs/securityapp/__init__.py
parentada0a977d9190520c21ffaf9500860db2f3a1b3e (diff)
parentcdb26610782176955cd8cfb0b3c3e242ca819f74 (diff)
downloadpyramid-849463d3c2f5ad2c89b3d10a2abce63e4892082d.tar.gz
pyramid-849463d3c2f5ad2c89b3d10a2abce63e4892082d.tar.bz2
pyramid-849463d3c2f5ad2c89b3d10a2abce63e4892082d.zip
Merge pull request #3465 from luhn/security-policy
Security policy implementation
Diffstat (limited to 'tests/pkgs/securityapp/__init__.py')
-rw-r--r--tests/pkgs/securityapp/__init__.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/pkgs/securityapp/__init__.py b/tests/pkgs/securityapp/__init__.py
new file mode 100644
index 000000000..6ddba585b
--- /dev/null
+++ b/tests/pkgs/securityapp/__init__.py
@@ -0,0 +1,41 @@
+from pyramid.response import Response
+from pyramid.security import Allowed, Denied
+
+
+class SecurityPolicy:
+ def identify(self, request):
+ return request.environ.get('REMOTE_USER')
+
+ def permits(self, request, context, identity, permission):
+ if identity and permission == 'foo':
+ return Allowed('')
+ else:
+ return Denied('')
+
+ def remember(self, request, userid, **kw):
+ raise NotImplementedError() # pragma: no cover
+
+ def forget(self, request):
+ raise NotImplementedError() # pragma: no cover
+
+
+def public(context, request):
+ return Response('Hello')
+
+
+def private(context, request):
+ return Response('Secret')
+
+
+def inaccessible(context, request):
+ raise AssertionError() # pragma: no cover
+
+
+def includeme(config):
+ config.set_security_policy(SecurityPolicy())
+ config.add_route('public', '/public')
+ config.add_view(public, route_name='public')
+ config.add_route('private', '/private')
+ config.add_view(private, route_name='private', permission='foo')
+ config.add_route('inaccessible', '/inaccessible')
+ config.add_view(inaccessible, route_name='inaccessible', permission='bar')