UNPKG

@projectlibertylabs/p2p-peer-test

Version:

CLI tool to test libp2p connections and discover peer protocols

80 lines (68 loc) 2.73 kB
import { describe, it, expect } from 'vitest'; import { EXAMPLE_MULTIADDRS, testLibp2pConnection, extractExpectedPeerId } from './libp2p-connection.js'; import { validateMultiaddr } from './validation.js'; describe('EXAMPLE_MULTIADDRS', () => { it('should contain valid multiaddr examples', () => { expect(EXAMPLE_MULTIADDRS).toBeDefined(); expect(EXAMPLE_MULTIADDRS.length).toBeGreaterThan(0); for (const addr of EXAMPLE_MULTIADDRS) { const result = validateMultiaddr(addr); expect(result.isValid).toBe(true); } }); }); describe('testLibp2pConnection', () => { it('should handle connection timeout', async () => { const result = await testLibp2pConnection('/ip4/127.0.0.1/tcp/4001', 100); expect(result.success).toBe(false); expect(result.duration).toBeDefined(); expect(result.duration).toBeGreaterThan(0); expect(result.error).toBeDefined(); }); it('should return error for invalid multiaddr', async () => { const result = await testLibp2pConnection('invalid-multiaddr'); expect(result.success).toBe(false); expect(result.error).toBeDefined(); }); it('should return structured result object', async () => { const result = await testLibp2pConnection('/ip4/127.0.0.1/tcp/4001', 100); expect(result).toHaveProperty('success'); expect(result).toHaveProperty('duration'); expect(typeof result.success).toBe('boolean'); expect(typeof result.duration).toBe('number'); if (result.success) { expect(result).toHaveProperty('protocols'); expect(result).toHaveProperty('peerId'); } else { expect(result).toHaveProperty('error'); } }); }); describe('extractExpectedPeerId', () => { it('should extract peer ID from multiaddr with p2p component', () => { const multiaddr = '/ip4/127.0.0.1/tcp/4001/p2p/12D3KooWTest'; const result = extractExpectedPeerId(multiaddr); expect(result).toBe('12D3KooWTest'); }); it('should return null for multiaddr without p2p component', () => { const multiaddr = '/ip4/127.0.0.1/tcp/4001'; const result = extractExpectedPeerId(multiaddr); expect(result).toBe(null); }); it('should extract peer ID from complex multiaddr', () => { const multiaddr = '/dns4/node.example.com/tcp/30333/ws/p2p/12D3KooWLsZTXsv1eY6U9YhowipQ73R5D1zQTaWECUCkxLawWpoB'; const result = extractExpectedPeerId(multiaddr); expect(result).toBe('12D3KooWLsZTXsv1eY6U9YhowipQ73R5D1zQTaWECUCkxLawWpoB'); }); it('should handle edge cases with multiple p2p components', () => { // Test case where p2p appears multiple times (though invalid, should take first) const multiaddr = '/ip4/127.0.0.1/tcp/4001/p2p/12D3KooWFirst/p2p/12D3KooWSecond'; const result = extractExpectedPeerId(multiaddr); expect(result).toBe('12D3KooWFirst'); }); });