Separate bootstrap settings from runtime overrides with a dedicated runtime settings manager

This commit is contained in:
2026-04-10 19:31:51 +02:00
parent 9b4cd17e3b
commit 3b6e39ddad
11 changed files with 61 additions and 32 deletions

View File

@@ -288,10 +288,12 @@ async def test_startup_overrides_settings_from_persisted_setup(tmp_path: Path) -
patch("app.tasks.history_sync.register"),
):
async with _lifespan(app):
assert app.state.settings.database_path == runtime_db_path
assert app.state.settings.fail2ban_socket == "/tmp/persisted.sock"
assert app.state.settings.timezone == "Europe/Berlin"
assert app.state.settings.session_duration_minutes == 123
assert app.state.runtime_settings is not None
assert app.state.runtime_settings.database_path == runtime_db_path
assert app.state.runtime_settings.fail2ban_socket == "/tmp/persisted.sock"
assert app.state.runtime_settings.timezone == "Europe/Berlin"
assert app.state.runtime_settings.session_duration_minutes == 123
assert app.state.settings.database_path == str(tmp_path / "pointer.db")
assert Path(runtime_db_path).exists()

View File

@@ -159,10 +159,12 @@ class TestPostSetupRuntimeState:
response = await client.post("/api/setup", json=payload)
assert response.status_code == 201
assert app.state.settings.database_path == payload["database_path"]
assert app.state.settings.fail2ban_socket == payload["fail2ban_socket"]
assert app.state.settings.timezone == payload["timezone"]
assert app.state.settings.session_duration_minutes == payload["session_duration_minutes"]
assert app.state.runtime_settings is not None
assert app.state.runtime_settings.database_path == payload["database_path"]
assert app.state.runtime_settings.fail2ban_socket == payload["fail2ban_socket"]
assert app.state.runtime_settings.timezone == payload["timezone"]
assert app.state.runtime_settings.session_duration_minutes == payload["session_duration_minutes"]
assert app.state.settings.database_path != payload["database_path"]
class TestSetupRedirectMiddleware: