diff --git a/src/nostr/client.py b/src/nostr/client.py index 59da02f..7af1a0e 100644 --- a/src/nostr/client.py +++ b/src/nostr/client.py @@ -73,7 +73,11 @@ class NostrClient: def initialize_client_pool(self) -> None: """Add relays to the client and connect.""" - self.client.add_relays(self.relays) + if hasattr(self.client, "add_relays"): + self.client.add_relays(self.relays) + else: + for relay in self.relays: + self.client.add_relay(relay) self.client.connect() logger.info(f"NostrClient connected to relays: {self.relays}") diff --git a/src/tests/test_nostr_client.py b/src/tests/test_nostr_client.py index 7daac71..75a0ecc 100644 --- a/src/tests/test_nostr_client.py +++ b/src/tests/test_nostr_client.py @@ -24,3 +24,54 @@ def test_nostr_client_uses_custom_relays(): client = NostrClient(enc_mgr, "fp", relays=custom_relays) assert client.relays == custom_relays + + +class FakeAddRelaysClient: + def __init__(self, _signer): + self.added = [] + self.connected = False + + def add_relays(self, relays): + self.added.append(relays) + + def connect(self): + self.connected = True + + +class FakeAddRelayClient: + def __init__(self, _signer): + self.added = [] + self.connected = False + + def add_relay(self, relay): + self.added.append(relay) + + def connect(self): + self.connected = True + + +def _setup_client(tmpdir, fake_cls): + key = Fernet.generate_key() + enc_mgr = EncryptionManager(key, Path(tmpdir)) + + with patch("nostr.client.Client", fake_cls), patch( + "nostr.client.KeyManager" + ) as MockKM, patch.object(enc_mgr, "decrypt_parent_seed", return_value="seed"): + km_inst = MockKM.return_value + km_inst.keys.private_key_hex.return_value = "1" * 64 + client = NostrClient(enc_mgr, "fp") + return client + + +def test_initialize_client_pool_add_relays_used(tmp_path): + client = _setup_client(tmp_path, FakeAddRelaysClient) + fc = client.client + assert fc.added == [client.relays] + assert fc.connected is True + + +def test_initialize_client_pool_add_relay_fallback(tmp_path): + client = _setup_client(tmp_path, FakeAddRelayClient) + fc = client.client + assert fc.added == client.relays + assert fc.connected is True