@projectlibertylabs/p2p-peer-test
Version:
CLI tool to test libp2p connections and discover peer protocols
80 lines (68 loc) • 2.73 kB
JavaScript
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');
});
});