UNPKG

ipfs-interop

Version:

Interoperability Tests for IPFS

93 lines (89 loc) 2.95 kB
/* eslint max-nested-callbacks: ["error", 8] */ /* eslint-env mocha */ import delay from 'delay' import { isWebWorker } from 'wherearewe' import { createJs, createProc, connWithTimeout, randomWsAddr, getWsAddr, getWrtcStarAddr } from '../../utils/circuit.js' import { multiaddr } from '@multiformats/multiaddr' /** * @typedef {import('ipfsd-ctl').Controller} Controller * @typedef {import('ipfsd-ctl').Factory} Factory */ export default { 'browser-js-js': { /** * @param {Factory} factory */ create: (factory) => Promise.all([ createProc([], factory), createJs([randomWsAddr], factory), createJs([randomWsAddr], factory) ]), connect: connWithTimeout(1500) }, 'js-js-browser': { /** * @param {Factory} factory */ create: (factory) => Promise.all([ createJs([randomWsAddr], factory), createJs([randomWsAddr], factory), createProc([], factory) ]), connect: connWithTimeout(1500) }, 'js-browser-browser': { /** * @param {Factory} factory */ create: (factory) => Promise.all([ createJs([randomWsAddr], factory), createProc(['/ip4/127.0.0.1/tcp/24642/ws/p2p-webrtc-star'], factory), createProc(['/ip4/127.0.0.1/tcp/24642/ws/p2p-webrtc-star'], factory) ]), /** * @param {Controller} nodeA * @param {Controller} nodeB * @param {Controller} relay */ connect: async (nodeA, nodeB, relay) => { await relay.api.swarm.connect(await getWsAddr(nodeA.api)) await relay.api.swarm.connect(await getWrtcStarAddr(nodeB.api)) // TODO: needed until https://github.com/ipfs/interop/issues/17 is resolved await delay(3000) const nodeBCircuitAddr = multiaddr(`${await getWrtcStarAddr(relay.api)}/p2p-circuit/p2p/${(await nodeB.api.id()).id.toString()}`) await nodeA.api.swarm.connect(nodeBCircuitAddr) }, skip: () => isWebWorker // no webrtc support in webworkers }, 'browser-browser-js': { /** * @param {Factory} factory */ create: (factory) => Promise.all([ createProc(['/ip4/127.0.0.1/tcp/24642/wss/p2p-webrtc-star'], factory), createProc(['/ip4/127.0.0.1/tcp/24642/wss/p2p-webrtc-star'], factory), createJs([randomWsAddr], factory) ]), /** * @param {Controller} nodeA * @param {Controller} nodeB * @param {Controller} relay */ connect: async (nodeA, nodeB, relay) => { await relay.api.swarm.connect(await getWrtcStarAddr(nodeA.api)) await relay.api.swarm.connect(await getWsAddr(nodeB.api)) // TODO: needed until https://github.com/ipfs/interop/issues/17 is resolved await delay(3000) const nodeBCircuitAddr = multiaddr(`${await getWrtcStarAddr(relay.api)}/p2p-circuit/p2p/${(await nodeB.api.id()).id.toString()}`) await nodeA.api.swarm.connect(nodeBCircuitAddr) }, skip: () => isWebWorker // no webrtc support in webworkers } }