From 4e1cd733381da243ab227cd059a44573ef03d27c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 23 Feb 2026 09:53:27 +0000 Subject: [PATCH 1/2] Initial plan From 0188575c27f452d786b19df3e4283cc2c3dd474d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 23 Feb 2026 10:01:07 +0000 Subject: [PATCH 2/2] fix: isolate token_hex mock to wizard module and fix mypy annotation Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com> --- app/utils/settings_sync.py | 3 ++- app/views/wizard.py | 4 ++-- tests/test_views_wizard.py | 2 +- tests/test_wizard_db_persist.py | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/utils/settings_sync.py b/app/utils/settings_sync.py index 8ffd03d1..893e14ce 100644 --- a/app/utils/settings_sync.py +++ b/app/utils/settings_sync.py @@ -22,6 +22,7 @@ nothing has changed. import logging import time +from typing import Any import redis from celery.signals import task_prerun @@ -67,7 +68,7 @@ def register_settings_reload_signal() -> None: """ @task_prerun.connect(weak=False) - def _reload_if_stale(sender, **kwargs) -> None: # type: ignore[misc] + def _reload_if_stale(sender: Any, **kwargs: Any) -> None: """Reload settings from DB if the Redis version key has changed.""" global _last_seen_version try: diff --git a/app/views/wizard.py b/app/views/wizard.py index 7d70d463..be090d94 100644 --- a/app/views/wizard.py +++ b/app/views/wizard.py @@ -3,7 +3,7 @@ Setup wizard views for initial system configuration. """ import logging -import secrets +from secrets import token_hex from fastapi import Depends, Form, Request from fastapi.responses import RedirectResponse @@ -104,7 +104,7 @@ async def setup_wizard_save(request: Request, step: int = Form(...), db: Session if value and value.strip(): # Auto-generate session_secret if needed if key == "session_secret" and value == "auto-generate": - value = secrets.token_hex(32) + value = token_hex(32) logger.info("Auto-generated session secret") # Save to database diff --git a/tests/test_views_wizard.py b/tests/test_views_wizard.py index d5eab1ea..3e10be3d 100644 --- a/tests/test_views_wizard.py +++ b/tests/test_views_wizard.py @@ -84,7 +84,7 @@ class TestWizardViewsPost: assert mock_save.call_count == 0 @patch("app.views.wizard.save_setting_to_db") - @patch("app.views.wizard.secrets.token_hex") + @patch("app.views.wizard.token_hex") def test_setup_wizard_auto_generate_session_secret(self, mock_token, mock_save, client): """Test auto-generation of session secret.""" mock_token.return_value = "auto_generated_secret_token_12345678" diff --git a/tests/test_wizard_db_persist.py b/tests/test_wizard_db_persist.py index 2f51f09e..37197eaf 100644 --- a/tests/test_wizard_db_persist.py +++ b/tests/test_wizard_db_persist.py @@ -61,7 +61,7 @@ class TestSetupWizardDbPersist: mock_notify.assert_not_called() @patch("app.views.wizard.notify_settings_updated") - @patch("app.views.wizard.secrets.token_hex") + @patch("app.views.wizard.token_hex") @patch("app.views.wizard.save_setting_to_db") def test_auto_generate_session_secret(self, mock_save, mock_token, mock_notify, client): """Test that session_secret auto-generate path produces a real token."""