From cbad7ccf7534a59dffe614560e2fdf0a866fce18 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com> Date: Sun, 13 Jul 2025 21:38:52 -0400 Subject: [PATCH] Ensure client pool reinitializes on relay update --- src/nostr/client.py | 1 + src/tests/test_nostr_client.py | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/nostr/client.py b/src/nostr/client.py index fa24873..b2fabe1 100644 --- a/src/nostr/client.py +++ b/src/nostr/client.py @@ -282,6 +282,7 @@ class NostrClient: signer = NostrSigner.keys(self.keys) self.client = Client(signer) self._connected = False + self.initialize_client_pool() def retrieve_json_from_nostr_sync( self, retries: int | None = None, delay: float | None = None diff --git a/src/tests/test_nostr_client.py b/src/tests/test_nostr_client.py index 2b25b24..c3a6e9a 100644 --- a/src/tests/test_nostr_client.py +++ b/src/tests/test_nostr_client.py @@ -131,3 +131,23 @@ def test_ping_relay_accepts_eose(tmp_path, monkeypatch): result = asyncio.run(client._ping_relay("wss://relay", timeout=0.1)) assert result is True + + +def test_update_relays_reinitializes_pool(tmp_path, monkeypatch): + client = _setup_client(tmp_path, FakeAddRelayClient) + + monkeypatch.setattr(nostr_client, "Client", FakeAddRelaysClient) + + called = {"ran": False} + + def fake_init(self): + called["ran"] = True + + monkeypatch.setattr(NostrClient, "initialize_client_pool", fake_init) + + new_relays = ["wss://relay1"] + client.update_relays(new_relays) + + assert called["ran"] is True + assert isinstance(client.client, FakeAddRelaysClient) + assert client.relays == new_relays