import pytest from flask_atlas_auth.models import User from core_notifications.auth.claims import Audience, Role from core_notifications.app import create_app from core_notifications.models import db @pytest.fixture def app_config(): def inner(app): app.config["SERVER_NAME"] = "core_notifications.test" return inner @pytest.fixture def app(request, app_config, mocker): mocker.patch( "flask_atlas_auth.manager.AuthManager.public_key", return_value="key", new_callable=mocker.PropertyMock, ) app = create_app() app.testing = True app_config(app) ctx = app.app_context() ctx.push() @request.addfinalizer def teardown(): ctx.pop() return app @pytest.fixture def db_session(request, app): connection = db.engine.connect() transaction = connection.begin() options = dict(bind=connection, binds={}) session = db.create_scoped_session(options=options) db.session = session @request.addfinalizer def teardown(): transaction.rollback() connection.close() session.remove() return session @pytest.fixture def authenticated(app, faker, mocker): mocked_get_user = mocker.patch("flask_atlas_auth.utils._get_user") user = User(faker.pystr(), faker.email(), faker.pystr(), []) mocked_get_user.return_value = user return user @pytest.fixture def authorized_admin(app, faker, mocker): mocked_get_user = mocker.patch("flask_atlas_auth.utils._get_user") user = User( faker.pystr(), faker.email(), faker.pystr(), [Role(Role.Values.admin)] ) mocked_get_user.return_value = user return user @pytest.fixture def authorized_app(app, faker, mocker): mocked_get_user = mocker.patch("flask_atlas_auth.utils._get_user") user = User( faker.pystr(), faker.email(), faker.pystr(), [Audience(Audience.Values.api)], ) mocked_get_user.return_value = user return user