From 74c6661f0e4942763388a0fba300a0f002d926a1 Mon Sep 17 00:00:00 2001 From: Simon Pirkelmann Date: Fri, 16 Sep 2022 21:53:10 +0200 Subject: [PATCH] updated Flask-Security-Too to most recent version --- imaginaerraum_door_admin/auth.py | 4 ++-- setup.py | 4 ++-- tests/test_webinterface.py | 35 +++++++++++++++++--------------- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/imaginaerraum_door_admin/auth.py b/imaginaerraum_door_admin/auth.py index f2f606e..f85a9ca 100644 --- a/imaginaerraum_door_admin/auth.py +++ b/imaginaerraum_door_admin/auth.py @@ -2,7 +2,7 @@ from wtforms.fields import StringField, BooleanField from flask import current_app from flask_security import hash_password from flask_security.forms import LoginForm, Required, PasswordField -from flask_security.utils import find_user +from flask_security.utils import lookup_identity from flask_security.models import fsqla_v2 as fsqla import ldap3 @@ -29,7 +29,7 @@ class ExtendedLoginForm(LoginForm): def validate(self): # search for user in the current database - user = find_user(self.email.data) + user = lookup_identity(self.email.data) if user is not None: # if a user is found we check if it is associated with LDAP or with # the local database diff --git a/setup.py b/setup.py index dbbe2cf..6e1a5cf 100644 --- a/setup.py +++ b/setup.py @@ -4,7 +4,7 @@ setup(install_requires=[ "bleach", "Flask", "Flask-Mail", - "Flask-Security-Too", + "Flask-Security-Too>=5.0.1", "Flask-SQLAlchemy", "Flask-WTF", "email_validator", @@ -13,6 +13,6 @@ setup(install_requires=[ "wtforms" ], include_package_data=True, - scripts=['bin/launch_webadmin'], + scripts=['bin/launch_webadmin.py'], packages=['imaginaerraum_door_admin'], zip_safe=False) \ No newline at end of file diff --git a/tests/test_webinterface.py b/tests/test_webinterface.py index cca1084..5b161d2 100644 --- a/tests/test_webinterface.py +++ b/tests/test_webinterface.py @@ -2,7 +2,7 @@ import datetime import pytest from bs4 import BeautifulSoup -from flask_security.utils import find_user +from flask_security.utils import lookup_identity from imaginaerraum_door_admin.door_handle import DoorHandle from imaginaerraum_door_admin.auth import ExtendedLoginForm import re @@ -18,9 +18,12 @@ def test_login(browser, live_server): response = browser.get(f'http://localhost:{live_server.port}/login') - email_form = browser.find_element('id', 'email').send_keys('gandalf') - password_form = browser.find_element('id', 'password').send_keys('shadowfax') - submit_button = browser.find_element('id', 'submit').click() + email_form = browser.find_element_by_xpath('//input[@id="email"]') + email_form.send_keys('gandalf@shire.me') + password_form = browser.find_element_by_xpath('//input[@id="password"]') + password_form.send_keys('shadowfax') + submit_button = browser.find_element_by_xpath('//input[@id="submit"]') + submit_button.click() assert 'Tür öffnen' in browser.page_source @@ -122,7 +125,7 @@ def test_login_ldap(client, temp_user, mocker): return auth, user_data mocker.patch('imaginaerraum_door_admin.auth.ExtendedLoginForm.validate_ldap', mock_validate) - user = find_user(temp_user['username']) + user = lookup_identity(temp_user['username']) # remove local role so that ldap authentication is the default user.roles.pop(0) @@ -152,7 +155,7 @@ def test_login_ldap_new_user(client, mocker): mocker.patch('imaginaerraum_door_admin.auth.ExtendedLoginForm.validate_ldap', mock_validate) # initially, the Balrog user should not exist - user = find_user('Balrog') + user = lookup_identity('Balrog') assert user is None # log in temp user using ldap -> this will succeed and create a local user @@ -161,7 +164,7 @@ def test_login_ldap_new_user(client, mocker): soup = BeautifulSoup(response.data, 'html.parser') # make sure user is now created locally - user = find_user('Balrog') + user = lookup_identity('Balrog') assert user is not None # make sure login succeeded -> Tür öffnen button will appear @@ -263,7 +266,7 @@ def temp_admin(client_authenticated): response = client_authenticated.get( f"/promote_admin/{username}", follow_redirects=True) - user = find_user(username) + user = lookup_identity(username) assert user.has_role('admin') return {'username': username, @@ -290,7 +293,7 @@ def test_create_admin(client_authenticated): response = client_authenticated.get('/logout') # try to log in new user using the extracted password - response = headless_login(client_authenticated, user='bilbo', + response = headless_login(client_authenticated, user='bilbo@shire.me', password=password) # - see if it works soup = BeautifulSoup(response.data, 'html.parser') @@ -314,7 +317,7 @@ def test_activate_deactivate_user(temp_user, client_authenticated): f"/admin_toggle_active/{temp_user['username']}", follow_redirects=True) # make sure the user is now inactive - user = find_user(temp_user['username']) + user = lookup_identity(temp_user['username']) assert user is not None assert not user.active @@ -323,7 +326,7 @@ def test_activate_deactivate_user(temp_user, client_authenticated): follow_redirects=True) # now the user should be active again - user = find_user(temp_user['username']) + user = lookup_identity(temp_user['username']) assert user is not None assert user.active @@ -349,7 +352,7 @@ def test_delete_admin(temp_user, client_authenticated): # we need to deactivate the user first assert 'Bitte den Benutzer zuerst deaktivieren.' in response.data.decode() # make sure the user still exists - user = find_user(temp_user['username']) + user = lookup_identity(temp_user['username']) assert user is not None # deactivate the user and try deleting it again @@ -364,7 +367,7 @@ def test_delete_admin(temp_user, client_authenticated): assert 'Der eingegebene Nutzername stimmt nicht überein' \ in response.data.decode() # make sure the user still exists - user = find_user(temp_user['username']) + user = lookup_identity(temp_user['username']) assert user is not None # now we send the confirmation data with the request @@ -380,7 +383,7 @@ def test_delete_admin(temp_user, client_authenticated): assert f"Benutzer {temp_user['username']} wurde gelöscht." in response.data.decode() # make sure the user now is gone - user = find_user(temp_user['username']) + user = lookup_identity(temp_user['username']) assert user is None @@ -391,7 +394,7 @@ def test_promote_user(temp_user, client_authenticated): follow_redirects=True) assert 'Ungültiger Nutzer' in response.data.decode() - user = find_user(temp_user['username']) + user = lookup_identity(temp_user['username']) assert user is not None assert not user.has_role('admin') # grant admin permissions to test user @@ -415,7 +418,7 @@ def test_demote_user(temp_admin, client_authenticated): follow_redirects=True) assert 'Ungültiger Nutzer' in response.data.decode() - user = find_user(temp_admin['username']) + user = lookup_identity(temp_admin['username']) assert user.has_role('admin') # try removing admin permissions response = client_authenticated.get(