import pytest from flask import url_for from atst.app import make_config, make_app from tests.factories import UserFactory @pytest.fixture def csrf_enabled_app(app): app.config.update({"WTF_CSRF_ENABLED": True}) yield app app.config.update({"WTF_CSRF_ENABLED": False}) def test_csrf_error(csrf_enabled_app, client): response = client.post( url_for("users.user"), headers={"Content-Type": "application/x-www-form-urlencoded"}, data="csrf_token=invalid_token", follow_redirects=True, ) body = response.data.decode() assert "Session Expired" in body assert "Log in required" in body @pytest.fixture def blowup_app(notification_sender): _blowup_app = make_app(make_config(direct_config={"DEBUG": False})) _blowup_app.notification_sender = notification_sender @_blowup_app.route("/throw") def throw(): raise ValueError() yield _blowup_app @pytest.fixture def blowup_client(blowup_app): yield blowup_app.test_client() def test_errors_generate_notifications( blowup_client, client, user_session, notification_sender ): user_session(UserFactory.create()) blowup_client.get("/throw") notification_sender.send.assert_called_once()