from flask_atlas_auth.decorators import login_required, claims_required from flask_atlas_auth.models import User from .helpers import TestClaim class TestLoginRequired: def test_success(self, app, mocker, faker): func = mocker.MagicMock() mocked_get_user = mocker.patch("flask_atlas_auth.utils._get_user") mocked_get_user.return_value = User( faker.pystr(), faker.email(), faker.pystr(), [] ) decorated_func = login_required(func) with app.test_request_context(): decorated_func() assert func.called def test_failure_not_authenticated(self, mocker, app): mocked_unauthorized = mocker.patch( "flask_atlas_auth.manager.AuthManager.unauthorized" ) func = mocker.MagicMock() decorated_func = login_required(func) with app.test_request_context(): decorated_func() assert not func.called assert mocked_unauthorized.called class TestClaimsRequired: def test_success(self, mocker, app, faker): func = mocker.MagicMock() mocked_get_user = mocker.patch("flask_atlas_auth.utils._get_user") mocked_get_user.return_value = User( faker.pystr(), faker.email(), faker.pystr(), [TestClaim(TestClaim.Values.test_value1)], ) decorated_func = claims_required( [TestClaim(TestClaim.Values.test_value1)] )(func) with app.test_request_context(): decorated_func() assert func.called def test_failure_not_authenticated(self, mocker, app): mocked_unauthorized = mocker.patch( "flask_atlas_auth.manager.AuthManager.unauthorized" ) func = mocker.MagicMock() decorated_func = claims_required( [TestClaim(TestClaim.Values.test_value1)] )(func) with app.test_request_context(): decorated_func() assert not func.called assert mocked_unauthorized.called def test_failure_not_authorized(self, mocker, app, faker): func = mocker.MagicMock() mocked_unauthorized = mocker.patch( "flask_atlas_auth.manager.AuthManager.unauthorized" ) mocked_get_user = mocker.patch("flask_atlas_auth.utils._get_user") mocked_get_user.return_value = User( faker.pystr(), faker.email(), faker.pystr(), [] ) decorated_func = claims_required( [TestClaim(TestClaim.Values.test_value1)] )(func) with app.test_request_context(): decorated_func() assert not func.called assert mocked_unauthorized.called