import pytest from flask import url_for from app.utils import user_has_permissions from app.main.views.index import index from werkzeug.exceptions import Forbidden def test_user_has_permissions_on_endpoint_fail(app_, api_user_active, mock_login, mock_get_user_with_permissions): with app_.test_request_context(): with app_.test_client() as client: client.login(api_user_active) decorator = user_has_permissions('something') decorated_index = decorator(index) try: response = decorated_index() pytest.fail("Failed to throw a forbidden exception") except Forbidden: pass def test_user_has_permissions_success(app_, api_user_active, mock_login, mock_get_user_with_permissions): with app_.test_request_context(): with app_.test_client() as client: client.login(api_user_active) decorator = user_has_permissions('manage_users') decorated_index = decorator(index) response = decorated_index() def test_user_has_permissions_or(app_, api_user_active, mock_login, mock_get_user_with_permissions): with app_.test_request_context(): with app_.test_client() as client: client.login(api_user_active) decorator = user_has_permissions('something', 'manage_users', or_=True) decorated_index = decorator(index) response = decorated_index() def test_user_has_permissions_multiple(app_, api_user_active, mock_login, mock_get_user_with_permissions): with app_.test_request_context(): with app_.test_client() as client: client.login(api_user_active) decorator = user_has_permissions('manage_templates', 'manage_users') decorated_index = decorator(index) response = decorated_index()