Skip to content

Commit

Permalink
apply workaround to support testing with flask-login 0.6.2
Browse files Browse the repository at this point in the history
- flask-login now uses flask.g to cache the logged-in user
- level12/keg#90 needs to be resolved before we can remove the workaround
  • Loading branch information
guruofgentoo committed Dec 7, 2022
1 parent 10b1144 commit d1446a9
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 2 deletions.
19 changes: 18 additions & 1 deletion keg_auth/core.py
Expand Up @@ -5,7 +5,7 @@
import sqlalchemy as sa
from blazeutils import tolist
from keg.db import db
from keg.signals import db_init_post
from keg.signals import db_init_post, init_complete
from webgrid.renderers import render_html_attributes

import keg_auth.cli
Expand Down Expand Up @@ -92,6 +92,8 @@ def init_app(self, app):
self.init_loaders(app)
self.init_permissions(app)

self.fix_testing_teardown(app)

def init_config(self, app):
"""Provide app config defaults for crypto, mail, logins, etc."""
_cc_kwargs = dict(schemes=DEFAULT_CRYPTO_SCHEMES, deprecated='auto')
Expand Down Expand Up @@ -390,6 +392,21 @@ def resend_verification_email(self, user_id):
user.token_generate()
self.mail_manager.send_new_user(user)

def fix_testing_teardown(self, app):
""" Needed until https://github.com/level12/keg/issues/90 is fixed & released. """
if not app.config.get('TESTING', False):
return

version = tuple(map(lambda x: int(x), flask_login.__version__.split('.')))

if version < (0, 6, 2):
return

@app.teardown_request
def cleanup_user_cache(error):
if '_login_user' in flask.g:
del flask.g._login_user


# ensure that any manager-attached menus are reset for auth requirements on login/logout
def refresh_session_menus(app, user):
Expand Down
1 change: 0 additions & 1 deletion keg_auth/tests/test_views.py
@@ -1,6 +1,5 @@
from unittest import mock

from blazeutils.datastructures import BlankObject
import flask
import freezegun
import arrow
Expand Down

0 comments on commit d1446a9

Please sign in to comment.