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