import { describe, it, expect } from 'vitest'; import { discoverServer, getLanIPv4, resolveAdvertiseUrl, startDiscoveryBroadcaster } from '../src/discovery.js'; describe('discovery', () => { it('returns a LAN IPv4 address', () => { const ip = getLanIPv4(); expect(ip).toBeDefined(); expect(ip).not.toBe('127.0.0.1'); }); it('resolves advertise URL for 0.0.0.0 to LAN IP', () => { const url = resolveAdvertiseUrl('0.0.0.0', 3377); expect(url).toMatch(/^http:\/\/\d+\.\d+\.\d+\.\d+:3377$/); }); it('resolves advertise URL for a specific host', () => { const url = resolveAdvertiseUrl('127.0.0.1', 3377); expect(url).toBe('http://127.0.0.1:3377'); }); it('discovers a broadcaster on localhost', async () => { const port = 53378; const url = 'http://127.0.0.1:3377'; const broadcaster = startDiscoveryBroadcaster(url, { port, intervalMs: 500 }); try { const discovered = await discoverServer(3000, port); expect(discovered).toBe(url); } finally { broadcaster.stop(); } }); });