]> asedeno.scripts.mit.edu Git - bluechips.git/blobdiff - bluechips/lib/permissions.py
more test coverage
[bluechips.git] / bluechips / lib / permissions.py
index 0da8687faa3b313867f1109f20e62bef2eeb69cb..4a30fdc3e0c66b59ab27bc7b866aa1b6eb276ca4 100644 (file)
@@ -3,24 +3,21 @@ authkit authorization permission objects for BlueChips
 """
 
 from authkit.authenticate import AddDictToEnviron
-from authkit.authorize import NotAuthorizedError
+from authkit.authorize import NotAuthenticatedError, NotAuthorizedError
 from authkit.permissions import RequestPermission
 
-from sqlalchemy.exceptions import InvalidRequestError
-
 from bluechips import model
 from bluechips.model import meta
 
 class BlueChipUser(RequestPermission):
     def check(self, app, environ, start_response):
         if 'REMOTE_USER' not in environ:
-            raise NotAuthenticatedError('Not Authenticated')
-        try:
-            user = meta.Session.query(model.User).\
-                filter_by(username=environ['REMOTE_USER']).\
-                one()
-        except InvalidRequestError:
-            raise NotAuthorizedError('You are not allowed access.')
+            raise NotAuthenticatedError('Not Authenticated') # pragma: nocover
+        environ['user'] = meta.Session.query(model.User).\
+            filter_by(username=unicode(environ['REMOTE_USER'])).\
+            first()
+        if environ['user'] == None:
+            raise NotAuthorizedError('You are not allowed access.') # pragma: nocover
         return app(environ, start_response)
 
 class DummyAuthenticate(AddDictToEnviron):
@@ -28,8 +25,12 @@ class DummyAuthenticate(AddDictToEnviron):
     Set the authkit.authenticate environment variable so
     authkit.authorize shuts up
     """
-    def __init__(self, app):
-        super(DummyAuthenticate, self).__init__(app, {
-                'authkit.authenticate': True})
+    def __init__(self, app, app_conf):
+        newenv = {}
+        newenv['authkit.authenticate'] = True
+        newenv['authkit.config'] = {'setup.enable': True}
+        if 'fake_username' in app_conf:
+            newenv['REMOTE_USER'] = app_conf['fake_username']
+        super(DummyAuthenticate, self).__init__(app, newenv)
 
 __all__ = ['BlueChipUser', 'DummyAuthenticate']