2024-05-21 21:32:48 +03:00

65 lines
3.3 KiB
Python

import pytest
from src.env_vars import NODE_1
from src.libs.common import to_base64
from src.libs.custom_logger import get_custom_logger
from src.node.waku_message import WakuMessage
from src.steps.store import StepsStore
from src.test_data import SAMPLE_INPUTS
logger = get_custom_logger(__name__)
# TO DO test without pubsubtopic freezes
@pytest.mark.usefixtures("node_setup")
class TestApiFlags(StepsStore):
def test_store_with_peerAddr(self):
self.publish_message()
self.check_published_message_is_stored(store_node=self.store_node1, peer_addr=self.multiaddr_list[0])
@pytest.mark.xfail("nwaku" in NODE_1, reason="Bug reported: https://github.com/waku-org/nwaku/issues/2715")
def test_store_with_hashes(self):
message_hash_list = []
for payload in SAMPLE_INPUTS:
message = self.create_message(payload=to_base64(payload["value"]))
self.publish_message(message=message)
message_hash_list.append(self.compute_message_hash(self.test_pubsub_topic, message))
for node in self.store_nodes:
for message_hash in message_hash_list:
store_response = node.get_store_messages(pubsub_topic=self.test_pubsub_topic, hashes=message_hash, page_size=50, ascending="true")
assert len(store_response["messages"]) == 1
assert store_response["messages"][0]["messageHash"]["data"] == message_hash
@pytest.mark.xfail("nwaku" in NODE_1, reason="Bug reported: https://github.com/waku-org/nwaku/issues/2715")
def test_store_with_mulitple_hashes(self):
message_hash_list = []
for payload in SAMPLE_INPUTS:
message = self.create_message(payload=to_base64(payload["value"]))
self.publish_message(message=message)
message_hash_list.append(self.compute_message_hash(self.test_pubsub_topic, message))
for node in self.store_nodes:
store_response = node.get_store_messages(
pubsub_topic=self.test_pubsub_topic, hashes=f"{message_hash_list[0]},{message_hash_list[4]}", page_size=50, ascending="true"
)
assert len(store_response["messages"]) == 2
assert (
store_response["messages"][0]["messageHash"]["data"] == message_hash_list[0]
), "Incorrect messaged filtered based on multiple hashes"
assert (
store_response["messages"][1]["messageHash"]["data"] == message_hash_list[4]
), "Incorrect messaged filtered based on multiple hashes"
def test_store_include_data(self):
message_list = []
for payload in SAMPLE_INPUTS:
message = self.create_message(payload=to_base64(payload["value"]))
self.publish_message(message=message)
message_list.append(message)
for node in self.store_nodes:
store_response = node.get_store_messages(pubsub_topic=self.test_pubsub_topic, include_data="true", page_size=50, ascending="true")
assert len(store_response["messages"]) == len(SAMPLE_INPUTS)
for index, message in enumerate(store_response["messages"]):
assert message["message"]["payload"] == message_list[index]["payload"]
waku_message = WakuMessage([message["message"]])
waku_message.assert_received_message(message_list[index])