@libp2p/interface-mocks
Version:
Mock implementations of several libp2p interfaces
51 lines • 1.7 kB
JavaScript
import { multiaddr } from '@multiformats/multiaddr';
import { abortableSource } from 'abortable-iterator';
import { duplexPair } from 'it-pair/duplex';
export function mockMultiaddrConnection(source, peerId) {
const maConn = {
async close() {
},
timeline: {
open: Date.now()
},
remoteAddr: multiaddr(`/ip4/127.0.0.1/tcp/4001/p2p/${peerId.toString()}`),
...source
};
return maConn;
}
/**
* Returns both sides of a mocked MultiaddrConnection
*/
export function mockMultiaddrConnPair(opts) {
const { addrs, remotePeer } = opts;
const controller = new AbortController();
const [localAddr, remoteAddr] = addrs;
const [inboundStream, outboundStream] = duplexPair();
const outbound = {
...outboundStream,
remoteAddr: remoteAddr.toString().includes(`/p2p/${remotePeer.toString()}`) ? remoteAddr : remoteAddr.encapsulate(`/p2p/${remotePeer.toString()}`),
timeline: {
open: Date.now()
},
close: async () => {
outbound.timeline.close = Date.now();
controller.abort();
}
};
const inbound = {
...inboundStream,
remoteAddr: localAddr,
timeline: {
open: Date.now()
},
close: async () => {
inbound.timeline.close = Date.now();
controller.abort();
}
};
// Make the sources abortable so we can close them easily
inbound.source = abortableSource(inbound.source, controller.signal);
outbound.source = abortableSource(outbound.source, controller.signal);
return { inbound, outbound };
}
//# sourceMappingURL=multiaddr-connection.js.map