logos-storage-nim/tests/storage/testdiscovery.nim
2026-06-17 22:35:18 +04:00

42 lines
1.2 KiB
Nim

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