logos-messaging-js/packages/tests/tests/dns-discovery/dns_discovery.optional.spec.ts
Sasha 95da57a870
feat: peer exchange discovery improvements (#2537)
* rename, mark stuff to remove

* rename type

* update exports from discovery package, improve PX implementation

* re-structure px discovery, comment tests

* implement UT, E2E Tests, clean code a bit, implement recurring PX discovery, move DNS E2E Tests to separate folder, remove not needed E2E tests

* fix discovery dialer e2e test

* mark as started

* fix dns tests

* attempt to fix e2e

* skip test

* update tests

* fix typo

* add catch all in stream manager, update tests

* update mock

* update test
2025-08-14 09:47:55 +02:00

59 lines
1.6 KiB
TypeScript

import { bootstrap } from "@libp2p/bootstrap";
import {
DnsNodeDiscovery,
enrTree,
wakuPeerExchangeDiscovery
} from "@waku/discovery";
import type { LightNode } from "@waku/interfaces";
import { createLightNode } from "@waku/sdk";
import { expect } from "chai";
import { afterEachCustom, tearDownNodes } from "../../src/index.js";
describe("DNS Discovery", function () {
let waku: LightNode;
const predefinedNodes: string[] = [];
afterEachCustom(this, async () => {
await tearDownNodes([], waku);
});
it(`should discover peers other than used for bootstrapping`, async function () {
this.timeout(50_000);
const dns = await DnsNodeDiscovery.dnsOverHttp();
const dnsEnrs = [];
for await (const node of dns.getNextPeer([enrTree["SANDBOX"]])) {
dnsEnrs.push(node);
}
const dnsPeerMultiaddrs = dnsEnrs
.flatMap(
(enr) => enr.peerInfo?.multiaddrs.map((ma) => ma.toString()) ?? []
)
.filter((ma) => ma.includes("wss"));
const networkConfig = { clusterId: 2, numShardsInCluster: 0 };
waku = await createLightNode({
libp2p: {
peerDiscovery: [
bootstrap({ list: dnsPeerMultiaddrs }),
wakuPeerExchangeDiscovery()
]
},
networkConfig
});
const foundPxPeer = await new Promise<boolean>((resolve) => {
waku.libp2p.addEventListener("peer:discovery", (evt) => {
const peerId = evt.detail.id.toString();
const isBootstrapNode = predefinedNodes.find((n) => n.includes(peerId));
if (!isBootstrapNode) {
resolve(true);
}
});
});
expect(foundPxPeer).to.be.true;
});
});