Add test for relay reload logging

This commit is contained in:
thePR0M3TH3AN
2025-08-05 19:46:14 -04:00
parent 5e8375aad5
commit 181f486afb
2 changed files with 36 additions and 4 deletions

View File

@@ -11,6 +11,7 @@ from typing import Any, List, Optional
from datetime import datetime, timedelta, timezone from datetime import datetime, timedelta, timezone
import jwt import jwt
import logging
from fastapi import FastAPI, Header, HTTPException, Request, Response from fastapi import FastAPI, Header, HTTPException, Request, Response
import asyncio 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]) limiter = Limiter(key_func=get_remote_address, default_limits=[_RATE_LIMIT_STR])
app = FastAPI() app = FastAPI()
logger = logging.getLogger(__name__)
def _get_pm(request: Request) -> PasswordManager: def _get_pm(request: Request) -> PasswordManager:
pm = getattr(request.app.state, "pm", None) pm = getattr(request.app.state, "pm", None)
@@ -64,13 +67,13 @@ def _reload_relays(request: Request, relays: list[str]) -> None:
pm = _get_pm(request) pm = _get_pm(request)
try: try:
pm.nostr_client.close_client_pool() pm.nostr_client.close_client_pool()
except Exception: except (OSError, RuntimeError, ValueError) as exc:
pass logger.warning("Failed to close NostrClient pool: %s", exc)
try: try:
pm.nostr_client.relays = relays pm.nostr_client.relays = relays
pm.nostr_client.initialize_client_pool() pm.nostr_client.initialize_client_pool()
except Exception: except (OSError, RuntimeError, ValueError) as exc:
pass logger.error("Failed to initialize NostrClient with relays %s: %s", relays, exc)
def start_server(fingerprint: str | None = None) -> str: def start_server(fingerprint: str | None = None) -> str:

View File

@@ -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