From 8afb41640c6b20a9f7f9bc87e7f6a26f6c16a4c8 Mon Sep 17 00:00:00 2001 From: Bjarke Madsen <bjarke@nordu.net> Date: Tue, 1 Aug 2023 13:26:11 +0200 Subject: [PATCH] Fix tests --- compendium_v2/auth/session_management.py | 21 +++++++++++---------- compendium_v2/routes/survey.py | 2 +- test/conftest.py | 7 +++++++ 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/compendium_v2/auth/session_management.py b/compendium_v2/auth/session_management.py index eed857ee..37be02d9 100644 --- a/compendium_v2/auth/session_management.py +++ b/compendium_v2/auth/session_management.py @@ -1,6 +1,6 @@ from functools import wraps from sqlalchemy import select -from flask import jsonify +from flask import jsonify, current_app from datetime import datetime from flask_login import LoginManager, current_user # type: ignore from compendium_v2.db import session_scope @@ -16,15 +16,16 @@ def admin_required(func): """ def wrapper(*args, **kwargs): - if not current_user.is_authenticated: - return jsonify(success=False, - data={'login_required': True}, - message='Authorize to access this page.'), 401 - role = current_user.roles - if role != ROLES.admin: - return jsonify(success=False, - data={'admin_required': True}, - message='Admin privileges required to access this page.'), 401 + if not current_app.config.get('LOGIN_DISABLED'): + if not current_user.is_authenticated: + return jsonify(success=False, + data={'login_required': True}, + message='Authorize to access this page.'), 401 + role = current_user.roles + if role != ROLES.admin: + return jsonify(success=False, + data={'admin_required': True}, + message='Admin privileges required to access this page.'), 401 return func(*args, **kwargs) diff --git a/compendium_v2/routes/survey.py b/compendium_v2/routes/survey.py index 61f85680..bfbcaab0 100644 --- a/compendium_v2/routes/survey.py +++ b/compendium_v2/routes/survey.py @@ -3,7 +3,7 @@ from enum import Enum from typing import Any, TypedDict, List, Dict from flask import Blueprint, jsonify, request -from flask_login import login_required +from flask_login import login_required # type: ignore from sqlalchemy import select from sqlalchemy.orm import joinedload, load_only diff --git a/test/conftest.py b/test/conftest.py index fa53adf0..be9e652d 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -3,9 +3,11 @@ import os import pytest import random +from flask_login import LoginManager # type: ignore import compendium_v2 from compendium_v2.db import db, model, survey_model from compendium_v2.survey_db import model as survey_db_model +from compendium_v2.auth.session_management import setup_login_manager def _test_data_csv(filename): @@ -141,6 +143,11 @@ def test_survey_data(app): @pytest.fixture def app(dummy_config): app = compendium_v2._create_app_with_db(dummy_config) + app.config['LOGIN_DISABLED'] = True # disable login and admin_required decorators + login_manager = LoginManager() + login_manager.init_app(app) + login_manager.login_view = 'authentication.login' + setup_login_manager(login_manager) with app.app_context(): db.create_all(bind_key=None) yield app -- GitLab