[settings] rework settings
This commit is contained in:
@@ -1,29 +1,52 @@
|
||||
import logging
|
||||
import os
|
||||
from functools import lru_cache
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def verify_settings():
|
||||
card_envs = [
|
||||
@lru_cache(1)
|
||||
def disable_cards_check():
|
||||
if os.environ.get("DISABLE_CARDS", "").lower() in ("1", "true"):
|
||||
return True
|
||||
|
||||
for env in (
|
||||
"MIFARE_APP_MASTER_KEY",
|
||||
"MIFARE_ACL_READ_BASE_KEY",
|
||||
"MIFARE_ACL_WRITE_BASE_KEY",
|
||||
]
|
||||
important_envs = ["SECRET_KEY"]
|
||||
other_envs = ["SQLALCHEMY_DATABASE_PATH"]
|
||||
for setting in card_envs:
|
||||
if (setting not in os.environ or setting == "") and not os.getenv(
|
||||
"DISABLE_CARDS"
|
||||
):
|
||||
raise ValueError(
|
||||
f"Missing environment variable for scanner start: {setting} \n Run with DISABLE_CARDS env var to disable cards" # noqa: E501
|
||||
):
|
||||
if not os.getenv(env):
|
||||
logger.critical(
|
||||
f"Missing environment variable for scanner start: {env} \n Card scanner and related funcionality is disabled!" # noqa: E501
|
||||
)
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
disable_cards = disable_cards_check()
|
||||
|
||||
if not disable_cards:
|
||||
mifare_app_master_key = os.getenv("MIFARE_APP_MASTER_KEY")
|
||||
mifare_acl_read_base_key = os.getenv("MIFARE_ACL_READ_BASE_KEY")
|
||||
mifare_acl_write_base_key = os.getenv("MIFARE_ACL_WRITE_BASE_KEY")
|
||||
|
||||
|
||||
def verify_settings():
|
||||
important_envs = ["SECRET_KEY"]
|
||||
other_envs = ["SQLALCHEMY_DATABASE_PATH", "LOCK_PIN", "UNLOCK_PIN", "MOCK_GPIO"]
|
||||
for setting in important_envs:
|
||||
if setting not in os.environ or setting == "":
|
||||
if not os.getenv(setting):
|
||||
raise ValueError(
|
||||
f"Missing critical environment variable {setting}. Stopping..."
|
||||
)
|
||||
for setting in other_envs:
|
||||
if setting not in os.environ:
|
||||
logger.warning(f"Env var {setting} not set. Continuing with defaults.")
|
||||
|
||||
|
||||
verify_settings()
|
||||
secret_key = os.getenv("SECRET_KEY")
|
||||
sqlalchemy_database_path = os.getenv("SQLALCHEMY_DATABASE_PATH")
|
||||
lock_pin = os.getenv("LOCK_PIN")
|
||||
unlock_pin = os.getenv("UNLOCK_PIN")
|
||||
mock_gpio = os.getenv("MOCK_GPIO")
|
||||
|
||||
@@ -5,7 +5,6 @@ from fastapi.testclient import TestClient
|
||||
from sqlalchemy.pool import StaticPool
|
||||
from sqlmodel import Session, SQLModel, create_engine
|
||||
|
||||
from app.main import app
|
||||
from app.model.models import (
|
||||
AccessAuthorizationDB,
|
||||
Card,
|
||||
@@ -25,6 +24,16 @@ engine = create_engine(
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def app():
|
||||
import os
|
||||
|
||||
os.environ["SECRET_KEY"] = "ff" * 16
|
||||
from app.main import app
|
||||
|
||||
return app
|
||||
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def db_session():
|
||||
"""Create a fresh database session for each test."""
|
||||
@@ -35,7 +44,7 @@ def db_session():
|
||||
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def client(db_session):
|
||||
def client(app, db_session):
|
||||
"""Create a test client with a database session override."""
|
||||
|
||||
def override_get_session():
|
||||
|
||||
Reference in New Issue
Block a user