refactor: make settings a fixture

This commit is contained in:
Vlad Stan
2024-10-17 10:39:57 +02:00
committed by dni ⚡
parent b33abddf3a
commit 7bad0552f6
7 changed files with 96 additions and 90 deletions
+40 -27
View File
@@ -25,45 +25,47 @@ from lnbits.core.crud import (
get_user,
update_payment_status,
)
from lnbits.core.models import Account, CreateInvoice, PaymentState
from lnbits.core.models import Account, CreateInvoice, PaymentState, User
from lnbits.core.services import create_user_account, update_wallet_balance
from lnbits.core.views.payment_api import api_payments_create_invoice
from lnbits.db import DB_TYPE, SQLITE, Database
from lnbits.settings import AuthMethods, Settings, settings
from lnbits.settings import AuthMethods, Settings
from lnbits.settings import settings as lnbits_settings
from tests.helpers import (
get_random_invoice_data,
)
# override settings for tests
settings.lnbits_data_folder = "./tests/data"
settings.lnbits_admin_ui = True
settings.lnbits_extensions_default_install = []
settings.lnbits_extensions_deactivate_all = True
@pytest_asyncio.fixture(scope="session")
def lnbits_settings():
return settings
def settings():
# override settings for tests
lnbits_settings.lnbits_admin_extensions = []
lnbits_settings.lnbits_data_folder = "./tests/data"
lnbits_settings.lnbits_admin_ui = True
lnbits_settings.lnbits_extensions_default_install = []
lnbits_settings.lnbits_extensions_deactivate_all = True
return lnbits_settings
@pytest.fixture(autouse=True)
def run_before_and_after_tests(lnbits_settings: Settings):
def run_before_and_after_tests(settings: Settings):
"""Fixture to execute asserts before and after a test is run"""
##### BEFORE TEST RUN #####
lnbits_settings.lnbits_allow_new_accounts = True
lnbits_settings.lnbits_allowed_users = []
lnbits_settings.auth_allowed_methods = AuthMethods.all()
lnbits_settings.auth_credetials_update_threshold = 120
lnbits_settings.lnbits_reserve_fee_percent = 1
lnbits_settings.lnbits_reserve_fee_min = 2000
lnbits_settings.lnbits_service_fee = 0
lnbits_settings.lnbits_wallet_limit_daily_max_withdraw = 0
lnbits_settings.lnbits_admin_extensions = []
##### BEFORE TEST RUN #####
settings.lnbits_allow_new_accounts = True
settings.lnbits_allowed_users = []
settings.auth_allowed_methods = AuthMethods.all()
settings.auth_credetials_update_threshold = 120
settings.lnbits_reserve_fee_percent = 1
settings.lnbits_reserve_fee_min = 2000
settings.lnbits_service_fee = 0
settings.lnbits_wallet_limit_daily_max_withdraw = 0
settings.lnbits_admin_extensions = []
yield # this is where the testing happens
##### AFTER TEST RUN #####
_settings_cleanup(settings)
@pytest_asyncio.fixture(scope="session")
@@ -75,7 +77,7 @@ def event_loop():
# use session scope to run once before and once after all tests
@pytest_asyncio.fixture(scope="session")
async def app():
async def app(settings: Settings):
app = create_app()
async with LifespanManager(app) as manager:
settings.first_install = False
@@ -83,7 +85,7 @@ async def app():
@pytest_asyncio.fixture(scope="session")
async def client(app):
async def client(app, settings: Settings):
url = f"http://{settings.host}:{settings.port}"
async with AsyncClient(transport=ASGITransport(app=app), base_url=url) as client:
yield client
@@ -91,7 +93,7 @@ async def client(app):
# function scope
@pytest_asyncio.fixture(scope="function")
async def http_client(app):
async def http_client(app, settings: Settings):
url = f"http://{settings.host}:{settings.port}"
async with AsyncClient(transport=ASGITransport(app=app), base_url=url) as client:
@@ -157,7 +159,7 @@ async def to_user():
@pytest.fixture()
def from_super_user(from_user):
def from_super_user(from_user: User, settings: Settings):
prev = settings.super_user
settings.super_user = from_user.id
yield from_user
@@ -165,7 +167,7 @@ def from_super_user(from_user):
@pytest_asyncio.fixture(scope="session")
async def superuser():
async def superuser(settings: Settings):
account = await get_account(settings.super_user)
assert account, "Superuser not found"
user = await get_user(account)
@@ -266,3 +268,14 @@ async def fake_payments(client, adminkey_headers_from):
params = {"time[ge]": ts, "time[le]": time()}
return fake_data, params
def _settings_cleanup(settings: Settings):
settings.lnbits_allow_new_accounts = True
settings.lnbits_allowed_users = []
settings.auth_allowed_methods = AuthMethods.all()
settings.auth_credetials_update_threshold = 120
settings.lnbits_reserve_fee_percent = 1
settings.lnbits_reserve_fee_min = 2000
settings.lnbits_service_fee = 0
settings.lnbits_wallet_limit_daily_max_withdraw = 0