Update Pubsub fixture and test
This commit is contained in:
parent
0fd400fdf8
commit
d5d6962dce
|
@ -532,7 +532,7 @@ class Pubsub:
|
||||||
|
|
||||||
# Check if signing is required and if so signature should be attached.
|
# Check if signing is required and if so signature should be attached.
|
||||||
if self.strict_signing:
|
if self.strict_signing:
|
||||||
if msg.signature == b'':
|
if msg.signature == b"":
|
||||||
logger.debug("Reject because no signature attached for msg: %s", msg)
|
logger.debug("Reject because no signature attached for msg: %s", msg)
|
||||||
return
|
return
|
||||||
# Validate the signature of the message
|
# Validate the signature of the message
|
||||||
|
|
|
@ -153,6 +153,7 @@ class PubsubFactory(factory.Factory):
|
||||||
router = None
|
router = None
|
||||||
my_id = factory.LazyAttribute(lambda obj: obj.host.get_id())
|
my_id = factory.LazyAttribute(lambda obj: obj.host.get_id())
|
||||||
cache_size = None
|
cache_size = None
|
||||||
|
strict_signing = False
|
||||||
|
|
||||||
|
|
||||||
async def swarm_pair_factory(
|
async def swarm_pair_factory(
|
||||||
|
|
|
@ -4,14 +4,24 @@ from libp2p.tools.constants import GOSSIPSUB_PARAMS
|
||||||
from libp2p.tools.factories import FloodsubFactory, GossipsubFactory, PubsubFactory
|
from libp2p.tools.factories import FloodsubFactory, GossipsubFactory, PubsubFactory
|
||||||
|
|
||||||
|
|
||||||
def _make_pubsubs(hosts, pubsub_routers, cache_size):
|
@pytest.fixture
|
||||||
|
def is_strict_signing():
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def _make_pubsubs(hosts, pubsub_routers, cache_size, is_strict_signing):
|
||||||
if len(pubsub_routers) != len(hosts):
|
if len(pubsub_routers) != len(hosts):
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
f"lenght of pubsub_routers={pubsub_routers} should be equaled to the "
|
f"lenght of pubsub_routers={pubsub_routers} should be equaled to the "
|
||||||
f"length of hosts={len(hosts)}"
|
f"length of hosts={len(hosts)}"
|
||||||
)
|
)
|
||||||
return tuple(
|
return tuple(
|
||||||
PubsubFactory(host=host, router=router, cache_size=cache_size)
|
PubsubFactory(
|
||||||
|
host=host,
|
||||||
|
router=router,
|
||||||
|
cache_size=cache_size,
|
||||||
|
strict_signing=is_strict_signing,
|
||||||
|
)
|
||||||
for host, router in zip(hosts, pubsub_routers)
|
for host, router in zip(hosts, pubsub_routers)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -27,16 +37,22 @@ def gossipsub_params():
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def pubsubs_fsub(num_hosts, hosts, pubsub_cache_size):
|
def pubsubs_fsub(num_hosts, hosts, pubsub_cache_size, is_strict_signing):
|
||||||
floodsubs = FloodsubFactory.create_batch(num_hosts)
|
floodsubs = FloodsubFactory.create_batch(num_hosts)
|
||||||
_pubsubs_fsub = _make_pubsubs(hosts, floodsubs, pubsub_cache_size)
|
_pubsubs_fsub = _make_pubsubs(
|
||||||
|
hosts, floodsubs, pubsub_cache_size, is_strict_signing
|
||||||
|
)
|
||||||
yield _pubsubs_fsub
|
yield _pubsubs_fsub
|
||||||
# TODO: Clean up
|
# TODO: Clean up
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def pubsubs_gsub(num_hosts, hosts, pubsub_cache_size, gossipsub_params):
|
def pubsubs_gsub(
|
||||||
|
num_hosts, hosts, pubsub_cache_size, gossipsub_params, is_strict_signing
|
||||||
|
):
|
||||||
gossipsubs = GossipsubFactory.create_batch(num_hosts, **gossipsub_params._asdict())
|
gossipsubs = GossipsubFactory.create_batch(num_hosts, **gossipsub_params._asdict())
|
||||||
_pubsubs_gsub = _make_pubsubs(hosts, gossipsubs, pubsub_cache_size)
|
_pubsubs_gsub = _make_pubsubs(
|
||||||
|
hosts, gossipsubs, pubsub_cache_size, is_strict_signing
|
||||||
|
)
|
||||||
yield _pubsubs_gsub
|
yield _pubsubs_gsub
|
||||||
# TODO: Clean up
|
# TODO: Clean up
|
||||||
|
|
|
@ -510,3 +510,18 @@ async def test_push_msg(pubsubs_fsub, monkeypatch):
|
||||||
await pubsubs_fsub[0].push_msg(pubsubs_fsub[0].my_id, msg_2)
|
await pubsubs_fsub[0].push_msg(pubsubs_fsub[0].my_id, msg_2)
|
||||||
await asyncio.sleep(0.01)
|
await asyncio.sleep(0.01)
|
||||||
assert not event.is_set()
|
assert not event.is_set()
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("num_hosts, is_strict_signing", ((2, True),))
|
||||||
|
@pytest.mark.asyncio
|
||||||
|
async def test_strict_signing(pubsubs_fsub, hosts, monkeypatch):
|
||||||
|
await connect(hosts[0], hosts[1])
|
||||||
|
await pubsubs_fsub[0].subscribe(TESTING_TOPIC)
|
||||||
|
await pubsubs_fsub[1].subscribe(TESTING_TOPIC)
|
||||||
|
await asyncio.sleep(1)
|
||||||
|
|
||||||
|
await pubsubs_fsub[0].publish(TESTING_TOPIC, TESTING_DATA)
|
||||||
|
await asyncio.sleep(1)
|
||||||
|
|
||||||
|
assert len(pubsubs_fsub[0].seen_messages) == 1
|
||||||
|
assert len(pubsubs_fsub[1].seen_messages) == 1
|
||||||
|
|
Loading…
Reference in New Issue
Block a user