From 84761db205d1e534f3e6b57c4b71fa3187304d56 Mon Sep 17 00:00:00 2001 From: Arnaud Date: Mon, 25 May 2026 10:38:48 +0400 Subject: [PATCH] Add discovery tests --- tests/storage/testdiscovery.nim | 50 +++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 tests/storage/testdiscovery.nim diff --git a/tests/storage/testdiscovery.nim b/tests/storage/testdiscovery.nim new file mode 100644 index 00000000..965959d4 --- /dev/null +++ b/tests/storage/testdiscovery.nim @@ -0,0 +1,50 @@ +import std/[net, options, sequtils] +import pkg/libp2p/[multiaddress, routing_record] + +import ../asynctest +import ./helpers +import ../../storage/discovery +import ../../storage/rng + +suite "Discovery - SPR record logic": + var key: PrivateKey + var disc: Discovery + + let + directAddr = MultiAddress.init("/ip4/1.2.3.4/tcp/4001").expect("valid") + relayAddr = MultiAddress + .init( + "/ip4/5.6.7.8/tcp/4002/p2p/16Uiu2HAmQu456Ae52JqPuqog6wCex47LLvNY8oHMBC4GRRtaStHs/p2p-circuit" + ) + .expect("valid") + udpPort = Port(8090) + + setup: + key = PrivateKey.random(Rng.instance[]).get() + disc = Discovery.new(key, announceAddrs = @[]) + + test "updateRecordsAndSpr sets the SPR with both TCP and UDP addresses": + disc.updateRecordsAndSpr(@[directAddr], udpPort) + + let spr = disc.getSpr() + check spr.isSome + let addrs = spr.get.data.addresses.mapIt($it.address) + check addrs.anyIt(it.contains("/tcp/")) + check addrs.anyIt(it.contains("/udp/")) + + test "updateAnnounceRecord does not update the SPR": + disc.updateRecordsAndSpr(@[directAddr], udpPort) + let sprBefore = disc.getSpr() + + disc.updateAnnounceRecord(@[relayAddr]) + + check disc.getSpr() == sprBefore + + test "updateDhtRecord deprecated does not update the SPR": + disc.updateRecordsAndSpr(@[directAddr], udpPort) + let sprBefore = disc.getSpr() + + let otherUdpAddr = MultiAddress.init("/ip4/9.9.9.9/udp/9999").expect("valid") + disc.updateDhtRecord(@[otherUdpAddr]) + + check disc.getSpr() == sprBefore