diff --git a/src/milla/tests/test_auth.py b/src/milla/tests/test_auth.py index b33c12c..fbfb36f 100644 --- a/src/milla/tests/test_auth.py +++ b/src/milla/tests/test_auth.py @@ -253,4 +253,255 @@ def test_request_validator_correctperms(): request.user = User() request.user.permissions = ['foo'] requirement = milla.auth.permissions.Permission('foo') - validator.validate(request, requirement) \ No newline at end of file + validator.validate(request, requirement) + +def test_find_request_kwarg(): + '''Ensure _find_request finds a request in keyword arguments + ''' + + request = milla.Request.blank('/') + found = milla.auth.decorators._find_request('foo', request=request) + assert found is request + +def test_find_request_arg1(): + '''Ensure _find_request finds a request in position 1 + ''' + + request = milla.Request.blank('/') + found = milla.auth.decorators._find_request(request) + assert found is request + +def test_find_request_arg2(): + '''Ensure _find_request finds a request in another position + ''' + + request = milla.Request.blank('/') + found = milla.auth.decorators._find_request('foo', request) + assert found is request + +def test_auth_required_true(): + '''Test the auth_required decorator with a valid user + ''' + + class User(object): + pass + + @milla.auth.decorators.auth_required + def controller(request): + return 'success' + + request = milla.Request.blank('/') + request.user = User() + response = controller(request) + assert response == 'success' + +def test_auth_required_false(): + '''Test the auth_required decorator with no user + ''' + + @milla.auth.decorators.auth_required + def controller(request): + return 'success' + + request = milla.Request.blank('/') + request.user = None + response = controller(request) + assert response != 'success' + assert response.status.startswith('4') + +def test_require_perms_none(): + '''Test the require_perms decorator with no requirement + ''' + + class User(object): + pass + + @milla.auth.decorators.require_perms() + def controller(request): + return 'success' + + request = milla.Request.blank('/') + request.user = User() + response = controller(request) + assert response == 'success' + +def test_require_perms_valid_str(): + '''Test the require_perms decorator with valid permissions as strings + ''' + + class User(object): + pass + + @milla.auth.decorators.require_perms('foo') + def controller(request): + return 'success' + + request = milla.Request.blank('/') + request.user = User() + request.user.permissions = ['foo'] + response = controller(request) + assert response == 'success' + +def test_require_perms_valid_permission(): + '''Test the require_perms decorator with valid permissions as Permissions + ''' + + class User(object): + pass + + req = milla.auth.permissions.Permission('foo') + @milla.auth.decorators.require_perms(req) + def controller(request): + return 'success' + + request = milla.Request.blank('/') + request.user = User() + request.user.permissions = ['foo'] + response = controller(request) + assert response == 'success' + +def test_require_perms_multi_valid_string(): + '''Test the require_perms decorator with multiple requirements as strings + ''' + + class User(object): + pass + + @milla.auth.decorators.require_perms('foo', 'bar') + def controller(request): + return 'success' + + request = milla.Request.blank('/') + request.user = User() + request.user.permissions = ['foo', 'bar'] + response = controller(request) + assert response == 'success' + +def test_require_perms_multi_valid_permission(): + '''Test the require_perms decorator with multiple requirements as Permissions + ''' + + class User(object): + pass + + req1 = milla.auth.permissions.Permission('foo') + req2 = milla.auth.permissions.Permission('bar') + @milla.auth.decorators.require_perms(req1, req2) + def controller(request): + return 'success' + + request = milla.Request.blank('/') + request.user = User() + request.user.permissions = ['foo', 'bar'] + response = controller(request) + assert response == 'success' + +def test_require_perms_invalid_none(): + '''Test the require_perms decorator with no permissions + ''' + + class User(object): + pass + + @milla.auth.decorators.require_perms('foo') + def controller(request): + return 'success' + + request = milla.Request.blank('/') + request.user = User() + response = controller(request) + assert response != 'success' + assert response.status.startswith('4') + +def test_require_perms_invalid_empty(): + '''Test the require_perms decorator with an empty permissions set + ''' + + class User(object): + pass + + @milla.auth.decorators.require_perms('foo') + def controller(request): + return 'success' + + request = milla.Request.blank('/') + request.user = User() + request.user.permissions = [] + response = controller(request) + assert response != 'success' + assert response.status.startswith('4') + +def test_require_perms_invalid_string(): + '''Test the require_perms decorator with invalid permissions as strings + ''' + + class User(object): + pass + + @milla.auth.decorators.require_perms('foo') + def controller(request): + return 'success' + + request = milla.Request.blank('/') + request.user = User() + request.user.permissions = ['bar'] + response = controller(request) + assert response != 'success' + assert response.status.startswith('4') + +def test_require_perms_invalid_permission(): + '''Test the require_perms decorator with invalid permissions as Permissions + ''' + + class User(object): + pass + + req = milla.auth.permissions.Permission('foo') + @milla.auth.decorators.require_perms(req) + def controller(request): + return 'success' + + request = milla.Request.blank('/') + request.user = User() + request.user.permissions = ['bar'] + response = controller(request) + assert response != 'success' + assert response.status.startswith('4') + +def test_require_perms_multi_invalid_string(): + '''Test the require_perms decorator with multiple invalid permissions as strings + ''' + + class User(object): + pass + + @milla.auth.decorators.require_perms('foo', 'bar') + def controller(request): + return 'success' + + request = milla.Request.blank('/') + request.user = User() + request.user.permissions = ['bar'] + response = controller(request) + assert response != 'success' + assert response.status.startswith('4') + +def test_require_perms_multi_invalid_permission(): + '''Test the require_perms decorator with multiple invalid permissions as Permissions + ''' + + class User(object): + pass + + req1 = milla.auth.permissions.Permission('foo') + req2 = milla.auth.permissions.Permission('foo') + @milla.auth.decorators.require_perms(req1, req2) + def controller(request): + return 'success' + + request = milla.Request.blank('/') + request.user = User() + request.user.permissions = ['bar'] + response = controller(request) + assert response != 'success' + assert response.status.startswith('4')