Started unit tests for the auth framework

master
Dustin C. Hatch 2012-11-27 18:55:38 -06:00
parent eb347e7fb5
commit fbc58de27a
1 changed files with 112 additions and 0 deletions

View File

@ -0,0 +1,112 @@
'''Tests for the Authentication/Authorization framework
:Created: Nov 27, 2012
:Author: dustin
'''
import milla.auth
import nose.tools
def test_exception_callable():
'''Ensure that NotAuthorizedException is a valid controller callable
'''
exc = milla.auth.NotAuthorized()
request = milla.Request.blank('/')
response = exc(request)
assert isinstance(response, milla.Response)
assert response.status.startswith('4')
@nose.tools.raises(milla.auth.NotAuthorized)
def test_request_validator_nouser():
'''Ensure ensure requests without a user attribute raise NotAuthorized
'''
validator = milla.auth.RequestValidator()
request = milla.Request.blank('/')
validator.validate(request)
@nose.tools.raises(milla.auth.NotAuthorized)
def test_request_validator_emptyuser():
'''Ensure requests with an empty user raise NotAuthorized
'''
validator = milla.auth.RequestValidator()
request = milla.Request.blank('/')
request.user = None
validator.validate(request)
def test_request_validator_user_noperms():
'''Ensure user permissions are not checked if no requirement is given
If no ``requirement`` is given to
:py:meth:`milla.auth.RequestValidator.validate`, then the fact that the
request's ``user`` attribute doesn't have a ``permissions`` attribute
shouldn't matter.
'''
class User(object):
pass
validator = milla.auth.RequestValidator()
request = milla.Request.blank('/')
request.user = User()
validator.validate(request)
@nose.tools.raises(milla.auth.NotAuthorized)
def test_request_validator_missingperms():
'''Ensure requests whose user has no permissions attribute are invalid
'''
class User(object):
pass
validator = milla.auth.RequestValidator()
request = milla.Request.blank('/')
request.user = User()
requirement = milla.auth.permissions.Permission('foo')
validator.validate(request, requirement)
@nose.tools.raises(milla.auth.NotAuthorized)
def test_request_validator_emptyperms():
'''Ensure requests whose user has an empty set of permissions are invalid
'''
class User(object):
pass
validator = milla.auth.RequestValidator()
request = milla.Request.blank('/')
request.user = User()
request.user.permissions = []
requirement = milla.auth.permissions.Permission('foo')
validator.validate(request, requirement)
@nose.tools.raises(milla.auth.NotAuthorized)
def test_request_validator_incorrectperms():
'''Ensure requests whose user has incorrect permissions raise NotAuthorized
'''
class User(object):
pass
validator = milla.auth.RequestValidator()
request = milla.Request.blank('/')
request.user = User()
request.user.permissions = ['bar']
requirement = milla.auth.permissions.Permission('foo')
validator.validate(request, requirement)
def test_request_validator_correctperms():
'''Ensure requests from users with appropriate permissions are valid
'''
class User(object):
pass
validator = milla.auth.RequestValidator()
request = milla.Request.blank('/')
request.user = User()
request.user.permissions = ['foo']
requirement = milla.auth.permissions.Permission('foo')
validator.validate(request, requirement)