Integrate Event and RelayManager w/validity checking (#30)

This commit is contained in:
kdmukai
2023-01-19 17:28:57 -06:00
committed by GitHub
parent 3881bce9ec
commit d9fb70e8ed
4 changed files with 69 additions and 13 deletions

View File

@@ -0,0 +1,30 @@
import pytest
from nostr.event import Event
from nostr.key import PrivateKey
from nostr.relay_manager import RelayManager, RelayException
def test_only_relay_valid_events():
""" publish_event raise a RelayException if an Event fails verification """
pk = PrivateKey()
event = Event(
public_key=pk.public_key.hex(),
content="Hello, world!",
)
relay_manager = RelayManager()
# Deliberately forget to sign the Event
with pytest.raises(RelayException) as e:
relay_manager.publish_event(event)
assert "must be signed" in str(e)
# Attempt to relay with a nonsense signature
event.signature = '0' * 32
with pytest.raises(RelayException) as e:
relay_manager.publish_event(event)
assert "failed to verify" in str(e)
# Properly signed Event can be relayed
event.sign(pk.hex())
relay_manager.publish_event(event)