From 181f486afb7f9279985660568dc8ba1713b61b53 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com> Date: Tue, 5 Aug 2025 19:46:14 -0400 Subject: [PATCH] Add test for relay reload logging --- src/seedpass/api.py | 11 +++++++---- src/tests/test_api_reload_relays.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 src/tests/test_api_reload_relays.py diff --git a/src/seedpass/api.py b/src/seedpass/api.py index 62f9bd6..b10e2e1 100644 --- a/src/seedpass/api.py +++ b/src/seedpass/api.py @@ -11,6 +11,7 @@ from typing import Any, List, Optional from datetime import datetime, timedelta, timezone import jwt +import logging from fastapi import FastAPI, Header, HTTPException, Request, Response import asyncio @@ -36,6 +37,8 @@ _RATE_LIMIT_STR = f"{_RATE_LIMIT}/{_RATE_WINDOW} seconds" limiter = Limiter(key_func=get_remote_address, default_limits=[_RATE_LIMIT_STR]) app = FastAPI() +logger = logging.getLogger(__name__) + def _get_pm(request: Request) -> PasswordManager: pm = getattr(request.app.state, "pm", None) @@ -64,13 +67,13 @@ def _reload_relays(request: Request, relays: list[str]) -> None: pm = _get_pm(request) try: pm.nostr_client.close_client_pool() - except Exception: - pass + except (OSError, RuntimeError, ValueError) as exc: + logger.warning("Failed to close NostrClient pool: %s", exc) try: pm.nostr_client.relays = relays pm.nostr_client.initialize_client_pool() - except Exception: - pass + except (OSError, RuntimeError, ValueError) as exc: + logger.error("Failed to initialize NostrClient with relays %s: %s", relays, exc) def start_server(fingerprint: str | None = None) -> str: diff --git a/src/tests/test_api_reload_relays.py b/src/tests/test_api_reload_relays.py new file mode 100644 index 0000000..e9dc900 --- /dev/null +++ b/src/tests/test_api_reload_relays.py @@ -0,0 +1,29 @@ +import logging +from types import SimpleNamespace + +from seedpass import api + + +def test_reload_relays_logs_errors(caplog): + def close(): + raise RuntimeError("close fail") + + def init(): + raise OSError("init fail") + + pm = SimpleNamespace( + nostr_client=SimpleNamespace( + close_client_pool=close, + initialize_client_pool=init, + relays=[], + ) + ) + request = SimpleNamespace(app=SimpleNamespace(state=SimpleNamespace(pm=pm))) + + with caplog.at_level(logging.WARNING): + api._reload_relays(request, ["ws://relay"]) + + assert "Failed to close NostrClient pool" in caplog.text + assert "close fail" in caplog.text + assert "Failed to initialize NostrClient with relays" in caplog.text + assert "init fail" in caplog.text