From 6e0670ab8888a77db16f97feb49d199b0227dfe4 Mon Sep 17 00:00:00 2001 From: aya Date: Tue, 19 Aug 2025 00:24:24 +0300 Subject: [PATCH] Add rest APIs tests --- tests/rest_flags/admin_flags.py | 77 +++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/tests/rest_flags/admin_flags.py b/tests/rest_flags/admin_flags.py index 51f06b56..1ae64ad3 100644 --- a/tests/rest_flags/admin_flags.py +++ b/tests/rest_flags/admin_flags.py @@ -278,3 +278,80 @@ class TestAdminFlags(StepsFilter, StepsStore, StepsRelay, StepsLightPush): assert counts[lv] == 0, f"{lv} must be filtered at FATAL" assert self.node1.set_log_level("TRACE").status_code == 200 + + def test_get_connected_peers_contains_node2(self): + node1 = node2 = None + try: + name = getattr(self, "test_id", "adminflags") + node1 = WakuNode(NODE_1, f"node1_{name}") + node2 = WakuNode(NODE_2, f"node2_{name}") + + node1.start(relay="true") + node2.start(relay="true", discv5_bootstrap_node=node1.get_enr_uri()) + + def node2_connected(): + peers = node1.get_connected_peers() + logger.debug(f"/admin/v1/peers/connected -> {peers}") + if not isinstance(peers, list) or not peers: + return False + maddrs = [self._extract_multiaddr(p) for p in peers] + return node2.get_multiaddr_with_id() in maddrs + + self._wait_until(node2_connected, timeout=60, step=1.0, desc="node2 to show in connected peers") + finally: + for n in (node2, node1): + if n: + n.stop() + + def test_get_relay_peers_contains_nodes(self): + node1 = node2 = node3 = None + try: + name = getattr(self, "test_id", "adminflags") + node1 = WakuNode(NODE_1, f"node1_{name}") + node2 = WakuNode(NODE_2, f"node2_{name}") + node3 = WakuNode(NODE_2, f"node3_{name}") + + node1.start(relay="true") + node2.start(relay="true", discv5_bootstrap_node=node1.get_enr_uri()) + node3.start(relay="true", discv5_bootstrap_node=node1.get_enr_uri()) + + def peers_listed(): + peers = node1.get_relay_peers() + logger.debug(f"/admin/v1/peers/relay -> {peers}") + if not isinstance(peers, list) or not peers: + return False + maddrs = [self._extract_multiaddr(p) for p in peers] + return any(ma in maddrs for ma in (node2.get_multiaddr_with_id(), node3.get_multiaddr_with_id())) + + self._wait_until(peers_listed, timeout=60, step=1.0, desc="relay peers to be listed") + finally: + for n in (node3, node2, node1): + if n: + n.stop() + + def test_get_relay_peers_on_shard_contains_bootstrapped_node(self): + node1 = WakuNode(NODE_1, "node1_relay_shard") + node2 = WakuNode(NODE_2, "node2_relay_shard") + + node1.start(relay="true") + node2.start(relay="true", discv5_bootstrap_node=node1.get_enr_uri()) + + shard_id = 0 # default shard + deadline = time.time() + 60 + present = False + while time.time() < deadline and not present: + resp = node1.get_relay_peers_on_shard(shard_id) + peers = resp.get("peers", []) if isinstance(resp, dict) else [] + maddrs = [] + for p in peers: + m = p.get("multiaddr") or (p.get("multiaddrs")[0] if p.get("multiaddrs") else None) + if m: + maddrs.append(m) + if node2.get_multiaddr_with_id() in maddrs: + present = True + else: + time.sleep(1.0) + + assert present, f"expected node2 in /admin/v1/peers/relay/on/{shard_id}" + node2.stop() + node1.stop()