33 lines
1.0 KiB
TypeScript
33 lines
1.0 KiB
TypeScript
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();
|
|
}
|
|
});
|
|
});
|