Started unit tests for the auth framework
parent
eb347e7fb5
commit
fbc58de27a
|
@ -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)
|
Loading…
Reference in New Issue